求助:逆排序错误问题
代码如下:运行后为什么无论输入多大数字都运行"输入错误!"#include "stdio.h"
#include "math.h"
void main ()
{
long number;
int a,b,c,d,e,leap=0;
printf("请输入一个不多于5位的正整数:");
scanf("%d",&number);
if(number>99999)
leap=1;
a=number/10000;
b=number%10000/1000;
c=number%1000/100;
d=number%100/10;
e=number%10;
if(leap==0)
{
if(a!=0)
{
printf("这是一个五位数\n");
printf("他的逆序数为:%d%d%d%d%d",e,d,c,b,a);
}
else if(b!=0)
{
printf("这是一个四位数\n");
printf("他的逆序数为:%d%d%d%d",e,d,c,b);
}
else if(c!=0)
{
printf("这是一个三位数\n");
printf("他的逆序数为:%d%d%d",e,d,c);
}
else if(d!=0)
{
printf("这是一个二位数\n");
printf("他的逆序数为:%d%d",e,d);
}
else
{
printf("这是一个一位数\n");
printf("他的逆序数为:%d",e);
}
}
else
printf("输入错误!");
getch();
}
----------------解决方案--------------------------------------------------------
出错原因
您在算每一位的数字的时候出错,a=number/1000;
但接下来就错了列如
b=(mumber-(number%10000/10000)*mumber)/1000;
而不是b=number%10000/1000;
后面的错误和b是一样的
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]faminxmu[/un] 在 2008-4-26 11:20 的发言:[/bo]
您在算每一位的数字的时候出错,
a=number/1000;
但接下来就错了列如
b=(mumber-(number%10000/10000)*mumber)/1000;
而不是b=number%10000/1000;
后面的错误和b是一样的 ...
您在算每一位的数字的时候出错,
a=number/1000;
但接下来就错了列如
b=(mumber-(number%10000/10000)*mumber)/1000;
而不是b=number%10000/1000;
后面的错误和b是一样的 ...
我这样算也是对的阿~~一前很多题都是这么算得。
----------------解决方案--------------------------------------------------------
应该是faminxmu的解释正确!
不过求每位数字应该是这样子:
a=number/10000;
b=number/1000%10;
c=number/100%100;
d=number%100/10;
e=number%10;
----------------解决方案--------------------------------------------------------
没有错。运行是对的啊。#include "math.h"这根本就用不着。
还有getch();
----------------解决方案--------------------------------------------------------
结果是对的阿!
----------------解决方案--------------------------------------------------------
没有错误啊 把getch()换成getchar()就没有waring了 ide是vc++6.0
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define abs(n) n>0?n:-n
int main(void)
{
int n,i,sum;
int a[100]={0};
scanf("%d",&n);
for(i=0,sum=0;abs(n)>0;n=n/10)
{
a[i++]=n%10;
sum=sum*10+a[i-1];
}
printf("%d",sum);
return 0;
}
----------------解决方案--------------------------------------------------------
我有个问题啊 假设一个数是12345那么abcde都不等于0,程序应该怎么执行啊?
----------------解决方案--------------------------------------------------------
就是5位数了阿,执行第一个if啊
----------------解决方案--------------------------------------------------------