★基本制御文(反復構造:ネスト3)★
前回のプログラム<sample program 052-03>で、次のような結果を表示させました。
<実行結果 VC++ Express Edition>
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
続行するには何かキーを押してください・・・
では、このプログラムに手を加えて、以下のような結果を表示させてみてください。
<実行結果 VC++ Express Edition>
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
続行するには何かキーを押してください・・・
解答例です。
<sample program 053-01>
#include <stdio.h>
int main( void )
{
int i;
int j;
i = 0;
while( i < 10 ) {
j = 0;
while( j < 10 ) {
printf( "%2d", i );
j++;
}
printf( "\n" );
i++;
}
return 0;
}
|
<実行結果 VC++ Express Edition>
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
続行するには何かキーを押してください・・・
前のプログラムでは「j」を表示していましたが、「i」を表示すれば出来ます。
では、次はどうでしょう。
<実行結果 VC++ Express Edition>
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 11 12
4 5 6 7 8 9 10 11 12 13
5 6 7 8 9 10 11 12 13 14
6 7 8 9 10 11 12 13 14 15
7 8 9 10 11 12 13 14 15 16
8 9 10 11 12 13 14 15 16 17
9 10 11 12 13 14 15 16 17 18
続行するには何かキーを押してください・・・
前回の最後に掲載したiとjの関係の表をよく見て作ってみてください。
解答例です。
<sample program 053-02>
#include <stdio.h>
int main( void )
{
int i;
int j;
i = 0;
while( i < 10 ) {
j = 0;
while( j < 10 ) {
printf( "%3d", i + j );
j++;
}
printf( "\n" );
i++;
}
return 0;
} |
<実行結果 VC++ Express Edition>
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 11 12
4 5 6 7 8 9 10 11 12 13
5 6 7 8 9 10 11 12 13 14
6 7 8 9 10 11 12 13 14 15
7 8 9 10 11 12 13 14 15 16
8 9 10 11 12 13 14 15 16 17
9 10 11 12 13 14 15 16 17 18
続行するには何かキーを押してください・・・
iとjを加算することで完成できます。
では次です。
<実行結果 VC++ Express Edition>
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81
続行するには何かキーを押してください・・・
これは簡単に出来そうですね。
解答例です。
<sample program 053-03>
#include <stdio.h>
int main( void )
{
int i;
int j;
i = 0;
while( i < 10 ) {
j = 0;
while( j < 10 ) {
printf( "%3d", i * j );
j++;
}
printf( "\n" );
i++;
}
return 0;
} |
<実行結果 VC++ Express Edition>
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81
続行するには何かキーを押してください・・・以前、九九の表の指定した段を表示するプログラムを作りました。
これを使えば、2の段から9の段までの一覧表が作れそうですね。
やってみましょう。
<実行結果 VC++ Express Edition>
4 6 8 10 12 14 16 18
6 9 12 15 18 21 24 27
8 12 16 20 24 28 32 36
10 15 20 25 30 35 40 45
12 18 24 30 36 42 48 54
14 21 28 35 42 49 56 63
16 24 32 40 48 56 64 72
18 27 36 45 54 63 72 81
続行するには何かキーを押してください・・・
解答例です。
#include <stdio.h>
int main( void )
{
int i;
int j;
i = 2;
while( i < 10 ) {
j = 2;
while( j < 10 ) {
printf( "%3d", i * j );
j++;
}
printf( "\n" );
i++;
}
return 0;
} |
<実行結果 VC++ Express Edition>
4 6 8 10 12 14 16 18
6 9 12 15 18 21 24 27
8 12 16 20 24 28 32 36
10 15 20 25 30 35 40 45
12 18 24 30 36 42 48 54
14 21 28 35 42 49 56 63
16 24 32 40 48 56 64 72
18 27 36 45 54 63 72 81
続行するには何かキーを押してください・・・
0の段と1の段が不要なので、2から始めれば良いだけです。
では、次はちょっと考えてみてください。
<実行結果 VC++ Express Edition>
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
続行するには何かキーを押してください・・・
簡単そうですが、工夫が必要です。
解答例です。
<sample program 053-05>
#include <stdio.h>
int main( void )
{
int i;
int j;
i = 0;
while( i < 10 ) {
j = 0;
while( j < 10 ) {
printf( "%3d", i * 10 + j );
j++;
}
printf( "\n" );
i++;
}
return 0;
}
|
<実行結果 VC++ Express Edition>
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
続行するには何かキーを押してください・・・
二重ループの使い道は後々広がってきますが、今回はiとjの関係をしっかりとつかんでもらうための演習でした。
次に続きます。