鱼C论坛

 找回密码
 立即注册
查看: 2119|回复: 1

[已解决]请问为什么数字反转后老是多一位数啊?

[复制链接]
发表于 2018-10-26 12:00:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

eg.123变成321
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int fanzhuan(int x);
  4. int main()
  5. {
  6.         int a;
  7.         printf("请输入数字:\n");
  8.         scanf("%d",&a);
  9.         printf("%d",fanzhuan(a));
  10.         system("pause");
  11.         return 0;
  12. }
  13. int fanzhuan(int x)//将1-99999的数字进行翻转。eg.123-321
  14. {
  15.         int a,b,c,d,e;
  16.         a=x/10000;//万位上的数字
  17.         b=(x-a*10000)/1000;//千位上的数字
  18.         c=(x-a*10000-b*1000)/100;//百位上的数字
  19.         d=(x-a*10000-b*1000-c*100)/10;//十位上的数字
  20.         e=x-a*10000-b*1000-c*100-d*10;//个位上的数字
  21.         if(a>=10)printf("您输入的数字太大了\n");
  22.         if(a==0&&b==0&&c==0&&d==0&&e!=0)printf("%d",e);
  23.         if(a==0&&b==0&&c==0&&d!=0) printf("%d",10*e+d);
  24.         if(a==0&&b==0&&c!=0)printf("%d",100*e+10*d+c);
  25.         if(a==0&&b!=0)printf("%d",1000*e+100*d+10*c+b);       
  26.         if(a!=0&&a<10)printf("%d",10000*e+1000*d+100*c+10*b+a);
  27. }
复制代码


屏幕截图(36).png

虽然这样做比较傻,但为什么输入123后出来的是3213,输入5423后出来的是32454呢?(前面的数都是好好翻转了,怎么最后面多了一个莫名其妙的数字呢?)
最佳答案
2018-10-26 12:15:47
请加入适当的空格……
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. void fanzhuan(int x);

  4. int main()
  5. {
  6.         int a;
  7.         printf("请输入数字:\n");
  8.         scanf("%d", &a);
  9.         fanzhuan(a);    // <---------------------
  10.         system("pause");
  11.         return 0;
  12. }
  13. void fanzhuan(int x)
  14. {
  15.         int a,b,c,d,e;
  16.         a = x/10000;
  17.         b = (x - a*10000)/1000;
  18.         c = (x - a*10000 - b*1000)/100;
  19.         d = (x - a*10000 - b*1000 - c*100)/10;
  20.         e = x - a*10000 - b*1000 - c*100 - d*10;
  21.         
  22.         if(a >= 10)
  23.                 printf("您输入的数字太大了\n");
  24.         if(a == 0 && b == 0 && c == 0 && d == 0 && e != 0)
  25.                printf("%d", e);
  26.         if(a == 0 && b == 0 && c == 0 && d != 0)
  27.                printf("%d",10*e + d);
  28.         if(a == 0 && b == 0 && c != 0)
  29.                printf("%d",100*e + 10*d + c);
  30.         if(a == 0 && b != 0)
  31.                printf("%d",1000*e + 100*d + 10*c + b);        
  32.         if(a != 0 && a < 10)
  33.                printf("%d",10000*e + 1000*d + 100*c + 10*b + a);
  34. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-26 12:15:47 | 显示全部楼层    本楼为最佳答案   
请加入适当的空格……
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. void fanzhuan(int x);

  4. int main()
  5. {
  6.         int a;
  7.         printf("请输入数字:\n");
  8.         scanf("%d", &a);
  9.         fanzhuan(a);    // <---------------------
  10.         system("pause");
  11.         return 0;
  12. }
  13. void fanzhuan(int x)
  14. {
  15.         int a,b,c,d,e;
  16.         a = x/10000;
  17.         b = (x - a*10000)/1000;
  18.         c = (x - a*10000 - b*1000)/100;
  19.         d = (x - a*10000 - b*1000 - c*100)/10;
  20.         e = x - a*10000 - b*1000 - c*100 - d*10;
  21.         
  22.         if(a >= 10)
  23.                 printf("您输入的数字太大了\n");
  24.         if(a == 0 && b == 0 && c == 0 && d == 0 && e != 0)
  25.                printf("%d", e);
  26.         if(a == 0 && b == 0 && c == 0 && d != 0)
  27.                printf("%d",10*e + d);
  28.         if(a == 0 && b == 0 && c != 0)
  29.                printf("%d",100*e + 10*d + c);
  30.         if(a == 0 && b != 0)
  31.                printf("%d",1000*e + 100*d + 10*c + b);        
  32.         if(a != 0 && a < 10)
  33.                printf("%d",10000*e + 1000*d + 100*c + 10*b + a);
  34. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表