GESP 二级 · GESP 202503 C++ 二级 第 21 题

判断题 · 答案 A · 考点:循环控制

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

题目

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

int i;
for (i = 0; i < 10; i++)
    continue;
cout << i << endl;
答案:A

考点

循环控制

解题思维

答案A。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。

常见错误

整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。

详细解析(节选)

【考点】循环控制|语句执行流程|变量作用域

解题思维:看到 for 循环先定位三个关键节点——初始化 i=0、条件 i<10、增量 i++。循环体内只有 continue,这意味着每次迭代会立即跳过后续语句,但不会跳过增量表达式。依据 C++ 标准,continue 仅终止本次循环体的剩余执行,循环控制结构(条件判断与步进)依然完整执行。因此循环会持续运行直到 i 达到 10,此时条件 i<10 为假,循环终止,cout 输出 i 即 10。这类题的通法是:遇到循环中包含 continue/break 时,必须区分"循环体语句"与"循环控制语句",增量表达式属于后者,永远在 continue 之后执行。

陷阱拆解:选项 B 的错误源于对 continue 的语义误读——把"跳过循环体"等同于"跳过整个循环"。命题人特意将循环体设为空(仅 continue),利用考生"跳过即不执行"的直觉,诱导其认为 i 不会递增。最阴险的细节在于 i 声明在循环外,作用域覆盖整个循环,很多人误以为 continue 会局部重置 i。若只背结论而不理解执行流,必然选错。

反命题思维:若把 continue 换成 break,循环在 i=0 时立即终止,输出 0;若去掉 continue,输出 10;若将条件改为 i<=10,循环会多跑一次,输出 11;若将循环体改为 i++,输出 5。这类题的核心不是记忆 continue 的作用,而是判断"跳过的是循环体还是循环控制"。遇到类似题先问自己:continue 之后还执行什么?

同考点真题

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