2012-01-04 4 views
0

사용자가 입력 한 숫자를 반전 시키려고합니다 (즉, 사용자가 입력 한 숫자는 양수를 입력하는 한 배열에 저장됩니다). 그러나 입력 할 때 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

이 숙제입니까? –

+1

입력을 문자열로 유지하십시오. int는 사용하지 마십시오. 이렇게하면 개별 문자에 쉽게 액세스 할 수 있으며 반올림 문제가 발생하지 않아 문제가 될 수 있습니다. –

+0

글쎄, 내게 잘 작동! 입력 내용을 확인하십시오! –

답변

1

이 글은 숙제처럼 보이므로 두 가지 힌트로 대답을 제한하겠습니다. 당신이 pow()를 사용하는 경우

  1. , 그것은 부동 소수점 숫자를 반환하고, 부동 소수점 숫자는 부정확하다. 정수 수학 또는 문자열을 사용하여 프로그램을 다시 작성하십시오.

  2. 숫자가 0으로 끝나는 숫자를 어떻게 처리할지 생각해보십시오. 예를 들어, 2000 년의 반대로해야 할 것은 무엇입니까?

관련 문제