九九乘法表

九九乘法表

题目:

编写程序,打印输出如下图所示的乘法九九表:

1
2
3
4
5
6
7
8
9
10
11
/*1   2   3   4   5   6   7   8   9
- - - - - - - - -
1 2 3 4 5 6 7 8 9
4 6 8 10 12 14 16 18
9 12 15 18 21 24 27
16 20 24 28 32 36
25 30 35 40 45
36 42 48 54
49 56 63
64 72
81*/

输入提示信息: “Input n:\n”
输入数据格式: “%d”
表头第一行输出格式”%4d” (需要循环,行尾有回车)
表头第二行输出格式” -“ (需要循环,行尾有回车)
乘法表正文中每一列的空格格式:” “
输出数据格式: “%4d” (需要循环,行尾有回车)

代码实现:

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
#include <stdio.h>

int main()
{
int n;
printf("Input n:\n");
scanf("%d", &n);
for (int i = 1;i <= n;i++) {
printf(" %d", i);
}
printf("\n");
for (int j = 1;j <= n;j++) {
printf(" -");
}
printf("\n");
for (int k = 1;k <= n;k++) {
int wbs = k;
for (int space = 0;space + 1 < k;space++) {
printf(" ");
}
for (int taculate = n - k + 1;taculate >= 1;taculate--) {
printf("%4.d", k * wbs); //倍数*数字
wbs++;
}
if (k != n) {
printf("\n");
}
}

return 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
#include <stdio.h>

int main()
{
int n;
printf("Input n:\n");
scanf_s("%d", &n);


//打印前两行
for (int i = 1;i <= n;i++) {
printf(" %d", i);
}
printf("\n");
for (int j = 1;j <= n;j++) {
printf(" -");
}
printf("\n");


for (int k = 1;k <= n;k++) {
int num = k;
for (int space = k - 1;space >= 1;space--) {
printf(" ");
}
for (int caculate = n-k+1;caculate >= 1;caculate--) {
printf("%4.d", k * num);
num++;
}
printf("\n");
}

return 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
#include <stdio.h>

int main()
{
int n;
printf("Input n:\n");
scanf_s("%d", &n);
for (int k = 1;k <= n;k++) {
if (k == 1) {
for (int i = 1;i <= n;i++) {
printf(" %d", i);
}
printf("\n");
for (int i = 1;i <= n;i++) {
printf(" -");
}
printf("\n");
}
int num = k;
for (int space = k - 1;space >= 1;space--) {
printf(" ");
}
for (int caculate = n-k+1;caculate >= 1;caculate--) {
printf("%4.d", k * num);
num++;
}
printf("\n");
}

return 0;
}

搞定!

…….

怎么会这样,修改了两次,还是一坨。我为什么不能写出简单优秀好看的代码!!!

看来不改变代码逻辑,始终改变不了代码的可读性等等

看看AI写的代码(仅供参考):

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
#include <stdio.h>

int main() {
int n;
printf("Input n:\n");
scanf("%d", &n); // 这里n实际上固定为9,因为是九九表

// 输出表头第一行:1 2 3 ... 9
for (int i = 1; i <= 9; i++) {
printf("%4d", i);
}
printf("\n"); // 行尾回车

// 输出表头第二行:----...
for (int i = 1; i <= 9; i++) {
printf(" -");
}
printf("\n"); // 行尾回车

// 输出乘法表正文
for (int i = 1; i <= 9; i++) { // 控制行,第i行
for (int j = 1; j <= i; j++) { // 控制列,第j列(每行列数与行号一致)
printf("%4d", i * j);
}
// 补全每行后面的空格(因为每行列数从1到i,不足9列时用空格填充格式)
for (int j = i + 1; j <= 9; j++) {
printf(" ");
}
printf("\n"); // 行尾回车
}

return 0;
}

算了算了,这个题估计就这样了

总结:

这个代码就是这么复杂,但是是一个很好的题目,用于练习循环嵌套


九九乘法表
http://example.com/2025/11/29/九九乘法表/
作者
王柏森
发布于
2025年11月29日
许可协议