GESP 一级 · GESP 202503 C++ 一级 第 19 题

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

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

题目

删除下面 C++ 代码中的 continue 不影响程序的执行效果。( )

for (int i = 0; i < 100; i++) {
    if (i % 2 == 0) {
        printf("偶数");
        continue;
    }
    else
        printf("奇数");
}
答案:A

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制|continue 语句|语句块执行范围

出品|

【解题思维】看到 continue 先定位它在 if 块内。执行 if 条件后打印偶数,continue 让循环直接跳到下一次迭代,else 分支根本不会执行。删掉 continue 后,if 块内仍只有 printf,else 依然只对应奇数分支——偶数时直接结束本次循环,奇数时走 else 打印。本质是判断"continue 后面是否有有效代码",这类题通法就是检查 continue 是否真能跳过后续语句。

【陷阱拆解】选项 B 的陷阱在于把 continue 和 break 混淆,以为去掉它会进入 else 分支——其实 else 本来就只对应奇数,偶数时 if 成立直接执行 continue 跳过 else。更隐蔽的坑是认为 continue 必须存在才能"结束本次循环",但 continue 只是跳过后续语句,这里后续已无语句。命题人刻意把 continue 放在 printf 后,诱导你联想"跳过 else",实则 else 本就不执行。

【反命题思维】若把 if 条件换成 i % 3 == 0,删除 continue 后,i=3 时会执行 else 分支打印"奇数",错误输出。若把 continue 移到 if 块外,它始终跳过整个循环体,输出全变"偶数"。这类题本质是考 continue 的"作用域",刷到类似题先问"continue 后面有没有要跳过的语句"。

同考点真题

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