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桁分の幅」で整数を右寄せして表示する書式指定子です。これにより数字がきれいに整列し、表形式の出力が実現できます。COLMAXとROWMAXは#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回は実行される」という動作の違いを理解する良い練習になります。ぜひ自分でコードを打ち込んで、動作を確認してみてください。
-
C言語で指定した数値の掛け算九九表を出力する方法
プログラムの概要このプログラムは、ユーザーが入力した任意の数値に対して、その掛け算九九表(乗算表)を出力するものです。C言語の基礎的な入出力処理と for ループの使い方を学ぶのに最適なサンプルです。アルゴリズム1. 九九表を作成したい数値を、ユーザーから入力として受け取ります。2. ループ変数 i の初期値を 1 に設定し、入力された数値との積を計算します。3. i の値を 1 ずつ増加させながら掛け算を繰り返し、i が 12 以下である間、計算結果を出力し続けます。サンプルコード/* 指定された数値の掛け算九九表を出力するプログラム */ #include <stdio.h>
-
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!}$$