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

选择题 · 答案 A

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

题目

如下 C++ 代码可以执行,其输出是( )。

int i;
for (i = 1; i < 5; i++)
    if (i % 2 == 0) {
        continue;
        cout << i << "#";
    }
cout << i << "END#";
答案:A

解题思维

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

常见错误

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

详细解析(节选)

【考点】for循环|continue语句|cout输出

本题考查GESP一级《循环与控制流》模块,核心考点是for循环中continue语句的跳转机制。命题人专盯"死代码"陷阱——continue后紧跟cout看似有用,实则永远执行不到,90%考生会误以为能输出#。i在for前声明,循环内i=1,所以i=1时条件不满足,直接跳过。

按顺序模拟:i=1(奇)跳过,i=2(偶)触continue,i=3(奇)跳过,i=4(偶)触continue,循环结束i=5。最终输出5END#。通法:遇到continue/return/break后紧跟的代码,直接判定为"死代码",无需执行。

选项A正确。选项B是最大陷阱——误以为continue会执行后续cout。选项C/D试图混淆i的终值(循环结束i=5,未执行cout)。命题人利用"未初始化变量"和"死代码"双重隐蔽性,专杀只看结论不追流程的考生。

若把continue换成break,i=2和i=4时都会输出#,答案变2#4#END#。刷到类似题先问:这个语句真能执行吗?continue直接跳回循环头,后面代码永远到不了。

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