GESP 二级 · GESP202609 C++ 二级 第 23 题

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

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

题目

如下 C++ 代码执行后,输出值为 0 。

int cnt, i, j;
cnt = 0;
for (i = 0; i < 10; i++) {
continue;
for (j = 0; j < i; j++)
cnt += 1;
}
cout << i * cnt;
答案:A

考点

循环控制

解题思维

看到题先想循环控制语句的作用,尤其是 continue 会跳过后续语句。然后看循环头 i 的初始化、条件、增量。最后看变量 cnt 的初始值。这类题的通法是逐行模拟执行,关注循环变量的变化。

常见错误

选项陷阱在于误以为 continue 只跳过内层循环,或者认为内层循环至少执行一次。易错原因是忽略了 continue 会直接跳出当前循环体,导致内层循环体完全不被执行。

详细解析(节选)

1. 考纲定位

本题考查 GESP 二级大纲中"循环控制语句"与"循环执行流程"两个核心考点。命题人放这道题,就是要卡住那些只背语法、不模拟执行的考生——他们往往误以为 continue 只跳过内层循环,或者认为内层循环至少执行一次,从而错误判断 cnt 的值。

2. 解题思维

逐行模拟执行:i 初始为 0,进入循环体后立刻遇到 continue,直接跳至 i++,i 变为 1;再次循环,continue 仍生效,i 变为 2……直到 i 达到 10,循环结束。整个过程中内层 for 循环体从未被执行,cnt 保持 0。最终输出 i * cnt = 10 * 0 = 0。

3. 陷阱拆解

逐个选项拆解:A 正确,因为 continue 会直接跳出当前循环体,内层循环体完全不被执行;B 错误,它假设内层循环至少执行一次,这是典型的"语法记忆型"误区——考生只背了 continue 的语法,却忘了它在循环体中的实际位置(在 i++ 之前)。

4. 反命题思维

反命题思维:如果把 continue 去掉,内层循环会执行,cnt 会累加到 45(0+1+2+...+9)。如果把 cnt 初始化为 1,输出会变成 10。如果把 i 的循环条件改成 i < 5,输出会变成 5 * 0 = 0。

同考点真题

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