这是你的小九九
这道题是典型的编程模拟题
所谓的模拟,就是给你描绘一个问题,让你用代码来输出执行整个过程,这道题是非常经典的编程模拟题,同时也考察你对二重循环掌握的情况,如果能够独立完成说明你能够把握多重循环的逻辑关系,如果不能,也没关系,我带你体会这个逻辑过程,更深入的了解循环的多种通途
小学三年级的乘法口诀表,看看这是不是你的小九九
看到这张图,第一件事是要建立逻辑模型,想看明白这个逻辑模型就必须搞懂二重循环的逻辑关系,因为看到这你可能已经猜到需要两个for循环来实现整个过程
细节1:一般的二重循环遍历就像打印一张矩阵一样,每一行从左到右走到头,然后从下一行第一个元素接着走从左到右,但是这里我们需要做到的是,让遍历的时候第一行只走一个,第二行只走二个,以此类推,那么我们可以调整内层循环的结束循环的判断条件来控制遍历的”路线”;
细节2:控制完遍历的路线,然后开始生成每一个乘法口诀算式,我们仔细总结规律发现那些相乘的数字排版是有规律的,我们按照每一行的遍历来看的话,左乘的数字在每一行都是从1开始往后逐个增加,右乘的数字每一行都是不变的而且右乘数字跟对应的行一一对应,最关键右乘的数字还是左乘数字在每一行还是细节1里面讲到的控制”路线”的结束标志;
举个例子:第三行:1乘3=3,2乘3=6,3乘3=9
ok,看到这,你是不是有点感觉了,我们的外层循环每遍历新的一行的时候i就是右乘不变的数字
细节3:我们看懂右乘数字跟外层循环的变量值i建立关系以后,就是内层循环j其实就是左乘在每一行逐个增加的数字一一对应;
细节4:我们逻辑按照循环规律来建成以后,直接用printf来模拟输出就可以了;
细节5:注意虽然我们能够控制每一行的结束范围,但是还需要换行!你结束了,不换行就达不到输出的效果!
ok,逻辑模型和逻辑关系都搞明白以后,我们就直接套代码!跑出你的小九九
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
//常规循环思想:内层循环遍历的是行,外层循环遍历的是列
for (int i = 1; i <= 9; i ++ ) //细节2
{
for (int j = 1; j <= i; j ++ ) //细节1:范围 细节3:左乘是j
printf("%d*%d=%d ",j,i,i*j); //细节4
printf("\n"); //细节5
}
return 0;
}