ネストしたループ
CoddyのCジャーニー「基礎」セクションの一部。レッスン 43/63。
ネストされたループとは、別のループの内側に配置されたループです。外側のループが1回反復するたびに、内側のループが最後まで実行されます。
3回実行される外側のループを作成します。
for (int i = 0; i < 2; i++) {
// ここに外側のループのコードを記述
}外側のループの各反復で3回実行される内側のループを追加します。
int rows = 2;
int cols = 3;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d,%d ", i, j);
}
printf("\n");
}出力は次のようになります:
0,0 0,1 0,2
1,0 1,1 1,2 内側のループがすべての反復を終えてから、外側のループが次の反復に進むことに注目してください。各ループには独自のカウンターがあります。外側のループが実行されるたびに、j は 0 から再び始まります。一方、rows と cols はそのままで、ループをいつ終了するかを示すだけです。
チャレンジ
簡単ユーザーが指定した行数と列数に基づいて、アスタリスク(*)の長方形のパターンを出力するプログラムを作成してください。
プログラムの要件:
- ユーザーから2つの整数、行数と列数を読み取ります。
- 入れ子になったループを使い、外側のループで行を、内側のループで列を処理して、アスタリスクの長方形のパターンを出力します。
- 各行の後に改行を出力します。
たとえば、入力が3行4列の場合、出力は次のようになります:
****
****
****各ループには新しいカウンターを使用し(たとえば、行にはi、1行内のアスタリスクにはj)、それをrowsまたはcolumnsと比較してください。rowsとcolumns自体は変更しないでください。各行でcolumnsの値が再び必要になります。
自分で試してみよう
#include <stdio.h>
int main() {
int rows, columns;
scanf("%d", &rows);
scanf("%d", &columns);
// パターンを出力するコードをここに書いてください
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ