九九の表を表示するプログラム


・はじめに

 実践編では修得編の更新がある程度進むごとにそこまでの知識のみでつくることのできるプログラムを紹介していきます。 つくる過程を解説していくのがメインですが、自分でつくってみたい人は題だけみてノーヒントでやって見るのもよいでしょう。 今回は九九の表を表示するプログラムです。

・実行結果の予測

 1  2  3  4  5  6  7  8  9
 2  4  6  8 10 12 14 16 18
 3  6  9 12 15 18 21 24 27
 4  8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81 
 こんな風に表示させたいわけですね。

・完成までの流れ

 まずは個々の数字の表示について考えてみましょう。 iの段のj番目を表示するには

printf("%d ",i*j);
ですね。 次にiの段の表示を考えます。 1番目から9番目まで表示していくということはjを1から9までforで変化させ繰り返せばよいということです。 そしてその段を表示し終えたら最後に改行します。
for(j=1;j<=9;j++)
{
	printf("%d ",i*j);
}

printf("\n");
となります。これを1から9の段について行えばいいわけですから今度はiを1から9まで動かして
for(i=1;i<=9;i++)
{
	for(j=1;j<=9;j++)
	{
		printf("%d ",i*j);
	}

	printf("\n");
}
このように二重ループにすればいいわけです。 これでメインの部分は完成しました。 変数の宣言とかを付け足して最終的にソースは以下のようになります。
#include <stdio.h>

int main(void)
{
	int i,j;

	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			printf("%d ",i*j);
		}

		printf("\n");
	}

	return 0;
}

・少し修正

 実は上の解答、実行してみると以下のようになってしまいます。

 1 2 3 4 5 6 7 8 9
 2 4 6 8 10 12 14 16 18
 3 6 9 12 15 18 21 24 27
 4 8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81 
一桁の数と二桁の数で使うスペースが違うためきれいに揃わないのです。 この課題は二重ループ修得が目的なのでどうでもいいのですが一応修正しておきましょう。 printfの%dのところを%2dとやると全て二桁分のスペースを使って表示してくれます。 これで最初にのせたような実行結果が得られるはずです。