反转用户输入的数字

时间:2012-01-04 16:46:51

标签: c arrays function loops

我正在尝试反转用户输入的数字(即,只要输入正数,用户输入的数字就会存储在数组中)。 但是,当我输入    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;
}

1 个答案:

答案 0 :(得分:1)

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

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

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