反转用户输入的数字

我试图反转用户输入的数字(即用户输入的数字存储在数组中,只要他输入正数)。 但是,当我输入123 4569 752 896 -1时,输出为321 9653 257 698正如您所看到的,第二个数字不是9654.我无法修复它。

#include  #include  // 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; } 

由于这看起来像家庭作业,我将限制我的答案两个提示。

  1. 当您使用pow() ,它返回一个浮点数,浮点数是不精确的。 使用整数数学或字符串重写程序。

  2. 想想你希望如何处理以零结尾的数字; 例如,2000年应该是什么?