C++016(循环嵌套(多重循环)、break、continue与循环嵌套)
·
C++016(循环嵌套(多重循环)、break、continue与循环嵌套)
知识回顾
- do-while循环语句
- break、continue语句
花店里新购入一批鲜花,五颜六色非常好看。其中有一些百合、红玫瑰和粉玫瑰。妈妈准备从中取出8支花组成一束花,你知道会有多少种不同的花色搭配吗?不同的搭配中,百合、红玫瑰、粉玫瑰各有几支?
三种循环语句
for (初始化;循环条件; 增量) {
循环体
}
while( 循环条件 ) {
循环体
}
do {
循环体
} while( 循环条件 );
循环体内根据情况也可以添加循环语句,构成循环嵌套
循环嵌套(多重循环)
在C++中,一个循环体内又包含另一个完整的循环结构称为循环的嵌套,又称多重循环常用的循环嵌套是双重循环,外层循环称为外循环,内层循环称为内循环for循环嵌套的格式如下
for(初始化;循环条件; 增量){
...
for(初始化;循环条件; 增量) {
...
}
...
}
外循环执行一次,内循环全部执行,然后执行下一次外循环。直到外循环执行完毕,整个流程结束
嵌套的for循环
for(){
for(){
}
}
顺序的for循环
for(){
}
for(){
}
除了for循环嵌套格式外,while和do-while语句的循环体中也可以有循环嵌套其他常见的循环嵌套格式如下
双重循环的执行过程演示
for(int i=1;i<=4;i++){
cout<<"外层循环"<<i<<endl;
}
运行结果:
外层循环1
外层循环2
外层循环3
外层循环4
for(int i=1;i<=4;i++){
cout<<"外层循环"<<i<<endl;
for(int j=1;j<=4;j++){
cout<<" 内层循环"<<j<<endl;
}
运行结果:
外层循环1
内层循环1
内层循环2
内层循环3
内层循环4
外层循环2
内层循环1
内层循环2
内层循环3
内层循环4
外层循环3
内层循环1
内层循环2
内层循环3
内层循环4
外层循环4
内层循环1
内层循环2
内层循环3
内层循环4
}
外层循环一次,内层循环一圈
输出字符三角形
- 有几行?每行几个*?
- 重复次数明确,所以适合用for循环
- 规律:第i行有i个*
| 一共 20 行 | |
|---|---|
| 行的编号i :1~ 20 | |
| 第 i 行有 i 个*号 | |
| 这一行*号的编号j :1~i | |
| 每行需要有1个换行符 |
第一步:循环输出20行,每行输出一个*、一个换行符
for(i=1;i<=20;i++)
{
printf("*");
printf("\n");
}
第二步:对每一行,再循环输出正确数量的*
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
整体代码
#include<iostream>
using namespace std;
int main()
{
int i,j;
//第一步:循环输出20行,每行输出一个*、一个换行符
for(i=1;i<=20;i++)
{
//第二步:对每一行,再循环输出正确数量的* printf("*");
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
输出字符斜边(举一反三)
有几行?每行几个*?每行有几个空格?
| 行编号 | 空格数 | *****数 |
|---|---|---|
| i=1 | 0 | 1 |
| i=2 | 1 | 1 |
| i=3 | 2 | 1 |
| i=4 | 3 | 1 |
| … | … | … |
第 i 行有 :i -1个空格,1个,1个换行*
int i,j;
for(i=1;i<=20;i++)
{
for(j=1;j<=i-1;j++)
{
printf(" ");
}
printf("*\n");
}
下面代码能输出5行6列的*阵吗?
for(int i=1; i<= 6; i++ ){
for(int j=1;j<= 5;j++)
cout<<"*";
cout<<endl;
}
用双重循环实现字符图案的打印
外循环做行数次的循环,内循环做列数次的循环
打印等腰三角形
【编程挑战 】编写一个程序,输入一个正整数n,输出组成的n层的等腰三角形。
【输入】一个正整数n,n<100
*【输出】*组成的n层的等腰三角形
【输入样例1】5
【输出样例1】
1.分析图形
共有几行?每行需要输出哪些符号?每种符号各有几个?
| 行编号 | 空格数 | *****数 | 换行符 |
|---|---|---|---|
| i=1 | 4 | 1 | 1 |
| i=2 | 3 | 3 | |
| i=3 | 2 | 5 | |
| i=4 | 1 | 7 | |
| i=5 | 0 | 9 |
2.找规律
行编号和符号数之间的关系?
3.写出伪代码
对于输入的n,n行的等腰三角形的通用描述:
| 一共 n 行 |
|---|
| 行的编号i :1 ~ n |
| 第 i 行有 n - i 个空格 |
| 第 i 行有 2*i - 1 个**号 |
| 号的编号j :1 ~ 2i - 1 |
| 每行用1个换行符结束 |
for(int i=1; i<=n; i++ ){
循环输出 n - i 个空格;
循环输出 2*i - 1个*;
输出换行符;
}
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
【注意】建议不同层的循环使用不同的循环变量,可以提高代码易读性顺序(同层次)的循环可以用相同的循环变量
2.break与多重循环
break只能跳出它所在层的循环
for(初始化;循环条件; 增量){
语句1;
for(初始化;循环条件; 增量) {
if(条件成立)
break;
}
语句2;
}
当执行到内循环的break语句时,内循环立即终止,外循环不受影响
2.1内循环中的break语句
for(int i=1;i<=4;i++){
cout<<"外层循环"<<i<<endl;
for(int j=1;j<=4;j++){
if(j==3)
break;
cout<<" 内层循环"<<j<<endl;
}
}
运行结果
外层循环1
内层循环1
内层循环2
外层循环2
内层循环1
内层循环2
外层循环3
内层循环1
内层循环2
内层循环3
内层循环4
外层循环4
内层循环1
内层循环2
内层循环3
内层循环4
更多推荐


所有评论(0)