1. 概要
~ Jack Qiao对米粒说:“为了帮助孩子们更好地学习乘法,智慧镇的镇长决定举办一场特别的活动——“乘法口诀挑战赛”。比赛的规则非常简单:参与者需要输入一个正整数 n,然后系统会生成一个 n*n的上三角形乘法口诀表。
> 米粒想到之前学的知识:使用两层嵌套的 for 循环,外层循环控制行数,内层循环控制每行中的列数,生成并打印乘法表达式,然后格式化输出。
2. 整体架构流程
2.1. for循环
for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%-2d ", j, i, i * j); } printf("\n"); }
2.1.1. 对for循环进行分析
- 外层循环 for (i = 1; i <= n; i++):
- 控制行数,从1到 n。
- 内层循环 for (j = 1; j <= i; j++):
- 控制每行中的列数,从1到当前行号 i。
- 打印乘法表达式:
- printf("%d*%d=%-3d ", j, i, i * j); 打印当前行和列对应的乘法表达式及其结果。
- %d 是格式说明符,表示整数。
- %-3d 表示左对齐宽度为3的整数,确保输出格式整齐。
- 换行:
- printf("\n"); 在每行打印完成后换行,准备打印下一行。
2.2. 运行结果
2.3. 全部代码
#include <stdio.h>
int main() {
int n, i, j;// 提示用户输入一个正整数
printf("请输入一个正整数n(生成n*n的上三角乘法口诀表): ");
scanf("%d", &n);// 检查输入是否有效
if (n <= 0) {
printf("无效输入,请输入一个正整数。\n");
return 1;
}// 打印上三角乘法口诀表
for (i = 1; i <= n; i++) {
for (j = 1; j <= i; j++) {
printf("%d*%d=%-2d ", j, i, i * j);
}
printf("\n");
}return 0;
}
3. 技术细节
- 打印乘法表达式:
- printf("%d*%d=%-3d ", j, i, i * j); 打印当前行和列对应的乘法表达式及其结果。
- %d 是格式说明符,表示整数。
- %-3d 表示左对齐宽度为3的整数,确保输出格式整齐。
4. 小结
a. 输入验证:通过 `scanf` 获取用户输入,并使用 `if` 语句检查输入的有效性,确保输入是一个正整数。
b. 嵌套循环:使用两层 `for` 循环生成上三角形乘法口诀表,外层循环控制行数,内层循环控制每行中的列数。
c. 格式化输出:利用 `printf` 的格式化字符串(如 `%d` 和 `%-3d`)确保乘法表达式和结果在输出时对齐整齐。