この記事では、C言語のプログラミングにおいて、for文
を使った二重ループの基本構文や具体的な例、注意点について解説します。
二重ループを使うことで、九九の表を表示したり、二次元配列の要素を全て表示したりすることができます。
また、ループ変数のスコープやネストの深さにも注意が必要です。
初心者の方にもわかりやすく解説していきますので、ぜひ参考にしてください。
for文を使った二重ループの基本構文
C言語では、for文
を使って二重ループを作ることができます。
二重ループとは、内側のループと外側のループを組み合わせて使用することで、複数の処理を繰り返し実行することができるプログラムの構造です。
内側のループと外側のループ
二重ループでは、内側のループと外側のループの2つのループがあります。
内側のループは、外側のループの1回の実行ごとに複数回繰り返されます。
これにより、内側のループの処理が外側のループの回数分だけ実行されることになります。
ループ変数の初期化と条件式
二重ループでは、内側のループと外側のループそれぞれにループ変数を使用します。
ループ変数は、ループの制御に使用される変数であり、ループの開始時に初期化されます。
内側のループの初期化と条件式は、外側のループの実行ごとに評価されます。
内側のループの初期化は、外側のループの開始時に行われ、内側のループの条件式は、外側のループの実行ごとに評価されます。
ループ変数の更新
二重ループでは、内側のループの処理が終了すると、内側のループのループ変数を更新する必要があります。
これにより、内側のループが次のループの開始時に正しい値で初期化されます。
ループ変数の更新は、内側のループの処理の最後に行われます。
内側のループのループ変数を更新することで、次のループの開始時に正しい値で初期化され、繰り返し処理が正しく行われます。
二重ループの具体例
九九の表を表示するプログラム
九九の表は、1から9までの数字を掛け合わせた結果を表にしたものです。
これをC言語の二重ループを使って表示するプログラムを作成してみましょう。
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf("%2d ", i * j);
}
printf("\n");
}
return 0;
}
このプログラムでは、外側のループで1から9までの数字を順番に取り出し、内側のループで1から9までの数字と掛け合わせた結果を表示しています。
内側のループが1周するごとに改行を行っているため、九九の表が見やすくなっています。
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
二次元配列の要素を全て表示するプログラム
二次元配列は、行と列の2次元のデータ構造です。
C言語の二重ループを使って、二次元配列の要素を全て表示するプログラムを作成してみましょう。
#include <stdio.h>
int main() {
int array[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d\t", array[i][j]);
}
printf("\n");
}
return 0;
}
このプログラムでは、3行3列の二次元配列を宣言し、その要素を順番に表示しています。
外側のループで行を、内側のループで列を指定して、要素を表示しています。
実行結果は以下のようになります。
1 2 3
4 5 6
7 8 9
二次元配列の要素を全て表示する場合、外側のループで行を指定し、内側のループで列を指定することで、全ての要素を順番に表示することができます。
※ 九九の表を表示するプログラムでは、printf関数
の\t
を使ってタブ文字を表示しています。
これにより、九九の表が見やすくなります。
また、二次元配列の要素を表示するプログラムでは、二次元配列の初期化方法を示していますが、実際のプログラムでは他の方法で二次元配列を初期化することもできます。