Menu
CoddyTech

ネストしたループ

CoddyのCジャーニー「基礎」セクションの一部。レッスン 43/63。

入れ子のループとは、別のループの中に配置されたループのことです。外側のループが1回繰り返されるたびに、内側のループは最後まで実行されます。

2回実行される外側のループを作成しましょう。

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 は同じ値のままで、ループをいつ終了するかだけを示します。

challenge icon

チャレンジ

簡単

ユーザーが指定した行数と列数に基づいて、アスタリスク(*)の長方形パターンを出力するプログラムを作成しましょう。

プログラムでは、次の処理を行います。

  1. ユーザーから2つの整数、rows と columns を読み取ります。
  2. 入れ子になったループを使って、アスタリスクの長方形パターンを出力します。外側のループで行を、内側のループで列を処理します。
  3. 各行の後に改行を出力します。

たとえば、入力が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;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Cオンラインコンパイラ