下面 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。注意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,执行结果依然不同。刷到类似题时,先问自己"命题人想考我循环条件的真假还是循环变量的增减方向"。