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

选择题 · 答案 D · 考点:控制结构

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

题目

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

int i;
for (i = 0; i < 10; i++){
    if (i % 3 == 0)
        continue;
    cout << "0" << "#";
}
if (i >= 10)
    cout << "1" << "#";
答案:D

考点

控制结构

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制结构(for 与 continue)|变量作用域与循环结束值判断|条件输出

考纲定位:本题位于 GESP 二级“循环与分支”模块。命题人刻意在循环后检查 i 的值,卡住大量考生对循环变量终值的误解——以为循环结束后 i 会重置或无法访问。

解题思维:i 从 0 到 9 循环,i%3==0 时 continue,故 i=1,2,4,5,7,8 各输出一次"0#",共 6 次;循环结束时 i=10,满足 if(i>=10) 输出"1#"。关键:continue 仅跳过当次迭代,后置 if 依赖循环变量终值。

陷阱拆解:选项 A 漏掉后置输出,误以为 continue 让循环提前结束;B 多一个"0#",错误计为 7 次;C 完全忽略后置 if,以为 i 仍小于 10。最阴险的陷阱是循环后直接判断 i≥10——若只盯着循环内输出,必漏掉"1#"。

反命题思维:若将循环条件改为 i≤10,则 i 最终为 11,后置 if 仍成立,但循环会多执行一次 i=10 且可能输出额外"0#";若把 continue 改为 break,循环提前退出,i 终值变小,后置 if 条件可能失效。刷到此类题,先问自己“循环结束后 i 等于几?”

同考点真题

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