BCSP-X · 2024 BCSP-X 下半年活动基础知识测评(初中组) 第 19 题

选择题 · 答案 B

← 整套速查表 BCSP-X 全部真题

题目

第 2 题

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin >> n;
    while (n > 0){
        cout << n % 10;
        n /= 10;
    }
    return 0;
}

输入:$8025400$

答案:B

解题思维

这题别被代码吓住,它就是个简单的'倒着吐数字'。拿到输入,先想它每次循环干啥:取个位、打印、去掉个位。然后顺着这个动作,看数字 8025400 会被拆成什么顺序,最后直接对照选项选那个完全匹配的字符串就行。

常见错误

最容易栽跟头的点,就是没看清代码里是 cout << n % 10,它是先吐个位再吐十位,所以输出顺序跟正常读数字是反的。很多学生一看到 8025400,下意识就觉得答案肯定是 80254 或者 45208,把前导零给吞了。还有种情况是以为会算出 19(8+0+2+5+4+0+0),那是把数字当成求和了,完全跑偏。千万别被'00'这种前导零迷惑,cout 打印整数时,如果中间有 0 它就是真 0,不会自动省略,除非你之前做过'去掉前导零'的预处理,但这题代码里根本没这步。

详细解析(节选)

这题考查的是对程序执行流程的理解,特别是'取余'和'整除'这两个基础运算在循环里的配合。命题人挖坑的意图很明显:利用学生'看到数字就想读出来'的惯性,让他们忽略代码里'倒序输出'这个核心动作。很多学生看到 8025400,第一反应是'这是个八百万多的数',然后选项里一看到 80254 就选了,完全没意识到代码里有个 while(n>0) 在不停地把数字拆成一个个个位。还有学生可能觉得'00'在整数里没意义,所以选了 C 45208,这也是典型的审题不细。其实这道题就是考你:代码跑一遍,到底吐出来什么字符串?

拿到代码,咱们得先读懂它的逻辑。main 函数里只有一件事:读入 n,然后进 while 循环。循环条件 n>0,只要 n 不为 0 就继续。循环体里两句:cout << n % 10,把 n 的个位打印出来;n /= 10,把 n 除以 10,去掉个位。这就是经典的'从低位到高位'逐位提取。所以,不管 n 是多大,只要它不是 0,这个循环就会一直跑,直到 n 变成 0 为止。每跑一次,就吐出一个数字,而且是从个位开始吐的。

现在把输入 8025400 代进去模拟一下。初始 n=8025400。 第一次循环:n%10 = 0,打印 0;n/=10 → 802540。 第二次循环:n%10 = 0,打印 0;n/=10 → 80254。 第三次循环:n%10 = 4,打印 4;n/=10 → 8025。 第四次循环:n%10 = 5,打印 5;n/=10 → 802。 第五次循环:n%10 = 2,打印 2;n/=10 → 80。 第六次循环:n%10 = 0,打印 0;n/=10 → 8。 第七次循环:n%10 = 8,打印 8;n/=10 → 0。 第八次循环:n=0,不满足 n>0,退出。

把打印出来的数字连起来,就是'0045208'。注意,这里有两个前导零,因为代码里是'cout << n % 10',它直接输出整数,整数 0 就是'0',不会自动省略。所以最终输出就是'0045208'。

再看选项:A 是 80254,那是把数字当成正序读的,完全反了;C 是 45208,那是把前导零给吞了,以为整数里 00 没意义,其实 cout 打印时 0 就是 0;D 是 19,那是把数字当成求和了,8+0+2+5+4+0+0=19,跑偏了。只有 B 是'0045208',跟代码跑出来的完全一致。

这道题在考频上,属于 CSP-J/S 里'阅读程序'这类基础题里的常客。过去几年,每年都有类似的'倒序输出'或者'逐位处理'的题,考的是学生能不能把代码翻译成执行步骤。命题人特别喜欢在这种看似简单的循环里藏'前导零'或者'取余顺序'这种细节,因为学生往往只看宏观,忽略微观。所以,遇到这种题,千万别急着选'看起来对'的,一定要按代码一步步推。

避坑方面,最需要注意的是:别把'整数'和'字符串'混为一谈。代码里虽然处理的是 int,但输出的是字符序列,前导零在 int 里没意义,但在输出字符串里就是实实在在的字符。还有,别被'00'这种重复数字误导,以为会合并或者省略,实际上 cout 每次都是独立打印一个数字。

总结下来,这题就是考你:能不能把代码翻译成执行步骤,然后准确输出结果。答案就是 B,'0045208'。

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