请问为什么数字反转后老是多一位数啊?
本帖最后由 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呢?(前面的数都是好好翻转了,怎么最后面多了一个莫名其妙的数字呢?)
请加入适当的空格……#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]