GESP 二级 · GESP 202506 C++ 二级 第 10 题

选择题 · 答案 A · 考点:循环控制

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

题目

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

int i;
for(i = 1; i < 10; i++) {
    if(i % 3 != 0) {
        printf("A#");
        continue;
    }
    else
        break;
    printf("0#");
}
if(i == 10) cout << "1";
答案:A

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制流|条件分支执行

考纲定位:本题对应 GESP C++ 二级"循环结构与条件分支"模块,卡住的是考生对 continue 与 break 执行流程的混淆——绝大多数人误以为 continue 会跳过本次循环剩余代码,却忽略了 break 会立即终止循环并保留当前循环变量的值。

解题思维:看到题先想循环变量的初始值和更新规则。i 从 1 开始,每次循环末尾 i++。关键观察是 break 在 i=3 时触发,循环体后续语句(包括 printf 和 i++)不再执行,因此循环结束时 i 仍为 3,不满足 if(i==10)。通法是:遇到循环内 break 后,循环变量保持当前值,后续条件判断基于该值。

陷阱拆解:选项 B 和 D 错误地认为 continue 后 i 会继续增加,忽略了 break 会提前终止循环;选项 C 错误地认为 i 会变成 10,忽略了 break 后循环变量不变;最阴险的细节是 if(i==10) 这个判断,考生容易误以为循环结束后 i 是 10,实际是 3。命题人利用的是对循环变量更新机制的误解。

反命题思维:如果把 break 改成 continue,循环会继续到 i=9,输出会不同;如果把判断条件改成 i%2,循环会在 i=2 时 break,输出也不同。提醒刷到类似题时,先问自己"命题人想考我什么",是考察循环控制流还是条件判断。

同考点真题

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