C言語超入門④ while文とfor文で繰り返そう
while、for、do-while、break、continueを使い、同じ処理を安全に繰り返す方法を学びます。
第4回では、同じ処理を何度も実行する繰り返しを学びます。
この回でできるようになること
- while文で条件が正しい間だけ繰り返す
- for文で回数を決めて繰り返す
- do-while文を使う
- breakとcontinueで流れを変える
while文
int number = 1;
while (number <= 5) {
printf("%d\n", number);
number++;
}
number++は、numberを1増やす書き方です。これを忘れると条件がずっと正しいままになり、処理が終わらない無限ループになります。
for文
回数が決まっている繰り返しには、for文が便利です。
for (int i = 1; i <= 5; i++) {
printf("%d\n", i);
}
for文のかっこには、次の3つをセミコロンで区切って書きます。
最初の値; 続ける条件; 1回ごとの更新
合計を求める
int total = 0;
for (int i = 1; i <= 10; i++) {
total = total + i;
}
printf("合計は%dです\n", total);
繰り返す前にtotalを0で初期化しておくことが大切です。
do-while文
条件にかかわらず、最初の1回は必ず実行したい場合に使います。
int number;
do {
printf("1から10の数字を入力: ");
scanf("%d", &number);
} while (number < 1 || number > 10);
最後のセミコロンを忘れないようにしましょう。
breakとcontinue
breakは繰り返しを途中で終了し、continueはその回の残りを飛ばして次へ進みます。
for (int i = 1; i <= 10; i++) {
if (i == 8) {
break;
}
if (i % 2 == 0) {
continue;
}
printf("%d\n", i);
}
この例では、8になる前までの奇数だけが表示されます。
練習してみよう
1から100までのうち、3の倍数だけを表示してみましょう。
模範解答
#include <stdio.h>
int main(void) {
for (int number = 1; number <= 100; number++) {
if (number % 3 == 0) {
printf("%d\n", number);
}
}
return 0;
}
解説
number % 3はnumberを3で割った余りです。余りが0なら3で割り切れるため、その値だけを表示します。for文が1から100までのすべての整数を順番に調べます。
この回のまとめ
- 条件をもとに繰り返すならwhile文
- 回数が決まっているならfor文
- 最初の1回を必ず実行するならdo-while文
- 無限ループを防ぐため、条件が変化する処理を確認する