★基本制御文(反復構造:ネスト3)★


前回のプログラム<sample program 052-03>で、次のような結果を表示させました。

<実行結果>

 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
続行するには何かキーを押してください・・・

では、このプログラムに手を加えて、以下のような結果を表示させてみてください。

<実行結果>

 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;
}

<実行結果>

 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」を表示すれば出来ます。

では、次はどうでしょう。

<実行結果>

  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;
}

<実行結果>

  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を加算することで完成できます。

では次です。

<実行結果>

  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;
}

<実行結果>

  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の段までの一覧表が作れそうですね。

やってみましょう。

<実行結果>

  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;
}

<実行結果>

  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から始めれば良いだけです。

では、次はちょっと考えてみてください。

<実行結果>

  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;
}

<実行結果>

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

次に続きます。


次へ

戻る

目次へ