N 是整数,执行如下 C++ 代码,将能输出 0 到 N 之间(包含 N )所有数之和。
int N, tot, i;
cin >> N;
tot = 0;
for (i = 0; i < N + 1; i++)
tot += i;
cout << tot;看到题先想循环条件 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 为负时的表现。