数字倒序,请问为什么输不出结果,顺便问一下有什么简便的方法吗?

#include<stdio.h>
int main() {
int number1,number2,a,b,c,count;
scanf("%d",&number1);
do {
number2=number1/10;
count++;
} while(number2!=0);
switch(count) {
case 1:
printf("%d",number1);
break;
case 2:
a=number1/100;
b=number1%100/10;
printf("%d%d",b,a);
break;
case 3:
a=number1/100;
b=number1%100/10;
c=number1%10;
printf("%d%d%d",c,b,a);
break;}
return 0;}

不考虑负数

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n > 0){
        printf("%d",n % 10);
        n /= 10;
    }
    return 0;
}

简便方法有的是,比如用循环,字符串形式输入,不过你这个挨着判断位数就离谱



int func(int n)
{
    int t = 0;
    while (n)
    {
        t = t * 10 + n % 10;
        n /= 10;
    }
    return t;
}
#include <stdio.h>

int reversed(int x);

int main()
{
    printf("%d",reversed(123456));
    return 0;
}

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

主要是这个问题number1的值在do-while循环里面没有更新,修改如下:


#include<stdio.h>
int main() {
    int number1,number2,a,b,c,count;
    scanf("%d",&number1);
    int temp=number1;
    
    do {
        number2=number1/10;
        number1=number2;
        count++;
    } while(number2!=0);
    
    number1=temp;
    switch(count) {
        case 1:
        printf("%d",number1);
        break;
        case 2:
        a=number1/100;
        b=number1%100/10;
        printf("%d%d",b,a);
        break;
        case 3:
        a=number1/100;
        b=number1%100/10;
        c=number1%10;
        printf("%d%d%d",c,b,a);
        break;
    }
    return 0;

}