T577570 九九乘法表

一、题目理解

1.1 题目要求

输出九九乘法表,要求呈下三角形式,即第 i 行输出 i 个乘法表达式,从 1×i 一直到 i×i。

输出格式:

  • 共 9 行。

  • 第 i 行有 i 个表达式,每个表达式形如“j*i=积”,表达式之间用空格隔开。

  • 每行末尾换行。

1.2 样例模拟

程序的输出结果应该是这样的:

第 1 行:1*1=1
第 2 行:1*2=2 2*2=4
第 3 行:1*3=3 2*3=6 3*3=9
第 4 行:1*4=4 2*4=8 3*4=12 4*4=16
第 5 行:1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
第 6 行:1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
第 7 行:1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
第 8 行:1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
第 9 行:1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

观察规律:

  • 第 i 行第一个乘数 j 从 1 递增到 i。

  • 第 i 行第二个乘数固定为 i。

  • 每行的表达式个数恰好等于行号 i。

 

二、核心思想:双重循环(嵌套循环)

2.1 什么是双重循环?

想象一栋楼,有 9 层,第 i 层有 i 个房间。

  • 外层循环负责“逐层走”:从第 1 层走到第 9 层。

  • 内层循环负责“逐房间走”:在第 i 层,从第 1 个房间走到第 i 个房间。

每进入一个房间,就输出一个乘法表达式。走完一层后换行,再进入下一层。

2.2 为什么这种方法可行?

因为乘法表的规律是“第 i 行有 i 个表达式,且第二个乘数固定为 i,第一个乘数从 1 到 i”。外层循环控制行号 i,内层循环控制第一个乘数 j,正好一一对应。

2.3 外层循环与内层循环的分工

  • 外层循环变量 i:表示当前是第几行,同时作为每行乘法表达式的第二个乘数。取值范围 1 到 9。

  • 内层循环变量 j:表示当前行内第几个表达式,同时作为第一个乘数。取值范围 1 到 i(注意是到 i,不是到 9)。

关键点: 内层循环的上限是 i,而不是固定的 9。这正是形成下三角形状的原因——第 1 行只有 1 个,第 2 行有 2 个,依次递增。

 
 

三、程序执行流程逐步解析

下面按照程序实际执行的顺序,逐步讲解每一步在做什么。所有代码片段在文末统一给出,这里只讲逻辑。

【第 1 步】程序开始

程序从主函数开始执行。为了让程序能进行输出操作,需要使用标准输出流。

【第 2 步】外层循环:控制行号

外层循环变量 i 从 1 开始,每次加 1,直到 i 大于 9 时停止。因此外层循环体执行 9 次,对应 9 行。

【第 3 步】内层循环:控制每行的表达式个数

对于每一个固定的 i,内层循环变量 j 从 1 开始,每次加 1,直到 j 大于 i 时停止。

  • 当 i = 1 时,内层循环执行 1 次(j = 1)。

  • 当 i = 2 时,内层循环执行 2 次(j = 1, 2)。

  • 当 i = 3 时,内层循环执行 3 次(j = 1, 2, 3)。

  • ……

  • 当 i = 9 时,内层循环执行 9 次(j = 1 到 9)。

这正是下三角形状的来源。

【第 4 步】内层循环体:输出一个乘法表达式

每次进入内层循环,就输出一个形如“j*i=积”的表达式,后面跟一个空格。

具体内容:

  • 先输出 j

  • 再输出星号

  • 再输出 i

  • 再输出等号

  • 再输出 i 与 j 的乘积

  • 最后输出一个空格

注意: 乘积是 ij,不是 jj 或 ii。虽然乘法交换律保证 ij 与 j*i 相等,但写代码时要注意对应关系。

【第 5 步】内层循环结束:换行

当内层循环结束后(即第 i 行的所有表达式都输出完毕),执行一次换行,准备输出下一行。

关键点: 换行语句必须写在内层循环之外、外层循环之内。如果写在内层循环里,每个表达式后都会换行,就不是下三角了;如果写在外层循环外,所有内容会挤在一行。

【第 6 步】外层循环结束

当外层循环结束后,9 行全部输出完毕,程序继续向下执行。

 

#include<bits/stdc++.h>              // 万能头文件
using namespace std;

int main(){
    
    for(int i = 1; i <= 9; i++){      // 外层循环:i 表示行号,从 1 到 9,同时是每行的第二个乘数
        for(int j = 1; j <= i; j++){  // 内层循环:j 表示第一个乘数,从 1 到 i(注意上限是 i,不是 9)
            cout << j << "*" << i << "=" << i*j << " ";  // 输出一个表达式,后面跟一个空格
        }
        cout << endl;                 // 本行所有表达式输出完毕,换行
    }
    
    return 0;
}

 

posted @ 2026-09-17 16:50  乐意丘  阅读(14)  评论(0)    收藏  举报