语法阶段已经更新到第18章了,前面的知识你都学会了吗?如果还没有学习前面的知识,请点击👉语法专栏进行学习哦!
目录
循环嵌套
训练:数字矩形
解析
参考代码
训练:星号三角形
解析
参考代码
训练:乘法口诀表
解析
参考代码
循环嵌套
和if一样,循环也能够嵌套。例如:我们可以先写一个输出1~10的循环a,我如果想让这个程序执行5次,则只需要再写一个5次的循环b,然后把循环a放入循环b中即可。
训练:数字矩形
输入整数m,n,请你打印m行,整数n~1。
【输入格式】输入两个空格隔开的整数m,n(1<=m,n<=15)
【输出格式】m行:每行有n个空格隔开的整数
【输入样例】3 5
【输出样例】
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1
解析
1.外层循环:外层循环控制行数,一共有m行,每行输入结束,会换行,所以外层循环为:
for(int i=1;i<=m;i++)
{cout << endl;
}
2.内层循环:内层循环控制输出n个数字,并且是从n开始到1结束,中间用空格隔开,即在外层循环换行前写上:
for(int j=n;j>=1;j--)
{cout<<j<<' ';
}
参考代码
#include<iostream>
using namespace std;
int main( )
{int m,n;cin>>m>>n;for(int i=1;i<=m;i++){for(int j=n;j>=1;j--){cout<<j<<' ';}cout<<endl;}return 0;
}
训练:星号三角形
输入整数n,请你打印n行,*号三角形。
【输入格式】输入一个整数n(1<=n<=20)
【输出格式】输出n行:第i行有i个*号
【输入样例】3
【输出样例】
*
**
***
解析
1. 假设i代表行,当i=1的时候,第1行有一颗*,当i=2的时候,第2行有两颗*,当i等于n的时候,第n行有n颗*。
2. 外层循环同上题,内层循环每i行输出i个*号,行跟*是对应的,所以控制内层循环的j从1颗*开始,当j等于i的时候就是输出当前行的最后一颗*号,即:
for(int j=1;j<=i;j++)
{cout<<'*';
}
参考代码
#include<iostream>
using namespace std;
int main( )
{int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cout<<'*';}cout<<endl;}return 0;
}
训练:乘法口诀表
输入整数n,参考样例格式,打印前n行乘法口诀表。
【输入格式】输入一个整数n(1<=n<=20)
【输出格式】输出格式参考样例,式子之间3个空格
【输入样例】3
【输出样例】
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
解析
1.i代表行,j代表列,第1列第1行的算式为1*1,第1列第2行的算式为1*2,第2列第2行的算式为2*2... ...第j列第i行的算式为j*i
2.外层循环控制行,与前面两题相似,内层循环控制列,关系式为:i*j=i*j的结果并空3个格,即:
for(int j=1;j<=i;j++)
{cout<<j<<" * "<<i<<" = "<<j*i<<" ";
}
参考代码
#include<iostream>
using namespace std;
int main( )
{int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cout<<j<<" * "<<i<<" = "<<j*i<<" ";}cout<<endl;}return 0;
}