如下 C++ 代码如果输入大于 0 的整数,则可以求 1 到 N 之和。
int N, tot;cout << "请输入正整数:";
cin >> N;
tot = 0;
while (N > 0) {
tot += N;
N += -1;
}
cout << tot;看到这题先想循环条件 N>0 和累加逻辑。tot+=N 每次加当前 N,N+=-1 每次减 1,本质是 10 次累加。只需验证一次输入即可。
选项 B 是"错误",易错于把 N+=-1 看成 N++ 或忽略 tot 初始化。
本题考查 GESP 一级 C++ 第 3 章"循环控制",命题人卡在"能识别 while 循环结构"的盲区,90%+ 考生会误判为"死循环"或"语法错误"。
看到 while(N>0) 先想"循环何时结束",关键观察是 N+=-1 每次减 1,本质是 10 次累加。只需验证一次输入即可。
选项 B 是"错误",易错于把 N+=-1 看成 N++ 或忽略 tot 初始化。
若把 N+=-1 改成 N++,循环会死循环;若改成 tot=tot+N 且 N=N-1,逻辑不变。