乘法口诀表
案例描述:利用嵌套循环,实现九九乘法表。
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
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
题目分析:
我们可以看出乘法表排列十分具有规律,具有不断递减(递增)的行(列),且每个算式都是列数乘行数。所以我们的程序应该是一个有两个for语句嵌套的结构。该题目不难,但逻辑性很强,我们只要分析出行与列之间的逻辑关系是在任意行中列数永远小于该行数便可以解出此题。
语法 :for(起始表达式;条件表达式;末尾循环体) { 循环语句 }
for语句运用于有明确的循环次数的循环结构中,在循环条件中应该由3部分组成 1.(起始表达式2.条件表达式 3.末尾循环体,且三部分之间用 ";" 来分割。有了这三部分,我们便有了明确的循环次数。
例
for(int i=1;i<10;i++) //这是i从0依次递增到9的循环
两个或多个for语句可以构建一个嵌套的循环结构,但要注意各循环层间的逻辑关系。外层循环执行1次,内层循环执行1轮
例
//外层循环执行1次,内层循环执行1轮
for (int i = 0; i < 10; i++) //外层循环
{
for (int j = 0; j < 10; j++) //内层循环
{
cout << j << endl;
}
cout << endl;
}
解题
构建两个循环变量i,j分别控制内外层循环。
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++) //列数小于行数的内层循环
{
}
}
这样,控制行数的i,与控制列数的j便嵌套完成。下一步我们在内层循环中输出算式 列*行 即可,并且因为是行数控制列数,所以在外层循环中输出换行来使乘法表规律形成。则完整的代码如下:
#include<iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <=i; j++)
{
cout << j << "*" << i << "=" << i * j << "\t";//输出乘法表的内容,并使每个算式间隔相等
}
cout << endl; //控制行的变换,使乘法表规律呈现
}
system("pause"); //程序暂停,使结果呈现
return EXIT_SUCCESS;
}
结果
当然乘法表不仅可以正放也可以倒放,代码如出一辙,在此便不再展示。我们可以看到只有短短几行代码,我们对C++中嵌套结构的逻辑便有所体会。
在程序设计中,算法是考验程序员能力大小的体现,一个好的算法可以大大缩短工作时间。所以理解算法逻辑就显得尤为重要。
谨以此篇展示算法逻辑的魅力。