一个C语言反序输出的问题

#include <stdio.h>
#include <math.h>
#define M pow(2,31)
int main()
{
int a,b=1,c;
scanf("%d",&a);
if(a==0) {printf("0\n"); return 0; }
else if(a<0){a = -a;printf("-"); }
while(b>0){
b = a%10;
if(b==0) a/=10;
}
while(a!=0){
b=a%10;
a/=10;
printf("%d",b);
}
printf("\n");
return 0;
}

img


我提交了一直不过,能帮我看看是什么问题吗

修改如下,供参考:

#include <stdio.h>
int main()
{
    int a, b = 0, c = 1;
    scanf("%d", &a);
    if (a < 0) 
    { 
        a = -a; 
        c = -1;
    }
    while (a != 0) 
    {
        b = b * 10 + a % 10;
        a /= 10;
    }
    printf("%d\n", b * c);
    return 0;
}

建议用 long long,逆序后再计算在不在 int32 范围内