基本制御文(反復構造:ネスト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
続行するには何かキーを押してください・・・









































解答例です。


<sample program 053-04>

#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の関係をしっかりとつかんでもらうための演習でした。

次に続きます。


次へ

戻る

目次へ