GESP 二级 · GESP 202312 C++ 二级 第 21 题

判断题 · 答案 B

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

题目

执行以下 C++ 代码后将输出 $0$。( )

Sum = 0;
for (i = -500; i < 500; i++)
    Sum += i;
cout << Sum;
答案:B

解题思维

这题别急着算数列,先盯紧代码合法性:Sum没声明、i没声明,编译直接挂,根本跑不到输出那一步。

常见错误

学生最容易掉进‘数学直觉陷阱’,看到i从-500跑到499,立刻脑补正负抵消等于0,就选A了。但命题人就是爱考‘代码能不能跑’这个前提。还有的人会纠结循环边界,以为i<500包含500,或者把Sum当成已定义的全局变量,忽略C++必须显式声明的规则。其实只要变量没定义,程序在编译期就报错,连运行都不会发生,更别提输出结果了。

详细解析(节选)

【考点】变量声明与初始化|循环边界条件|程序可编译性判断

1. 命题人怎么挖坑

GESP二级这类题,表面看是考等差数列求和,其实是考‘代码合法性’这个前置条件。命题人故意把Sum和i写成了未声明的变量,就是想卡住那些只背‘对称区间和为0’口诀、却忽视C++语法规则的学生。很多人会下意识想:‘i从-500到499,首尾抵消,Sum肯定是0啊!’于是选A。但C++编译器不会陪你做数学题——变量没声明,编译直接报错,程序根本跑不起来,自然也就不会输出任何值,更不可能输出0。

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