下面 C++ 代码执行后的输出是( )。
int loopCount = 0;
for (int i = 1; i < 5; i += 2)
loopCount += 1;
cout << (loopCount);答案B。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】for 循环控制|等差步长计数|循环终止条件
考纲定位:本题出自 GESP 二级"程序流程控制"模块,核心考察 for 循环的初始化、条件判断与更新表达式。命题人专门设置 i+=2 的步长,卡住绝大多数考生"循环次数只跟终值有关"的直觉误区。
解题思维:看到 for 循环先拆解三部分——初始化 i=1、条件 i<5、更新 i+=2。关键观察是步长为 2,i 从 1 开始,到 5 停止,中间经过 1 和 3 两个值,故循环执行 2 次。通法:等差步长循环次数 = ceil((limit - start)/step),当 start < limit 时成立。
陷阱拆解:选项 A(1)误以为只执行一次,可能把 i<5 当成 i<=5 或忽略步长;选项 C(3)误以为步长是 1,或把 i 从 0 开始算;选项 D(5)误以为循环次数等于 i 的终值,或把 loopCount 当成 i 本身。如果你只背"循环次数 = 终值 - 初值"这种结论,就会掉进这些坑。
反命题思维:命题人若把 i 改成 0,步长改成 1,条件改成 i<=5,答案就会变成 6;若把 i+=2 改成 i+=1,答案变成 4。刷到类似题先问自己"循环变量怎么变?条件怎么变?步长影响几次?"