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

选择题 · 答案 A

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

题目

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

num = 0;
while (num <= 5){
    num += 1;
    if (num == 3)
        continue;
    printf("%d#", num);
}
答案:A

解题思维

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

常见错误

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

详细解析(节选)

【考点】while 循环|continue 语句|printf 输出

1. 🎯 考纲定位(考点定位) GESP 一级"循环与控制结构"必考基础题。命题人卡住的是考生对 continue 执行流程的盲区——很多人以为 continue 只是跳过 printf,却忘了它会让本次循环直接结束,连最后的 num += 1 都不会再执行。

2. 🧠 解题思维(拆解与通法) 初始化 num=0,循环条件 num<=5。每次进循环先 num+=1,再判断是否等于 3:等于 3 时 continue 直接跳过 printf;不等于 3 才打印。当 num 从 2 变到 3 时触发 continue,所以 3 不输出;当 num 从 5 变到 6 时打印 6#,此时循环条件 6<=5 为假,循环结束。最终输出 1#2#4#5#6#。

3. 🪤 陷阱拆解(命题人的套路) 选项 B 漏掉末尾 #,是忘记每次 printf 都带 #;选项 C/D 误把 3 输出来,是根本没理解 continue 会跳过后续代码;更阴险的是很多人以为 num 到 6 就停了,其实循环条件 num<=5 是在 num+=1 之后判断的,所以 num=6 那轮也会执行一次 printf。

4. 🔄 反命题思维(教练升华) 命题人把 continue 放在 printf 之前,就是专门测试你对循环体内语句执行顺序的敏感度——如果你只背结论,不看代码逻辑,就会掉进"3 也要输出"的坑里。

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