この記事では、「c言語 2で割り続けて割った回数を求めるプログラムの書き方」について詳しく解説していきます。
今回作成するプログラムの概要
プログラムの概要として、「c言語 2で割り続けて割った回数を求めるプログラム」とは、与えられた整数を2で割り続け、最終的に1になった時に「何回割ったか?」を出力するプログラムです。
例えば、入力された数が10だった場合、10→5→2→1というように3回割って1に到達します。その際、「3回」を出力することがこのプログラムの目的です。
実際にプログラムを作成してみよう!
それでは、「c言語 2で割り続けて割った回数を求めるプログラム」を作成していきましょう。
まずは、プログラムの概要を確認します。このプログラムは、ユーザーが入力した数値を2で割り続けた結果に応じて、特定のメッセージを表示するものです。
具体的には、以下のような流れで動作します。
- ユーザーから数値を入力する。
- 入力された値を2で割り続けて、割った回数をカウントする
- 割った値が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で割り続けて割った回数を求めるプログラムのサンプルコードです。