C语言:实现乘法表

一、基础乘法表实现

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输出到文件

  • 注意文件打开失败处理

四、知识点总结

  1. 循环结构

    • 嵌套循环是乘法表的核心结构

    • 外层控制行,内层控制列

  2. 格式化输出

    • %-Nd实现左对齐固定宽度输出

    • 空格控制实现各种对齐方式

  3. 变形关键

    • 改变循环方向(递增/递减)

    • 控制每行列数范围

    • 添加空格实现不同布局

  4. 进阶技巧

    • ANSI颜色代码增强显示效果

    • 文件I/O实现持久化存储

    • 参数化设计提高灵活性

  5. 优化考虑

    • 减少不必要的计算(如i*j只计算一次)

    • 动态调整输出格式

    • 错误处理(如文件操作)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值