GESP 二级 · GESP202609 C++ 二级 第 22 题

判断题 · 答案 B

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

题目

N 是整数,执行如下 C++ 代码,将能输出 0 到 N 之间(包含 N )所有数之和。

int N, tot, i;
cin >> N;
tot = 0;
for (i = 0; i < N + 1; i++)
tot += i;
cout << tot;
答案:B

解题思维

看到题先想循环条件 i < N + 1 是否覆盖 0~N。关键观察:当 N 为负数时,i 从 0 开始,0 < N + 1 恒假,循环一次都不执行,tot 保持 0。这一类题的通法是:写循环前先代入 N 的极端值(负数、0、正数)验证条件是否成立,尤其注意 i < N + 1 这种写法在 N 为负时的表现。

常见错误

选项 A 错误是因为命题人利用"默认 N 为正整数"的思维惯性,忽略了 N 为负数时循环条件失效。最阴险的细节是 i < N + 1 在 N 为负时恒假,导致 tot 始终为 0,而非 0 到 N 的和。

详细解析(节选)

考纲定位

本题考查 GESP 二级"循环结构"与"整数范围"知识点的交叉应用。命题人专门设计 N 为负数的极端情况,卡住考生对循环条件 i < N + 1 在负数时失效的盲区——绝大多数人默认 N 为正,直接认为循环能跑完,却忽略了 i 从 0 开始、0 < N + 1 恒假的事实。

解题思维

看到题先想循环条件 i < N + 1 是否覆盖 0~N。关键观察:当 N 为负数时,i 从 0 开始,0 < N + 1 恒假,循环一次都不执行,tot 保持 0。这一类题的通法是:写循环前先代入 N 的极端值(负数、0、正数)验证条件是否成立,尤其注意 i < N + 1 这种写法在 N 为负时的表现。

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