一、基础乘法表实现
1. 标准九九乘法表
#include <stdio.h>
void basicMultiplicationTable() {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
printf("%d×%d=%-2d ", j, i, i*j); // %-2d左对齐,占2位
}
printf("\n");
}
}
int main() {
basicMultiplicationTable();
return 0;
}
解析:
外层循环控制行数(1-9)
内层循环控制每行的列数(1到当前行数)
%-2d
确保结果对齐,美观输出时间复杂度:O(n²)
输出效果:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 ... 9×9=81
二、乘法表变形实现
1. 倒三角乘法表
代码实现:
void invertedTriangleTable() {
for(int i = 9; i >= 1; i--) {
for(int j = 1; j <= i; j++) {
printf("%d×%d=%-2d ", j, i, i*j);
}
printf("\n");
}
}
解析:
外层循环从9递减到1
每行列数等于当前行数
呈现倒三角形态
2. 右上三角乘法表
代码实现:
void rightTopTriangleTable() {
for(int i = 1; i <= 9; i++) {
// 打印空格对齐
for(int k = 1; k < i; k++) {
printf(" "); // 8个空格
}
for(int j = i; j <= 9; j++) {
printf("%d×%d=%-2d ", i, j, i*j);
}
printf("\n");
}
}
解析:
每行前增加空格实现右对齐
内层循环从当前行数开始
呈现右上三角形态
3. 数字方阵乘法表
代码实现:
void squareMatrixTable() {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
if(j < i) {
printf(" "); // 对齐空白
} else {
printf("%d×%d=%-2d ", i, j, i*j);
}
}
printf("\n");
}
}
解析:
完整9×9方阵
下三角区域用空格填充
上三角区域显示乘法结果
三、进阶变形实现
1. 彩色乘法表
代码实现:
void coloredTable() {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
// 使用ANSI颜色代码
printf("\033[1;3%dm%d×%d=%-3d\033[0m ",
i%6+1, j, i, i*j); // 1-6种颜色循环
}
printf("\n");
}
}
解析:
\033[1;3Xm
设置颜色,X为1-6表示不同颜色
\033[0m
重置颜色每行使用不同颜色增强可读性
2. 用户自定义范围乘法表
代码实现:
void customRangeTable(int n) {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
printf("%d×%d=%-4d ", j, i, i*j);
}
printf("\n");
}
}
解析:
参数n控制乘法表范围
动态调整格式宽度(%-4d)适应更大数字
3. 文件输出乘法表
代码实现:
void fileOutputTable() {
FILE *fp = fopen("multiplication_table.txt", "w");
if(fp == NULL) {
printf("文件打开失败\n");
return;
}
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
fprintf(fp, "%d×%d=%-2d ", j, i, i*j);
}
fprintf(fp, "\n");
}
fclose(fp);
printf("乘法表已保存到文件\n");
}
解析:
使用fprintf替代printf输出到文件
注意文件打开失败处理
四、知识点总结
-
循环结构:
-
嵌套循环是乘法表的核心结构
-
外层控制行,内层控制列
-
-
格式化输出:
-
%-Nd
实现左对齐固定宽度输出 -
空格控制实现各种对齐方式
-
-
变形关键:
-
改变循环方向(递增/递减)
-
控制每行列数范围
-
添加空格实现不同布局
-
-
进阶技巧:
-
ANSI颜色代码增强显示效果
-
文件I/O实现持久化存储
-
参数化设计提高灵活性
-
-
优化考虑:
-
减少不必要的计算(如i*j只计算一次)
-
动态调整输出格式
-
错误处理(如文件操作)
-