GESP 一级 · GESP 202312 C++ 一级 第 7 题

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

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

题目

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

cnt = 0;
for(int i = 1; i < 20; i++){
    if(i%2)
        continue;
    else if(i%3==0 && i%5==0)
        break;
    cnt += i;
}
cout << cnt;
答案:A

考点

控制结构

解题思维

这题考的是循环里的条件判断和流程控制。拿到题先别急着算,脑子里过一遍 i 从 1 跑到 19 时,if(i%2) 会把所有奇数直接跳过,只有偶数才会继续往下走。然后看 else if(i%3==0 && i%5==0),这个条件同时被 3 和 5 整除,也就是 15 的倍数,但 15 是奇数早被跳过了,所以 break 永远触发不了。结论就是:循环老老实实把 2 到 18 之间所有偶数加起来。

常见错误

最容易掉进的坑是以为 else if 会在某个偶数上生效,比如算到 10 或 12 时突然觉得‘能被 3 整除’就停了,或者把 i%2 理解为‘i 是偶数’,结果把奇数也加进去了。还有人会盯着 15 想,觉得 15 能被 3 和 5 整除,break 会在这里触发,忘了 15 是奇数,第一步 if(i%2) 就已经 continue 了,根本进不到 else if。另外,很多人会顺手把 2+4+6+8+10+12+14+16+18 算错,比如漏掉 18 或者把某项加重复,导致答案变成 44 或 20 这种明显偏小的数。记住,这题的逻辑链条是:奇数全过滤掉 -> 偶数全累加 -> break 条件永远不满足 -> 结果就是所有偶数之和。

详细解析(节选)

【考点】循环控制结构|条件判断|continue 与 break 语义

1. 考纲定位

本题考查 GESP 一级「循环控制结构」模块。命题人卡住的是考生对循环流程控制的薄弱环节:很多人知道 for 循环怎么写,但一到多个条件交织、continue/break 混用就乱套,不知道执行到底会走到哪一步。这道题就是典型的‘看似简单实则条件嵌套’,专打只看表面、不推执行流的人。

同考点真题

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