正反转用户输入的号码
问题描述:
我想反转用户输入的数字(即用户输入的数字只要输入正数就存储在数组中)。 但是,当我输入 123 4569 752 896 -1 输出是正如你可以看到第二个数字不是9654。我无法修复它。正反转用户输入的号码
#include <stdio.h>
#include <math.h>
// finding the number of digits
int bsm(int a){
int i=0;
while(a!=0){
i++;
a=a/10;
}
return i;
}
// reversing the number
int rev(int m,int a){
int s=0,sum=0;
while(a!=0){
s=a%10;
sum+=s*pow(10,m)/10;
m--;
a=a/10;
}
return sum;
}
int main()
{
int i=0,k,a[10],p,r;
scanf("%d",&a[i]);
while(a[i]>0){
i++;
scanf("%d",&a[i]);
}
for(k=0;k<i;k++){
p=bsm(a[k]);
r=rev(p,a[k]);
printf("\n%d ",r);
}
return 0;
}
答
由于这看起来像功课,我会限制我的答案两个提示。
当您使用
pow()
时,它返回一个浮点数,并且浮点数是不精确的。用只重写你的程序整数数学或字符串。想想如何处理以零为结尾的数字;例如,2000年应该是什么情况?
这功课呢? – 2012-01-04 16:49:31
保持您的输入为字符串 - 不要使用整数。这样,您就可以轻松访问个人角色,而且不会遇到舍入问题,这可能会导致您的问题。 – 2012-01-04 16:51:50
嗯,它对我来说工作得很好!看看你的输入! – 2012-01-04 16:58:28