下面 C++ 代码执行后的输出为 10。
int cnt = 0;
for (int i = 1; i < 10; i++) {
cnt += 1;
i += 1;
}
cout << cnt;这题考的是 for 循环执行顺序,别被代码行数迷惑。拿到题先模拟:i 初始为 1,循环体里 i+=1,for 末尾又 i++,每轮 i 实际增 2。只要记住“条件→体→增量”三步走,就能一眼看出循环只跑 5 次。
学生最容易掉进两个坑:一是死记“for 循环 i 从 1 到 9 共 9 次”,忽略了循环体里还有 i+=1,导致误以为 cnt 会累加 9 次选 A;二是把 for 的 i++ 当成普通语句,没意识到它是在循环体执行完后才运行,从而算错增量步长。其实命题人就是把“循环次数”偷换成“cnt 累加次数”,让你以为 i 只增 1,结果每轮 i 增了 2,循环直接折半。
【考点】循环控制|for 循环执行顺序|变量作用域
考纲定位:本题考查循环控制与变量作用域,对应 GESP 大纲中“循环结构”模块,通常位于二级或三级。命题人卡住的是对 for 循环执行顺序(条件 - 体 - 增量)的机械记忆,而非真正理解循环变量的更新时机。
解题思维:看到题先想循环变量 i 的初始值和更新规则。关键观察是 for 循环的“条件判断 → 循环体 → 增量表达式”顺序,且循环体中还有 i += 1。每一步推理依据是 C++ 标准中 for 语句的语义:先检查条件,再执行循环体,最后执行增量。这一类题的通法是“模拟执行法”:在纸上按顺序写 i 和 cnt 的变化,别被代码行数迷惑。
陷阱拆解:选项 A 正确,利用的是“以为 i++ 和 i += 1 只执行一次”的误区;命题人偷换了“循环次数”与“cnt 累加次数”的概念。最阴险的细节是循环体里还有一句 i += 1,与 for 的 i++ 叠加,导致每轮 i 实际增 2,循环只跑 5 次。如果你只背“for 循环 i 从 1 到 9 共 9 次”,就会掉进这个陷阱。
反命题思维:如果把 i += 1 换成 i *= 2,循环次数会骤减(1→2→4→8→16 终止),cnt 变成 4;换成 i-- 则可能死循环。刷到类似题时,先问自己“命题人想考我什么”,别只看表面代码。
考频趋势与预测:基础语法在题库中占比极高(1295 题),循环结构更是高频考点(609 题),其中 GESP 二级就考了 172 次。循环控制类题目虽总数不多(仅 5 题),但近五年在 GESP 二级出现 2 次(2023 年 2 题、2024 年 1 题),说明命题人正逐步加强对“循环体内修改循环变量”这一细节的考查力度。基于此,未来 GESP 二级及三级在循环控制上仍会保持较高频率,尤其喜欢在 for 循环中嵌套自增/自减操作来制造“看似 9 次实际 5 次”的陷阱。暂无足够依据预测是否会扩展到 while 循环或更复杂的嵌套结构,但建议重点复习 for 循环的三步执行顺序及变量作用域。