第15章 循环、分支的嵌套
嵌套指在一个分支/循环内部完整包含另一组分支或循环,用于处理多层判断、多层重复逻辑,是复杂程序的基础结构。
15.1 分支嵌套
15.1.1 if语句嵌套
在if / else if / else 的代码块中再写if结构。 规则:else 匹配最近、未配对的if,大括号可明确划分层级。 示例:成绩分级
int score = 85;
if (score >= 60)
{
if (score >= 90)
cout << "优秀";
else if (score >= 80)
cout << "良好";
else
cout << "及格";
}
else
{
cout << "不及格";
}
15.1.2 switch语句嵌套
case、default内部可写完整switch;内层break只跳出内层,不影响外层。
int a = 1, b = 2;
switch(a)
{
case 1:
printf("a=1\n");
switch(b)
{
case 2: printf("b=2\n"); break;
default: break;
}
break;
default: break;
}
15.2 循环嵌套
循环体内包含另一循环,外层走一次,内层完整跑完一轮。多用于打印图形、二维遍历。
15.2.1 for嵌套(最常用)
打印5行5列星号:
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
cout<<"*";
cout<<endl;
}
15.2.2 while嵌套
int i=1;
while(i<=3)
{
int j=1,sum=0;
while(j<=2)
{
sum += i*j;
j++;
}
i++;
}
15.2.3 不同循环互相嵌套
for套do-while、while套for都合法。
15.3 分支与循环互相嵌套
15.3.1 循环内套if(高频)
求1~10偶数和:
int sum=0;
for(int i=1;i<=10;i++)
{
if(i%2==0)
sum += i;
}
15.3.2 if内套循环
仅满足条件才执行循环:
int n;
cin>>n;
if(n>0)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
cout<<j<<"*"<<i<<"="<<i*j<<" ";
cout<<endl;
}
}
15.4 核心注意事项
- 内外循环变量名必须不同(i、j区分);
- break/continue仅作用当前最内层循环/switch;
- 嵌套层数不宜过多,降低可读性;
- 用缩进区分层级,大括号避免else匹配错误;
- 保证内层循环有终止条件,防止死循环。