这题我可以说是“新手噩梦”

wc022 CSP-J2二等 2025-10-25 19:04:34 9

很多新手这一题都做不出来,因为他们只会直接倒序输出或者倒叙后挨个判断如果不是0就输出,其实这题需要另外一种倒序输出方式:

int sum=0;
while (n>0){
            sum=sum*10;
            sum=sum+n%10;
            n=n/10;
        }

其实这里你可以模拟一下,如果这个数是910:

1.因为sum初始化为0,sum先*10,还是0;

2.sum+910%10=0(“%”叫取模,意思是得出这个数除另一个数的余数;

3.sum*10=0;

4.sum+91%10=1,91/10=9(这是int类型,没有小数);

5.sum*10=10;

6.sum+9%10=19,9/10=0;

7.为达到条件:“n>0”停止循环。

这样910倒过来就是19是不是?

如果是负数,只要将先输出负号在求出n的绝对值就可以了

AC代码:(复制了这辈子别想拿奖)

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, sum = 0;
    cin >> n;
    if (n<0)
    cout<<"-";
    n=abs(n);
        while (n>0){
            sum=sum*10;
            sum=sum+n%10;
            n=n/10;
        }
    cout<<sum;  
    return 0;
}
{{ vote && vote.total.up }}