下面 C++ 代码执行后的输出是( )。
int tnt = 0;
for (int i = 1; i < 5; i += 2)
tnt = tnt + i;
cout << tnt;这道题考的是 for 循环的步进机制和累加逻辑,拿到题先别急着算,先列出 i 到底取哪些值:1,3,5…再看 i<5 这个条件怎么卡住循环,最后按顺序把 tnt 累加出来。
最容易栽跟头的就是忽略 i+=2 这个步进,下意识以为 i 会取 1,2,3,4,那样就会算成 10 选 D;或者只执行了一次循环,把结果当成 1 或 2 选 A/C;还有把 i<5 误判成 i<=5,导致多算一次变成 9。其实只要记住:循环变量取值是等差数列,步进决定了它跳过的数字,条件判定在步进之后,所以 i=5 时条件不成立,循环体只执行两次。
考点定位:GESP 一级 C++ 第 6 章“循环结构”,考查最基础的 for 循环语法。命题人卡住的是“循环变量步进与终止条件耦合”这个认知盲区——绝大多数考生会忽略 i+=2 带来的非连续取值,下意识按自然数 1-4 去累加。
解题思维:看到 for 循环先抓三个要素:初值(1)、条件(i<5)、步进(i+=2)。i 的取值序列是 1→3→5(终止),只执行两次循环体。tnt 初始为 0,第一次 tnt=0+1=1,第二次 tnt=1+3=4。输出 4,选 B。通法:循环累加题永远先列出循环变量所有取值,再按顺序执行语句——这是处理任何循环类问题的通用脚手架。
陷阱拆解:A 选项 2 是只执行了一次循环(误判 i+=2 后 i 直接超 5);C 选项 9 是误把 i 当成 1,2,3,4 全循环(忽略了步进);D 选项 10 更离谱,是假设 i 取到 5 且全部累加(双重错误)。最阴险的是“i<5”这个条件——它允许 i=3 进入循环,但一旦 i 变成 5 就立即退出,这个边界点必须精确计算。只背“for 循环是累加”而不理解步进机制,必栽跟头。
反命题思维:如果把条件改成 i<=5,循环会执行三次,tnt 变成 9(C 选项),命题人就考了“等于号能否进入循环”这个经典坑点。如果步进改成 i+=1,结果变成 10(D 选项),那就变成考“循环次数与步长的关系”。刷到任何 for 循环题,先问自己“i 到底取哪些值”,而不是急着动笔。
考频趋势:基础语法类题目在题库中占比极高,共考过 1295 题,覆盖从 2008 到 2026 的所有年份,其中 2023 年 287 题、2024 年 413 题、2025 年 401 题,说明这类概念题是高频考点。控制结构相关考题 429 题,循环结构考题 609 题,且 GESP 一级在循环结构中占了 139 题,占比最高,说明一级考试特别侧重基础循环的理解与模拟。
预测:基于上述数据,未来 GESP 一级及二级考试中,类似“非连续步进 for 循环”的题目仍会高频出现,命题人可能会在条件边界(如 i<5 与 i<=5 的区别)、步进方向(i+=2 与 i-=2)或循环体内嵌套赋值上继续挖坑。暂无足够依据预测更复杂的变体(如带 break/continue 或循环变量在条件中自增),但可以肯定的是,只要掌握“先列取值、再模拟执行”的通用思路,这类题基本不会丢分。