GESP 一级 · GESP 202603 C++ 一级 第 24 题

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

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

题目

执行下面的 C++ 代码后将输出 $2500$。

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

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制|自增运算符|语句执行顺序

🎯 考纲定位 本题考查《GESP 大纲》一级"循环与条件语句"模块,核心卡点是自增运算符的副作用与执行顺序。命题人专盯死记"i++"等于"++i"的学生,用双重自增把简单求和变成陷阱题。

🧠 解题思维 for 头部的 i++ 在循环体执行后运行,体内 i++ 在加法后执行,因此每轮 i 实际自增两次。循环条件 i<100 时,进入的 i 值依次为 1,3,5,…,99,共 50 个奇数。奇数求和公式 n²,得 50² = 2500,输出正确。

🪤 陷阱拆解 A 错在忽略双重自增:若误以为 i 只加一次,会算成 1+2+…+99=4950。B 错在误判先增后加:把 i++ 当成++i,会漏掉奇数项。最阴险的是 for 头部的 i++ 与体内 i++ 叠加,制造"只加奇数"的错觉,谁没细看执行顺序谁就掉坑。

🔄 反命题思维 把体内改为 cnt += ++i; 则每轮 i 先自增再参与加法,序列变成 2,4,6,…,100,和为 5100;循环条件改为 i≤100 会多加一次 100。刷到这类题,先问"自增在何时发生?"再决定答案。

同考点真题

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