执行以下 C++ 代码后将输出 $0$。( )
Sum = 0;
for (i = -500; i < 500; i++)
Sum += i;
cout << Sum;这题别急着算数列,先盯紧代码合法性:Sum没声明、i没声明,编译直接挂,根本跑不到输出那一步。
学生最容易掉进‘数学直觉陷阱’,看到i从-500跑到499,立刻脑补正负抵消等于0,就选A了。但命题人就是爱考‘代码能不能跑’这个前提。还有的人会纠结循环边界,以为i<500包含500,或者把Sum当成已定义的全局变量,忽略C++必须显式声明的规则。其实只要变量没定义,程序在编译期就报错,连运行都不会发生,更别提输出结果了。
【考点】变量声明与初始化|循环边界条件|程序可编译性判断
GESP二级这类题,表面看是考等差数列求和,其实是考‘代码合法性’这个前置条件。命题人故意把Sum和i写成了未声明的变量,就是想卡住那些只背‘对称区间和为0’口诀、却忽视C++语法规则的学生。很多人会下意识想:‘i从-500到499,首尾抵消,Sum肯定是0啊!’于是选A。但C++编译器不会陪你做数学题——变量没声明,编译直接报错,程序根本跑不起来,自然也就不会输出任何值,更不可能输出0。