Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で1×1〜12×10の掛け算九九表を表示するプログラム


問題

以下のような形式で、1×1から12×10までの掛け算九九表を表示するC言語プログラムを作成してください。

1 2 3 4 5 6 7 8 9 10
2 4 6 8 ……………….20
3 6 9……………………….30
4 8 12 16………………..40
-
-
-
12 24……………………..120

解決方法

九九表を表示するには、do while文を二重(ネスト)構造にして使用します。

このプログラムで使われるロジックは次のとおりです。

  • 内側のループ: 変数 column によって制御され、外側のループが1回実行されるたびに10回繰り返されます。各行(横一列分)の出力を担当します。
  • 外側のループ: 変数 row によって制御され、合計12回実行されます。行全体(1段目から12段目まで)の切り替えを担当します。

do while文は条件判定をループ処理の後に行うため、必ず最低1回は本体が実行されるという特徴があります。今回のように「少なくとも1回は処理を実行したい」ケースに適しています。

do /*...... 外側のループ開始 ........*/{
    column = 1;
    do /*....... 内側のループ開始 .......*/{
        y = row * column;
        printf("%4d", y);
        column = column + 1;
    }
    while (column <= COLMAX); /*... 内側のループ終了 ...*/
    printf("\n");
    row = row + 1;
}
while (row <= ROWMAX);/*..... 外側のループ終了 .....*/

ポイント解説

  • %4d は「4桁分の幅」で整数を右寄せして表示する書式指定子です。これにより数字がきれいに整列し、表形式の出力が実現できます。
  • COLMAXROWMAX#define で定義されたマクロ定数で、それぞれ列数(10)と行数(12)を表しています。値を変更すれば、任意の範囲の九九表に対応できます。
  • 内側のループが1周終わるごとに printf("\n") で改行することで、次の行へ移っています。

完全なサンプルコード

以下が、掛け算九九表を表示するC言語プログラムの完全な例です。

#include<stdio.h>
#define COLMAX 10
#define ROWMAX 12
main(){
    int row,column, y;
    row = 1;
    printf(" MULTIPLICATION TABLE \n");
    printf("-----------------------------------------\n");
    do /*...... 外側のループ開始 ........*/ {
        column = 1;
        do /*....... 内側のループ開始 .......*/ {
            y = row * column;
            printf("%4d", y);
            column = column + 1;
        }
        while (column <= COLMAX); /*... 内側のループ終了 ...*/
        printf("\n");
        row = row + 1;
    }
    while (row <= ROWMAX);/*..... 外側のループ終了 .....*/
    printf("-----------------------------------------\n");
}

実行結果

上記のプログラムをコンパイルして実行すると、次のような出力が得られます。

MULTIPLICATION TABLE
-----------------------------------------
 1  2  3  4  5  6  7  8   9  10
 2  4  6  8 10 12 14 16  18  20
 3  6  9 12 15 18 21 24  27  30
 4  8 12 16 20 24 28 32  36  40
 5 10 15 20 25 30 35 40  45  50
 6 12 18 24 30 36 42 48  54  60
 7 14 21 28 35 42 49 56  63  70
 8 16 24 32 40 48 56 64  72  80
 9 18 27 36 45 54 63 72  81  90
10 20 30 40 50 60 70 80  90 100
11 22 33 44 55 66 77 88  99 110
12 24 36 48 60 72 84 96 108 120
-----------------------------------------

まとめ

このように、外側のループで行を管理し、内側のループで列を管理するという二重ループの考え方は、表形式のデータを出力する際の基本テクニックです。for文でも同じ処理を書けますが、do while文を使うことで「必ず1回は実行される」という動作の違いを理解する良い練習になります。ぜひ自分でコードを打ち込んで、動作を確認してみてください。

  1. C言語で指定した数値の掛け算九九表を出力する方法

    プログラムの概要このプログラムは、ユーザーが入力した任意の数値に対して、その掛け算九九表(乗算表)を出力するものです。C言語の基礎的な入出力処理と for ループの使い方を学ぶのに最適なサンプルです。アルゴリズム1. 九九表を作成したい数値を、ユーザーから入力として受け取ります。2. ループ変数 i の初期値を 1 に設定し、入力された数値との積を計算します。3. i の値を 1 ずつ増加させながら掛け算を繰り返し、i が 12 以下である間、計算結果を出力し続けます。サンプルコード/* 指定された数値の掛け算九九表を出力するプログラム */ #include <stdio.h>

  2. C言語で二項係数テーブルを出力するプログラムの作成方法

    正の整数値(ここでは「val」とします)が与えられたとき、0からvalまでの範囲にある任意のnとkに対する二項係数B(n, k)の値を計算し、テーブル形式で出力するのが本記事の目的です。 二項係数とは 二項係数(n, k)とは、「n個の選択肢の中からk個を選ぶ組み合わせ」の総数を表す値です。正の整数nおよびkに対する二項係数は、次の式で定義されます。 $$C_k^n=\frac{n!}{(n-k)!k!}$$ ただし、条件として n >= k が満たされている必要があります。 計算例 入力: B(9,2) 出力: $$B_2^9=\frac{9!}{(9-2)!2!}$$