C++程序基础(17):C++循环嵌套

时间:2025-04-04 07:54:39

C++循环嵌套

  • 循环嵌套的定义
  • 经典的双重for循环
  • 多重for循环
  • 例题

循环嵌套的定义

从字面意思理解,嵌套,指的是在已有的表格、图像或图层中再加进去一个或多个表格、图像或图层,亦或两个物体有装配关系时,将一个物体嵌入另一物体的方法。

“循环嵌套”同样可以这么理解,也就是在一个循环内嵌入一个甚至多个循环。

本文内仅以for循环嵌套为例。

经典的双重for循环

首先我们来看一个故事:

近来天气炎热,小T天天汗流浃背。今天小T看见自己的大冤种死党小E路过,便打劫请求小E为自己买一根冰棍。小E稍加思索后,说:“虽然我没有钱,但是我可以为你打印一个!”小T十分生气开心地说:“我要一个 4 ∗ 4 4*4 44 大小的冰棍!”

你可以帮助小E给小T打印一个 4 ∗ 4 4*4 44 大小的冰棍吗?

好的不管你愿不愿意现在我们来分析一下这道题目:

根据题意,我们需要打印一个四行四列的长方形(此处输出*)。这只靠单层循环显然是不够的,也就需要经典的双重循环上场了。

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 44 大小的三角形的“冰棍”。这下小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

这样就能够达到输出三角形的效果了。