正反转用户输入的号码

正反转用户输入的号码

问题描述:

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

这功课呢? – 2012-01-04 16:49:31

+1

保持您的输入为字符串 - 不要使用整数。这样,您就可以轻松访问个人角色,而且不会遇到舍入问题,这可能会导致您的问题。 – 2012-01-04 16:51:50

+0

嗯,它对我来说工作得很好!看看你的输入! – 2012-01-04 16:58:28

由于这看起来像功课,我会限制我的答案两个提示。

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

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