GESP 一级 · GESP202609 C++ 一级 第 25 题

判断题 · 答案 B · 考点:循环控制

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

题目

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

int ans = 0;
for (int idx = 1; idx <= 7; idx += 2) {
if (idx == 5)
continue;
if (idx * idx > 30)
break;
ans += idx;
}
cout << ans;
答案:B

考点

循环控制

解题思维

模拟循环执行流程,注意idx递增步长为2,循环内先判断continue再判断break,ans累加发生在两个条件之后。关键要逐次代入idx值跟踪状态变化。

常见错误

A选项陷阱在于学生容易忽略continue的跳过效应,误以为5会被累加;或者把break条件误读为idx>30而非idx*idx>30。循环边界idx=7时idx*idx=49>30触发break,但idx=5时continue跳过累加,这两处细节决定最终结果。

详细解析(节选)

1. 考纲定位

本题考查GESP一级大纲中"循环结构"与"条件语句"模块。命题人卡住的是学生是否真正理解continue与break的语义差异——绝大多数考生会机械执行循环却忽略continue的跳过效应,或者在break条件判断上出现代数错误。

2. 解题思维

看到题先模拟循环:idx从1开始每次+2,循环体内按顺序执行三个语句。逐次代入:

最终ans=4,题目断言输出3,故判断为错误。

同考点真题

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