将下面 C++ 代码中的 i < 10 修改为 i <= 10,其执行后输出相同。( )
int n, i;
n = i = 0;
while (i < 10){
n += i;
i += 1;
}
cout << n;答案B。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】循环结构|条件判断|累加求和
【考纲定位】本题对应 GESP 一级"算法模块"中循环控制部分。命题人专门卡住考生对"while 先判后执"这一执行顺序的敏感度——绝大多数人背熟了循环骨架,却对条件边界不敏感,改个符号就以为结果不变。
【解题思维】while 循环先判断条件再执行。原条件 i < 10 允许 i 取 0~9 共 10 次,累加后 n=45,i 变为 10 时退出;改后 i <= 10 会多执行一次 n += 10,n 变成 55。因此输出不同。通法:改循环条件时,先模拟执行次数,再看是否影响累加/计数。
【陷阱拆解】错误选项 A 的设计逻辑是利用"代码行数没变"的错觉,误以为条件改变不影响结果。最阴险细节是 n 初始为 0,循环体里 n += i 相当于求和 0~9 与 0~10 的区别。如果你只背结论,就会掉进这个陷阱。
【反命题思维】命题人视角:如果把 i <= 10 改为 i < 11,输出不变;改为 i <= 9,输出变为 36。刷到类似题时,先问自己"循环体执行了哪些值"。