【发布时间】:2012-02-02 13:41:30
【问题描述】:
我正在尝试反转用户输入的数字(即,只要用户输入一个正数,用户输入的数字就会存储在一个数组中)。 但是,当我输入 123 4569 752 896 -1 输出是 321 9653 257 698 如您所见,第二个数字不是 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;
}
【问题讨论】:
-
将您的输入保存为字符串——不要使用整数。这样,您就可以轻松访问单个字符,并且不会遇到可能导致问题的舍入问题。
-
嗯,它对我来说很好用!查看您的意见!