GESP 二级 · GESP 202309 C++ 二级 第 23 题

判断题 · 答案 B

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

题目

执行以下 C++ 代码后的输出为 0。

int rst = 0;
for (int i = -100; i < 100; i += 2)
    rst += i;
cout << rst;
答案:B

解题思维

这题乍看是简单的负数累加,但陷阱全在循环边界和项数奇偶性上。拿到题先别急着算,先数数循环到底走了几步,确认首项、末项和步长,再判断正负数是否对称抵消。

常见错误

最容易掉进的坑是直觉误导:觉得负数加正数肯定变小,或者只盯着'rst初始为0'就以为结果是0是错的。其实关键在于循环条件 i<100 决定了末项是 98 而不是 100,导致总项数是 100 个(偶数)。很多人会漏掉这个末项判断,或者把步长当成 1 去数,导致项数算错。还要注意 if(n%i==0) 这种取余陷阱,虽然本题没考,但二级循环题常把取余和整除混着考,千万别把%当成除法。

详细解析(节选)

【考点】for 循环结构|等差数列求和|整数运算逻辑

二级 C++ 考纲里,循环结构与基础运算属于必考题型。命题人放这道题,就是卡住那些只背语法、不练逻辑的选手——看似简单的累加,实际在考你是否能精准追踪循环边界与求和规律。

看到 for 循环先盯三要素:初值 -100、终值<100、步长+2。按顺序把 i 代入:-100, -98, ..., 98。这里有个阴险细节:条件是 i<100 而非 i<=100,所以 100 不会被加进去,98 是最后一个被加进去的数。很多人会漏掉这个末项判断,导致和不为 0。

用等差数列求和公式:首项 -100、末项 98、项数 100,和=( -100 + 98 ) × 100 / 2 = 0。所以输出为 0,本题选 A。这一类题通法是:循环题先数项数、再列首末项、最后套公式或逐项累加验证。

错误选项 B 把'输出为 0'当成错误,恰恰暴露了陷阱:命题人利用'负数相加会变小'的直觉误导你。实际上项数 100 是偶数,正负对称抵消。若把条件改成 i<=100,和=100,答案翻盘;改成 i+=2 但初值 -101,和=-2,答案又变。刷到类似题先问:循环到底走了几步?末项是否包含?步长是否整除?这才是破题关键。

【考频与趋势】 循环结构在题库中是高频考点,共考过 609 题,覆盖 12 个考试级别。从逐年分布看,2023 年考了 77 题,2024 年飙升到 128 题,2025 年达到 158 题,2026 年预测考 161 题,呈现明显的逐年上升趋势。分赛事来看,GESP 二级考了 172 题,占比最高,其次是 GESP 一级 139 题,GESP 三级 89 题。这说明二级考生必须熟练掌握循环边界和步长的细节。

【预测】 基于给定数据,循环结构在 2023-2026 年间考频持续走高,尤其是 GESP 二级。未来可能继续以'循环边界陷阱'或'复杂步长累加'的形式出现,比如结合取余、数组下标越界等。暂无足够依据预测具体题型,但建议重点练习循环条件的细微差别(如<与<=)和步长对项数的影响。

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