繰り返し

条件が成立する間、あるブロック内を繰り返し実行するのが繰り返しです。
繰り返しには、for文while文do-while文があります。

for文

まずはfor文から学んでいきましょう。

for文は、回数をカウントしながら、繰り返して同じことをするための文です。通常、繰り返した回数を数えるための変数(カウンタ変数)を用意して処理を行います。

for (カウンタに初期値を代入; 繰り返すための条件; 回数のカウント) {
    文1;
    文2;
}

for文の流れは、実際にC言語のソースコードを見た後のほうがわかりやすいと思いますので、先にコードを見ていきましょう。ファイル名は、for.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main(void)
{
int i;

for (i = 1; i <= 3; i++) {
printf("%d\n", i);
}

return 0;
}

この時の処理の流れを表にすると、このようになります。

変数iの値 条件 i <= 3 i++ 内容
1 成立する i = 2 繰り返す→1回目繰り返す
2 成立する i = 3 繰り返す → 2回目繰り返す
3 成立する i = 4 繰り返す → 3回目繰り返す
4 成立しない i = 4 終わる

for文の流れを図に表すと、このようになります。 for文図解

2重for文

繰り返しの中では、さらに繰り返しをすることができます。これを使うと、簡単にかけ算九九を計算することが出来ます。実際にやってみましょう。ファイル名は、kuku.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main(void)
{
int i;
int j;

for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf("%d * %d = %02d\n", i, j, i * j);
}
}
return 0;
}

for文の中のif文

また、for文の中にif文を組み込むこともできます。

以下のコードを見てみましょう。1から20までの数字を出力し、奇数であれば(奇数)と表示し、そうでなければただ改行するプログラムです。ファイル名は、odd.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
int i;

for (i = 1; i <= 20; i++) {
printf("%d", i);

if (i % 2 == 0) {
printf("\n");
} else {
printf("(奇数)\n");
}
}
return 0;
}

continue文

continue文は、繰り返しの処理を飛ばし、ブロックの先頭位置に戻って処理を続ける処理を行います。

では、実際にcontinue文を使ったプログラムを書いてみましょう。これは、continue文を利用して1から100までの奇数の総和を求めるプログラムです。ファイル名はcontinue.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(void)
{
int i;
int odd_sum = 0;

for(i = 1;i <= 100; i++){
if(i % 2 == 0)//iが奇数か偶数かを判断する
continue;
odd_sum += i;//odd_sum = odd_sum + i;

}
printf("1から100までの奇数の和は%dです\n",odd_sum);
return 0;
}

練習問題

1. かけ算九九の改良

かけ算九九のプログラムを改良し、各段の最初に「1の段」などと表示するようにしましょう。ファイル名は、kuku2.cとします。

2. 世界のナベアツ

1から100までの整数をカウントし、3の倍数であればアホになるプログラムを作成しなさい。ファイル名は、aho.cとします。(3のつく整数の時の対応はしなくて良い)