在下列代码的横线处填写( ),可以使得输出是“1357”。 
这题一眼看出要输出奇数序列,核心就是看循环变量 i 每次到底变没变、怎么变。拿到题先问:i 初始是 1,要变成 3、5、7,每次必须加 2,而且必须真正赋值给 i,否则循环条件永远成立或增量不对。
最容易栽跟头的是选 B,只盯着'加 2'这个数值,却忘了 C++ 里 i+2 只是临时计算结果,不会修改 i 的值,导致死循环;其次是 A,很多人以为++ 就是加 2,其实++ 是加 1,输出会变成 1234567;还有 C 项 i*=2 会让 i 指数爆炸,完全跑偏。题目故意把'表达式'和'赋值运算符'混在一起考,就是想看你是否真正理解副作用。
【考点】循环控制|表达式求值|赋值运算符
考纲定位:本题出自 GESP 二级 C++ 组'循环与条件'模块,核心卡点是'循环体内表达式的副作用是否生效'。命题人专门用这道题检验学生是否真正理解'++'与'+='的区别,以及表达式与赋值语句的差异。这是 GESP 二级里高频出现的'陷阱型'选择题,近五年考频数据看,基础语法在题库里占比极大(共 1295 题),逐年爆发式增长:2023 年 287 题、2024 年 413 题、2025 年 401 题,说明这类'概念辨析'题是命题人最爱挖坑的地方。循环控制这一小类虽然总量只有 5 题,但在 GESP 二级里占了 2 题,属于'小考点、高区分度',往往就是压轴选择题的胜负手。
解题思维:看到循环体里 i 参与条件判断与输出,第一反应是'每次循环 i 的增量是多少'。要输出 1、3、5、7,显然每次增加 2。但必须确认 i 是否真的被更新:C++ 中 i+2 只是临时值,不改变 i;只有 i+=2 或 i++ 才能生效。因此正确选项只能是 D。
陷阱拆解:A 项 i++ 看似合理,实则每次只加 1,循环会输出 1234567;B 项 i+2 是纯表达式,i 永远保持初始值 1,循环条件永远满足,陷入死循环;C 项 i*=2 会让 i 指数增长(1,2,4,8...),与目标序列完全不符。题目最阴险的细节是'赋值运算符与表达式混用'——很多考生只背'加 2'就选 B,忘了 C++ 里+=才是赋值。这也是为什么这类题在历年 GESP 二级考试中,正确率往往低于 40%,因为它考的不是计算能力,而是对语言机制的深刻理解。
反命题思维:如果把循环条件改成 i<=8,D 项会输出 13579,不再匹配;若把初始值改为 0,D 项输出 02468。刷到类似题先问自己:命题人想考我'表达式副作用'还是'循环边界'?
考频与趋势:从数据看,'基础语法'是绝对主力,2024-2025 两年合计超过 800 题,说明命题趋势是'重概念、轻计算',单纯套公式的题越来越少,而像本题这样依赖语言细节的题越来越多。'运算符与表达式'共 261 题,其中 GESP 二级占 70 题,占比近 27%,属于二级考试中的'必考板块'。'循环控制'虽少,但 GESP 二级占 2 题,说明只要涉及循环变量更新,几乎必考。
预测:基于近年数据,未来 GESP 二级继续加大'概念辨析'权重,类似'++vs+=vs表达式'的题目仍会高频出现,且可能会在更复杂的嵌套循环或数组下标场景中考查。暂无足够依据预测具体年份或题型变体,但方向明确:死记硬背语法糖必死,理解副作用才是王道。