GESP 一级 · GESP 202512 C++ 一级 第 19 题

判断题 · 答案 B · 考点:循环控制

← 整套速查表 GESP 一级 全部真题

题目

下面 C++ 代码中的 i > -10; i-- 改为 i < 10; i++ 执行结果相同。( )

int tnt = 0;
for (int i = 0; i > -10; i--){
    if (i < 0)
        i = -i;
    tnt += i;
}
cout << tnt;
答案:B

考点

循环控制

解题思维

答案B。注意C++运算符语法:算术运算符(+-*/%)、自增自减(++--)都有正确的书写格式。a++b属于语法错误。

常见错误

C++运算符必须使用正确的语法格式。a++b缺少操作数之间的运算符,是非法的。

详细解析(节选)

【考点】循环控制条件|循环变量变化方向

解题思维:看到 for 循环先盯"条件表达式真假"和"循环变量增减方向"。原题 i 从 0 开始,条件 i>-10 永远为真,i 不断减 1,循环体里 i<0 时取反,累加的都是非负数;改后 i 从 0 开始,条件 i<10 在 i 到 9 时仍为真,i 不断加 1,循环体里 i 始终≥0,不会触发 i=-i,累加的都是正数。总次数都是 11 次,但每次加的值完全不同,执行结果自然不同。

陷阱拆解:错误选项 A 就是利用"只看条件真假"的惯性思维——考生往往把循环条件当成静态判断,忽略了循环变量在每次迭代中的变化趋势。命题人故意把条件改成看似"更宽松"的 i<10,让人误以为"次数多了结果会变大",实际上次数没变,只是累加对象变了。如果你只背"循环条件为真就执行"的结论,就会掉进这个陷阱。

反命题思维:如果把题目改成"判断循环体执行次数是否相同",答案就会变成"正确",因为 i 从 0 到 -10 和从 0 到 9 都执行 11 次;如果把循环体里的 i=-i 去掉,原题 i 会一直减到 -10,累加结果变成 0,改后 i 一直加到 9,累加结果变成 45,执行结果依然不同。刷到类似题时,先问自己"命题人想考我循环条件的真假还是循环变量的增减方向"。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断