该结束时结束,
该跳过时继续前进
今天学习循环中的 break 与 continue,比较结束整个循环和跳过当前一轮的不同路线,并用二者完成累计综合练习。
break 会结束整个当前循环
第 11 天曾在 switch 中使用 break。今天把它放进 for:条件命中后,当前循环立即结束,不会再产生后面的轮次,但循环外的代码仍然继续执行。
day14.c
for (int number = 1; number <= 5; number++)
{
if (number == 3)
{
printf("遇到 3,结束循环\n");
break;
}
printf("number = %d\n", number);
}实际只输出 1 和 2。到第 3 轮时先输出结束提示,再执行 break,所以不会输出 number = 3,也不会再处理 4、5。
continue 只跳过当前一轮
continue 不会结束整个循环。它会跳过本轮剩余语句;在 for 中,接下来先执行每轮更新,再检查条件并决定是否进入下一轮。
day14.c
for (int value = 1; value <= 5; value++)
{
if (value == 3)
{
printf("跳过 3\n");
continue;
}
printf("value = %d\n", value);
}因此 value = 3 不会输出,但循环仍会继续处理 4 和 5。这也是它与 break 最重要的区别。
在同一个循环中组合两条路线
综合练习从 1 循环到 10:遇到 3 时只跳过本轮;遇到 7 时结束整个循环。程序输出 1、2、4、5、6,不输出 3 和 7,也不会处理 8、9、10。
day14.c
for (int current = 1; current <= 10; current++)
{
if (current == 3)
{
continue;
}
if (current == 7)
{
break;
}
printf("current = %d\n", current);
}独立完成带跳过与停止的累计
最后独立编写累计程序:从 1 处理到 10,5 在累计前被跳过,9 在累计前结束循环。这样 5、9、10 都不会进入总和。
day14.c
int sum = 0;
for (int variable = 1; variable <= 10; variable++)
{
if (variable == 5)
{
continue;
}
if (variable == 9)
{
break;
}
sum += variable;
printf("加入 %d 后,sum = %d\n", variable, sum);
}实际参与累计的是 1 + 2 + 3 + 4 + 6 + 7 + 8,中间结果依次为 1、3、6、10、16、23、31,最终总和是 31。预测与实际运行一致,程序正常退出,代码为 0。
今天真正掌握的内容
- 知道
break会立即结束整个当前循环 - 知道
continue只跳过当前一轮的剩余语句 - 理解
for遇到continue后先更新、再检查条件 - 能判断
break与continue后哪些代码仍会执行 - 会在同一个循环中组合跳过与提前结束路线
- 能独立把循环控制与累计逻辑组合成完整程序
下一步将学习 do ... while 和由用户输入控制的重复菜单;完成 C Day 15 后,C Day 16 将进行第二次阶段复习与检测。