for (i = 0; i < 100; i += 2); 语句中变量 $i$ 的取值范围是 $0$ 到 $99$。
这题考的是 for 循环变量取值范围,别被空循环体骗了。拿到题先按执行流程走一遍:初值 i=0,每次步进 i+=2,条件 i<100 时进入,步进后 i 变成 2、4、…直到 100 时条件不满足退出,所以 i 会取到 100,范围是 0 到 100,答案选 B。
学生最容易错选 A,以为 i 只取到 98 或 99。常见误区有三:一是把“循环终止时 i 的值”当成“i 从未达到过”,忽略了条件判断在步进之后进行;二是看到循环体为空就以为变量没被更新,其实 i+=2 是循环控制的一部分,与循环体无关;三是凭感觉数次数,没写出完整执行序列,导致误判取值范围。
GESP 二级 C++ 程序设计模块。命题人卡住的是对循环变量“取值”与“迭代次数”的混淆,以及空循环体下变量作用域的理解。很多学生看到 for 循环后面没有花括号,就下意识认为“没干活,变量肯定没变”,结果掉进坑里。
按 for 语法拆解:初始化 i=0、条件 i<100、步进 i+=2、循环体为空。执行流程:0 时满足条件进入,执行后变成 2,再满足条件进入,执行后变成 4,……直到变成 100 时条件不满足,循环结束。因此 i 依次取 0,2,4,…,100,范围是 0 到 100,不是 0 到 99。通法:遇到循环变量取值问题,先写出完整的执行序列,而不是凭感觉数次数。
错误选项把“循环终止时 i 的值”误认为“i 从未达到过”,忽略了条件判断在步进之后进行。空循环体让考生以为“没有操作就不会产生新值”,但 i 的更新是循环控制的一部分,与循环体无关。题目用“取值范围”这种绝对化表述,正是为了诱导只记结论不看流程的考生。
如果把步长改成 i++,i 同样会走到 100,范围仍是 0 到 100;若改成 while(i<100){i+=2;} 且 i 初始为 0,结果相同。刷到类似循环题,先问:循环变量初始化是什么?条件何时为假?步进如何影响变量?空循环体是否影响变量?
循环结构在题库中占比很高,共 609 题,覆盖 12 个级别。逐年分布看,2023 年 77 题、2024 年 128 题、2025 年 158 题、2026 年 161 题,呈现明显的逐年上升趋势,说明命题组对循环细节的考查越来越重。分赛事看,GESP 二级考了 172 题,是循环考点的重镇,本题就出自 GESP 二级。控制结构整体考了 429 题,其中 GESP 二级占 133 题,循环作为控制结构的核心,权重很大。
基于数据,未来 GESP 二级、三级乃至四级继续加大循环细节命题概率很高,尤其是“空循环体”“取值范围”“步长与终止条件配合”这类陷阱题。暂无足够依据预测具体年份或题型变化,但建议把 for/while 循环变量取值与迭代次数彻底搞清,这是硬通货。