GESP 一级 · GESP 202509 C++ 一级 第 10 题

选择题 · 答案 A

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

题目

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

int i;
for(i = 1; i < 5; i++){
    if(i % 3 == 0)
        break;
    printf("%d#",i);
}
if(i > 5) printf("END\n");
答案:A

解题思维

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

常见错误

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

详细解析(节选)

【考点】for 循环|条件语句|break 语句

解题思维:先逐轮推演。i=1 时 1%3≠0,打印"1#";i=2 时 2%3≠0,打印"2#";i=3 时 3%3==0 触发 break,循环终止且 i 保持为 3。跳出后判断 i>5,3>5 为假,故不输出"END"。最终输出"1#2#"。

陷阱拆解:B 错在默认循环会继续执行到 i=4 甚至输出"END",忽略了 break 立即终止循环;D 错在完全无视 break 且误判 i>5,把循环看成无条件执行。最阴险处在于 break 后 i 的值仍为触发条件的那个数(3),许多学生凭直觉以为"结束"意味着 i 会自增到 4,实际并非如此。

反命题思维:若把判断改为 i%2==0,break 会在 i=2 时触发,输出将只有"1#";若把末尾条件改为 i>=5,则 3>=5 仍为假,输出不变。这类变式常用来检验你是否真正理解循环控制流与条件判断的先后顺序。

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