当630反转36打印时。为什么0没有显示?

时间:2013-04-15 22:00:36

标签: c

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

#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);

}

2 个答案:

答案 0 :(得分:7)

因为你正在失去领先的零。

036 = 36

答案 1 :(得分:2)

void getReverse(int number){
    ...
    printf("Reverse is: %0*d\n",count + 1,reverse);
    ...
}