执行下面的 C++ 代码后将输出 $2500$。
int cnt = 0;
for (int i = 1; i < 100; i++)
cnt += i++;
cout << cnt;答案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。刷到这类题,先问"自增在何时发生?"再决定答案。