以前、本ブログで、「縦横のタイトルがついた九九の表を表示するC言語のプログラム」をご紹介した。
今回は、このプログラムを改良してみよう。
改良ポイント
- マクロ定義を使って定数管理
- 九九の上限(9)をマクロで定義すると、変更が簡単になる。
- 整った出力のための整形
- タイトルや区切り線の出力を関数にして再利用性を高める。
- 関数分離
- 表の出力処理を関数に分離することで、main関数の見通しを良くする。
- コメントの追加
- コードの意図を明確にするコメントを加えると、読み手が理解しやすくなる。
#include <stdio.h>
#define MAX 9 // 九九の上限
// タイトル行を表示
void print_header(void) {
printf(" |");
for (int i = 1; i <= MAX; i++)
printf("%3d", i);
putchar('\n');
// 区切り線
printf("---+");
for (int i = 1; i <= MAX; i++)
printf("---");
putchar('\n');
}
// 九九表を表示
void print_table(void) {
for (int i = 1; i <= MAX; i++) {
printf("%2d |", i);
for (int j = 1; j <= MAX; j++)
printf("%3d", i * j);
putchar('\n');
}
}
int main(void)
{
print_header();
print_table();
return 0;
}
実行結果
| 1 2 3 4 5 6 7 8 9
---+---------------------------
1 | 1 2 3 4 5 6 7 8 9
2 | 2 4 6 8 10 12 14 16 18
3 | 3 6 9 12 15 18 21 24 27
4 | 4 8 12 16 20 24 28 32 36
5 | 5 10 15 20 25 30 35 40 45
6 | 6 12 18 24 30 36 42 48 54
7 | 7 14 21 28 35 42 49 56 63
8 | 8 16 24 32 40 48 56 64 72
9 | 9 18 27 36 45 54 63 72 81
このように関数化・定数化・整形により、可読性と再利用性が高まり、後で拡張(たとえば MAX
を12にして12×12表に)もしやすくなる。
(参考文献)新・明解C言語 入門編 第2版 柴田望洋著(SBクリエイティブ)
コメント