
【6日でできるC言語入門】forの2重ループ
C言語における「forの2重ループ(for文のネスト)」は、繰り返し処理の中でさらに別の繰り返し処理を行う方法です。主に多次元配列の処理や表の表示、図形描画などで頻繁に用いられます。
ここでは、forの2重ループの基本構造から、実践的なプログラム例、注意点まで詳しく解説します。

1.forの2重ループの基本
1.1. 構造と書き方
forの2重ループは、外側のfor文(行)と内側のfor文(列)で構成されます。
for (外側の初期化; 外側の条件; 外側の増分) {
for (内側の初期化; 内側の条件; 内側の増分) {
// 実行したい処理
}
}| ループ名 | 役割 | 例 |
|---|---|---|
| 外側for | 行や回数のカウンタ | for(i = 1; i <= 2; i++) |
| 内側for | 列や中身のカウンタ | for(j = 1; j <= 3; j++) |
1.2. サンプルプログラム:九九の一部を表示
プロジェクト/ファイル名: Lesson27_1/main.c
#include <stdio.h>
int main(void) {
int x, y;
for (x = 2; x <= 3; x++) {
for (y = 1; y <= 3; y++) {
printf("%d×%d=%d ", x, y, x * y);
}
printf("\n");
}
return 0;
}実行結果
2×1=2 2×2=4 2×3=6
3×1=3 3×2=6 3×3=92.forの2重ループの活用例
2.1. 行列状の表示
サンプルプログラム:4行5列の番号表示
プロジェクト/ファイル名: Lesson27_2/main.c
#include <stdio.h>
int main(void) {
int i, j;
for (i = 1; i <= 4; i++) {
for (j = 1; j <= 5; j++) {
printf("[%d,%d] ", i, j);
}
printf("\n");
}
return 0;
}実行結果
[1,1] [1,2] [1,3] [1,4] [1,5]
[2,1] [2,2] [2,3] [2,4] [2,5]
[3,1] [3,2] [3,3] [3,4] [3,5]
[4,1] [4,2] [4,3] [4,4] [4,5]2.2. 図形の描画
サンプルプログラム:右下がりの三角形を表示
プロジェクト/ファイル名: Lesson27_3/main.c
#include <stdio.h>
int main(void) {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5; j++) {
if (j <= i) {
printf("★");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}実行結果
★
★★
★★★
★★★★
★★★★★3.forの2重ループを使った応用例
3.1. 入力された値まで表示
プロジェクト/ファイル名: Lesson27_4/main.c
#include <stdio.h>
int main(void) {
int n, i, j;
printf("表示する行数を入力してください:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
表示する行数を入力してください:4
1
1 2
1 2 3
1 2 3 4まとめ
forの2重ループは、配列や表、図形などの多次元的な繰り返し処理をシンプルに記述できる強力な手法です。
- 外側forと内側forの関係性をしっかり理解しましょう。
- 多重ループは回数が増えるため、無駄な処理が増えすぎないよう注意も必要です。
- 基本を理解した上で、さまざまな応用プログラムに挑戦しましょう。
