sunnyrubik 发表于 2018-10-26 12:00:30

请问为什么数字反转后老是多一位数啊?

本帖最后由 sunnyrubik 于 2018-10-26 12:07 编辑

eg.123变成321
#include<stdio.h>
#include<stdlib.h>
int fanzhuan(int x);
int main()
{
        int a;
        printf("请输入数字:\n");
        scanf("%d",&a);
        printf("%d",fanzhuan(a));
        system("pause");
        return 0;
}
int fanzhuan(int x)//将1-99999的数字进行翻转。eg.123-321
{
        int a,b,c,d,e;
        a=x/10000;//万位上的数字
        b=(x-a*10000)/1000;//千位上的数字
        c=(x-a*10000-b*1000)/100;//百位上的数字
        d=(x-a*10000-b*1000-c*100)/10;//十位上的数字
        e=x-a*10000-b*1000-c*100-d*10;//个位上的数字
        if(a>=10)printf("您输入的数字太大了\n");
        if(a==0&&b==0&&c==0&&d==0&&e!=0)printf("%d",e);
        if(a==0&&b==0&&c==0&&d!=0) printf("%d",10*e+d);
        if(a==0&&b==0&&c!=0)printf("%d",100*e+10*d+c);
        if(a==0&&b!=0)printf("%d",1000*e+100*d+10*c+b);       
        if(a!=0&&a<10)printf("%d",10000*e+1000*d+100*c+10*b+a);
}



虽然这样做比较傻,但为什么输入123后出来的是3213,输入5423后出来的是32454呢?(前面的数都是好好翻转了,怎么最后面多了一个莫名其妙的数字呢?)

claws0n 发表于 2018-10-26 12:15:47

请加入适当的空格……#include<stdio.h>
#include<stdlib.h>

void fanzhuan(int x);

int main()
{
      int a;
      printf("请输入数字:\n");
      scanf("%d", &a);
      fanzhuan(a);    // <---------------------
      system("pause");
      return 0;
}
void fanzhuan(int x)
{
      int a,b,c,d,e;
      a = x/10000;
      b = (x - a*10000)/1000;
      c = (x - a*10000 - b*1000)/100;
      d = (x - a*10000 - b*1000 - c*100)/10;
      e = x - a*10000 - b*1000 - c*100 - d*10;
      
      if(a >= 10)
                printf("您输入的数字太大了\n");
      if(a == 0 && b == 0 && c == 0 && d == 0 && e != 0)
               printf("%d", e);
      if(a == 0 && b == 0 && c == 0 && d != 0)
               printf("%d",10*e + d);
      if(a == 0 && b == 0 && c != 0)
               printf("%d",100*e + 10*d + c);
      if(a == 0 && b != 0)
               printf("%d",1000*e + 100*d + 10*c + b);      
      if(a != 0 && a < 10)
               printf("%d",10000*e + 1000*d + 100*c + 10*b + a);
}
页: [1]
查看完整版本: 请问为什么数字反转后老是多一位数啊?