GESP 二级 · GESP 202412 C++ 二级 第 9 题

选择题 · 答案 D · 考点:循环控制

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

题目

下面 C++ 代码用于求正整数各位数字之和,横线处不应填入代码是( )。

int tnt, N;
printf("请输入正整数:");
cin >> N;
tnt = 0;
while (N != 0){
    ________________
    N /= 10;
}
cout << tnt;
答案:D

考点

循环控制

解题思维

答案D。循环补全要分析循环变量的初始值、条件和更新方式,确保能产生目标输出。

常见错误

代入法验证时注意选项之间的细微差别。循环条件中的<和<=可能导致完全不同的结果。

详细解析(节选)

【考点】取余运算|累加赋值|循环控制

1. 🎯 考纲定位 GESP二级 C++ 第 4 章「循环结构」第 2 节「循环体内的累加」——题目卡住的是「赋值与累加」的区分:学生背过「+=」等于「= +」,却误以为「= N % 10」也能累加,这是二级学生最易混淆的符号语义。

2. 🧠 解题思维 看到循环 while (N != 0),立刻想到「逐位提取」:N % 10 取末位,N /= 10 去掉末位。横线必须在取位之后、除十位之前,且必须把取到的位「加进」tnt。因此正确写法只能是 tnt = tnt + N % 10 或其等价形式;任何把 tnt 直接赋为 N % 10 的写法都会丢掉之前的累加值。

3. 🪤 陷阱拆解

最关键的细节:题目问「不应填入」,很多学生看到 D 项能「算出个位」就以为它能用,忽略了「累加」这一核心要求。

4. 🔄 反命题思维 若把 D 项改成 tnt = tnt + N % 10,题目就变成「哪个选项能正确求和」,答案变成 A/B/C 中的一个;若把循环条件改成 N > 0,对正整数无影响,但加上 N < 0 就会让循环永不执行,tnt 恒为 0——命题人随时可以换条件考察边界。刷到这类「求各位数字之和」的题,先问自己:「我需要的是取余 + 累加,还是单纯取余?」

同考点真题

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