GESP 一级 · GESP 202506 C++ 一级 第 20 题

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

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

题目

将下面 C++ 代码中的 i < 100; i = i + 1 修改为 i < 200; i += i + 1,其输出与当前代码输出相同。( )

int cnt = 0;
for (int i = 0; i < 100; i = i + 1)
    cnt += 1;
cout << cnt;
答案:B

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】for 循环控制流|等差数列求和(原逻辑)|指数增长序列(新逻辑)

🎯 考纲定位(考点定位) GESP 一级涉及基础语法和循环结构。命题人故意把步进改成"自增自加"的指数增长,卡住的是"只读条件不看更新"的惯性思维。

🧠 解题思维(拆解与通法) 原循环 i 从 0 到 99,共执行 100 次,cnt 累加 100。修改后步进为 i += i + 1,序列为 0→1→3→7→15→31→63→127→255,第 8 次更新后 i=255 已不满足 i < 200,循环仅执行 8 次,cnt 累加 8。

🪤 陷阱拆解(命题人的套路) 选项 A 的"正确"是典型陷阱,利用 i < 200 的宽松条件误导考生以为次数变多,却忽略了步进公式使序列呈指数增长。最阴险的细节在于 i += i + 1 的"自增自加"表述,若只背"循环次数 = 阈值"的结论,会完全误判。

🔄 反命题思维(教练升华) 若把条件改成 i < 10,原逻辑输出 10,新逻辑输出 4(0→1→3→7→15 停止),命题人想考你是否真的理解了步进对终止条件的动态影响。

同考点真题

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