为什么用数字位的概念编写的 number c 程序的反面而不是像我发布的下面的程序?

Why is reverse of a number c program written with the concept of digits places instead like the below one which I posted?

void rev(int n){
        int rem;
        printf("reverse of that number is:");
        while(n>0)
        {
            rem=n%10;
            n=n/10;
            printf("%d",rem);
        }
    }
    int main()
    {
        int n;
        printf("enter a number of more than two digits");
        scanf("%d",&n);
        rev(n);
        return 0;
    }

此代码没有为数字位置编写一段代码,即

reverse = reverse * 10 + remainder;

也returns一样。 请解释我的观点是否有任何错误。 问候

因为你其实没有倒数,只是打印而已。如果你想存储反转的数字并在以后使用它,你必须做 reverse = reverse * 10 + remainder;

如果有人让你将一个整数 X 与给定数字的倒数相加,你会怎么做?计算反向数字始终是一个好主意,而不是仅从最后一位数字打印到第一位数字。代码中的这个小改动可能非常有用:

void rev(long long n){
    long long rem = 0;
    printf("reverse of that number is:");
    while(n>0)
    {
        rem= rem*10+(n%10);
        n=n/10;
    }
    printf("%lld",rem);
}

这里还可以returnrem的值,以供进一步使用。

更新:

正如@Weather Vane 所说,如果用户想看到带有前导零的反向数字(如果有的话),那么唯一的方法就是将数字作为字符串输入。并将其反转。可以使用 strrev() 函数从 <string.h>

反转字符串
strrev(string_name);

如果它是 STL String,那么使用 <algorithm> 中的 reverse() 函数将很有用。

reverse(string_name.begin(), string_name.end());

如果你想从字符串中得到整数,你可以这样做:

long long str_to_num(string s)
{
    long long integer = 0;
    for(int i = 0; i < s.size(); i++){
        integer = integer*10+(s[i]-'0');
    }
    return integer;
}