【C言語】2で割り続けて割った回数を求める方法を解説

この記事では、「c言語 2で割り続けて割った回数を求めるプログラムの書き方」について詳しく解説していきます。

目次

今回作成するプログラムの概要

プログラムの概要として、「c言語 2で割り続けて割った回数を求めるプログラム」とは、与えられた整数を2で割り続け、最終的に1になった時に「何回割ったか?」を出力するプログラムです。

例えば、入力された数が10だった場合、10→5→2→1というように3回割って1に到達します。その際、「3回」を出力することがこのプログラムの目的です。

実際にプログラムを作成してみよう!

それでは、「c言語 2で割り続けて割った回数を求めるプログラム」を作成していきましょう。

まずは、プログラムの概要を確認します。このプログラムは、ユーザーが入力した数値を2で割り続けた結果に応じて、特定のメッセージを表示するものです。

具体的には、以下のような流れで動作します。

  1. ユーザーから数値を入力する。
  2. 入力された値を2で割り続けて、割った回数をカウントする
  3. 割った値が1になったら、「1になるまでn回割りました!」というメッセージを表示する。

それでは実際にコードを書いてみます。以下が完成したコードです。

#include <stdio.h>

int main() {
    int num, count = 0;
    
    printf("整数値を入力してください:");
    scanf("%d", &num);
    
    while (num > 0) {
        num /= 2;
        count++;
        
        if (num == 1) {
            printf("1になるまで%d回2で割りました!\n", count);
            break;
        }
    }
    
    return 0;
}

上記のコードでは、scanf()関数でユーザーから整数値を受け取っています。

そしてwhileループ内部では入力された値を2で割りながら、割った回数countを1加算しています。

最後に「何回割ったか」をprintf関数で表示しています。

プログラム実行結果と考察

プログラムを実行すると、最初に整数値を入力してください:というメッセージが表示されます。ここで任意の整数値を入力し、Enterキーを押すと、プログラムが実行されます。

例えば、10を入力した場合は以下のような結果が得られます。

整数値を入力してください:10
1になるまで3回2で割りました!

今回のプログラムではwhile文を使ってループ処理を行っています。

その際に条件式num == 1がfalse(偽)の間はループ処理が継続し、num == 1がtrue(真)になった時点でループ処理から抜け出して、結果を出力してループを抜けています。

以上が、2で割り続けて割った回数を求めるプログラムのサンプルコードです。

目次