题解
九九乘法表
1 条题解
-
0
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