九九乘法表 题目: 编写程序,打印输出如下图所示的乘法九九表:
输入提示信息: “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); 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++) { for (int j = 1 ; j <= i; j++) { printf ("%4d" , i * j); } for (int j = i + 1 ; j <= 9 ; j++) { printf (" " ); } printf ("\n" ); } return 0 ; }
算了算了,这个题估计就这样了
总结: 这个代码就是这么复杂,但是是一个很好的题目,用于练习循环嵌套