-5

下面的程序采用整数值并返回数字反转的数字。对于 6540063 或 675 或 9600012 之类的数字可以正常工作,但对于以 0 结尾的数字,对于 630 ,50 或 10 输出不正确。630 返回 36。我不明白为什么。你能建议我应该添加什么吗?这看起来像意大利面条代码,不是吗?

#include <stdio.h>
#include <math.h>

void getDigit(int number);
void getReverse(int number);

int main(void) {

int namba=630;    //Enter here number to be reversed

getReverse(namba);

return 0;
}

void getDigit(int number) {

int div=1,reverse=0,count=0,i=0;

//to find max dividend
while (number>10*div){
    div*=10;  
    ++count;                                        
}       

while(div!=0&&i<=count){

    printf("%d ",number/div);
    number=number%div;
    div/=10;

}

}

void getReverse(int number){

int div=1,reverse=0,count=0,i=0;
    //to find max dividend
while (number>10*div){
    div*=10;  
    ++count;                                        
}       

while(div!=0&&i<=count){

    reverse+=(number/div)*pow(10,i++);      //to find reverse digits  
    number=number%div;
    div/=10;

}

printf("Reverse is: %d\n",reverse);

getDigit(reverse);

}
4

2 回答 2

7

因为你失去了前导零。

036 = 36

于 2013-04-15T22:02:06.207 回答
2
void getReverse(int number){
    ...
    printf("Reverse is: %0*d\n",count + 1,reverse);
    ...
}
于 2013-04-15T22:08:17.873 回答