GESP 一级 · GESP 202412 C++ 一级 第 12 题

选择题 · 答案 C · 考点:循环控制

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

题目

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

int cnt;

cnt = 0;
for(int i = 1; i < 10; i++)
    cnt += i++;

cout << cnt;
cout << endl;
答案:C

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制|自增运算符|变量作用域

本题考查循环体中的自增运算符与累加逻辑,属于 GESP 一级基础知识点。命题人通过 i++ 后置递增制造"先加后变"的陷阱,卡住的是对运算符优先级和求值顺序理解不牢的考生。

看到 i++ 要立刻反应:右值先参与运算,左值再自增。循环共执行 9 次(i=1~9),每次把当前 i 值加到 cnt 上,即 cnt=1+2+…+9=45。i 递增到 10 才终止循环,不影响累加结果。

错误选项 A 把 i++ 当成前缀递增,误算成 10~9 累加得 54;B 看似正确但混淆了循环次数;D 完全忽略累加逻辑。最阴险的是选项 C,把 i 当作只累加到 5,源于误以为 i 从 1 开始只执行 5 次——这暴露了对循环边界条件的模糊。

反命题视角:若将 i++ 改为++i,cnt 将变为 10+9+…+1=55;若循环条件写成 i<=10,则 cnt=55。刷到这类题先问"命题人想考我什么",警惕"先加后变"与"先变后加"的微妙差别。

同考点真题

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