GESP 一级 · GESP 202512 C++ 一级 第 18 题

判断题 · 答案 B

← 整套速查表 GESP 一级 全部真题

题目

下面 C++ 代码执行后将输出 0。( )

int i;
for (i = 0; i < 10; i++)
    if (i % 3 == 0)
        continue;
    else
        break;
cout << i;
答案:B

解题思维

答案B。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。

常见错误

逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。

详细解析(节选)

【考点】for循环|continue与break控制|循环变量修改

1. 🎯 考纲定位 本题考查GESP一级"循环控制"模块中for循环与分支语句的综合运用。命题人专门设计这道题,就是要卡住考生对continue和break作用域的混淆——很多人以为continue会跳过整个循环体,实际上它只是跳过本次循环剩余部分,循环变量仍会递增。

2. 🧠 解题思维 代码执行流程:初始i=0,i<10成立;判断i%3==0为真,执行continue,跳过break后直接进入循环递增,i变为1;再次判断i%3==0为假,执行break,循环终止;此时i=1,输出1。因此题目说输出0是错误的。

3. 🪤 陷阱拆解 错误选项A的陷阱在于:考生容易把continue理解为"结束循环",从而误以为i=0就退出,输出0。命题人利用了这个常见误区,将continue和break放在同一分支结构中,让考生必须准确区分"跳过本次"和"跳出循环"的区别。另外,循环变量i在continue后仍会递增,这一点容易被忽略,导致误判。

4. 🔄 反命题思维 如果把条件改写成if(i%3!=0)continue;else break;,则i=0时满足continue条件,i=1时break,输出1;若改成if(i==0)break;,则循环立即终止,输出0。所以判断这类题的关键是模拟循环每一步的执行,而不是凭直觉。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断