下面 C++ 代码执行后输出的是( )。
int Sum = 0;
for (int i = 0; i < 10; i++) {
if (i % 2 == 0)
continue;
if (i % 5 == 0)
break;
Sum += i;
}
cout << Sum;答案D。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】循环控制|条件判断|continue 与 break
---
1. 🎯 考纲定位
本题考查《GESP 一级大纲》"循环控制"模块,属于第 1 级考点。命题人放这道题就是卡住那些"知道循环会遍历、但分不清 continue 和 break 区别"的考生——这是 GESP 一级最典型的思维断层。
---
2. 🧠 解题思维
看到题先想:for 循环 i=0 到 9 共 10 次。然后逐次模拟执行,写个简单的执行表:
| i | i%2==0? | i%5==0? | 操作 | Sum |
|---|---|---|---|---|
| 0 | 是 | — | continue | 0 |
| 1 | 否 | 否 | Sum+=1 | 1 |
| 2 | 是 | — | continue | 1 |
| 3 | 否 | 否 | Sum+=3 | 4 |
| 4 | 是 | — | continue | 4 |
| 5 | 否 | 是 | break | 4 |
关键观察:break 条件 i%5==0 在 i=5 时触发,所以循环只执行到 i=4 的 Sum+=i。通法是遇到含 continue/break 的循环题,一定要在草稿纸上逐次模拟,别想"大概能到多少"。
---
3. 🪤 陷阱拆解
最阴险的细节是 break 条件 i%5==0 在 i=5 时触发,而且 i=5 是第一个满足该条件的奇数,所以循环在 i=5 时立即终止,Sum 只累加了 1 和 3。如果你只背结论"continue 跳过本次,break 结束循环",不理解这个精确触发点,就会掉进这个陷阱。
---
4. 🔄 反命题思维
站在命题人视角:如果把 break 条件改成 i%3==0,那么循环会在 i=3 时终止,Sum 只累加 1,答案为 1。或者把 continue 改成 else,逻辑会完全不同。提醒:刷到类似题时,先问自己"命题人想考我什么"——这里不是考数学求和,是考你对循环控制语句的精确理解。