C++循环嵌套
- 循环嵌套的定义
- 经典的双重for循环
- 多重for循环
- 例题
循环嵌套的定义
从字面意思理解,嵌套,指的是在已有的表格、图像或图层中再加进去一个或多个表格、图像或图层,亦或两个物体有装配关系时,将一个物体嵌入另一物体的方法。
“循环嵌套”同样可以这么理解,也就是在一个循环内嵌入一个甚至多个循环。
本文内仅以for循环嵌套为例。
经典的双重for循环
首先我们来看一个故事:
近来天气炎热,小T天天汗流浃背。今天小T看见自己的大冤种死党小E路过,便打劫请求小E为自己买一根冰棍。小E稍加思索后,说:“虽然我没有钱,但是我可以为你打印一个!”小T十分生气开心地说:“我要一个
4
∗
4
4*4
4∗4 大小的冰棍!”
你可以帮助小E给小T打印一个 4 ∗ 4 4*4 4∗4 大小的冰棍吗?
好的不管你愿不愿意现在我们来分析一下这道题目:
根据题意,我们需要打印一个四行四列的长方形(此处输出*)。这只靠单层循环显然是不够的,也就需要经典的双重循环上场了。
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
cout<<"*";//内层循环控制列,即每行输出的*
}
cout<<endl;//外层循环控制行,可以使内层循环进行4次
}
- 1
- 2
- 3
- 4
- 5
- 6
如上代码所示:
外层循环控制行数,使内层循环执行
4
4
4 次;内层循环控制列数,也就是每行输出的*
数。
多重for循环
我们再来看一个故事:
小S出生于一个非常庞大的富贵家族,而下周将是他们家族大摆家宴的日子。青年才俊的小S从小就担当起了家族内外的事务,为了即将到来的家宴,小S需要使用有限的 100 100 100 元钱购买一百只鸡作为食材。其中,三只小鸡仔卖一元钱,一只母鸡卖三元钱,一只公鸡卖五元钱。请问三只鸡各应该买多少只?
为了协助贵公子小S买齐食材,我们现在来分析一下题目:
在这道题中,仅仅使用双重循环也是不够的,我们需要使用三重循环(分别代表购买公鸡、母鸡和小鸡的数量):
for(int i=0;i<=100/5;i++){//购买公鸡的数量
for(int j=0;j<=100/3;i++){//购买母鸡的数量
for(int k=0;k<=300;k++){//购买小鸡的数量
if(i+j+k==100&&i*5+j*3+k/3==100&&k%3==0){
cout<<i<<" "<<j<<" "<<k<<endl;
}
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
最外层循环先确定购买公鸡的数量,随后里层的两重循环执行,查找是否有能够满足条件的母鸡、小鸡数量(最内层循环中的if判断是否符合题目条件)
如果无法符合,就增加购买公鸡的数量,继续进行循环,直到找到满足的一对数为止。
例题
小U看见小T给小E做的“冰棍”,眼馋不已,便问小T能不能给自己也做一个,小T欣然应允。可是小U却说,祂想要一个 4 ∗ 4 4*4 4∗4 大小的三角形的“冰棍”。这下小T犯了难,你能再帮帮祂吗?
输出样例
*
**
***
****
- 1
- 2
- 3
- 4
题目讲解
我们可以设置双重循环:外层的循环中的
i
i
i 由
1
1
1 至
4
4
4 递增,里层的循环的
j
j
j 则由
1
1
1 至
i
i
i递增,并同时输出 *
;
for(int i=1;i<=a;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}
- 1
- 2
- 3
- 4
- 5
- 6
这样就能够达到输出三角形的效果了。