top1编程
← 返回题目
题解

九九乘法表

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4369 九九乘法表(入门)

    解题思路

    九九乘法表我们从小就会背,但用程序打出来就要先找规律。观察样例:第 1 行只有 1 个算式 11=1;第 2 行有 2 个算式 12=2 和 2*2=4;第 3 行有 3 个算式……也就是说,第 j 行有 j 个算式,第二个乘数固定是 j,第一个乘数从 1 到 j。

    所以用"双重循环": 外层循环控制 j,也就是第二个乘数(同时也代表第几行),从 1 到 9; 内层循环控制 i,也就是第一个乘数,从 1 到 j; 每个算式输出成 i*j=结果 的样子,同一行里算式之间用一个空格隔开,一行结束就换行。

    举个例子,第 3 行:i 从 1 到 3,输出 "13=3 23=6 3*3=9",和样例里第 3 行完全一样。

    边界情况:每行的第一个算式前面不能有空格,所以用 if (i > 1) cout << " " 来控制。这题没有输入,直接输出,外层 j 从 1 到 9,一共 9 行,正好把 1 到 9 的乘法都覆盖到。

    参考代码

    // 程序用途:输出九九乘法表,第j行有j个算式
    #include <iostream>
    using namespace std;
    
    int main() {
        for (int j = 1; j <= 9; j++) {       // j:第二个乘数,也代表第几行
            for (int i = 1; i <= j; i++) {   // i:第一个乘数,从1到j
                if (i > 1) cout << " ";      // 一行里的算式之间用空格隔开
                cout << i << "*" << j << "=" << i * j;   // 输出一个算式
            }
            cout << endl;                    // 一行结束换行
        }
        return 0;
    }
    

    复杂度分析

    第 j 行有 j 个算式,总算式数是 1+2+...+9 = 45 个,次数固定,所以时间复杂度是 O(1);空间上只用循环变量 i、j,额外空间复杂度是 O(1)。

    • 1