2013-04-15 53 views
-5

下面的程序會獲取一個整數值並返回其數字相反的數字。適用於6540063或675或9600012等數字,但對於以0結尾的數字不輸出正確的630,50或10。630返回36.我不明白爲什麼。你能建議我應該添加什麼?這看起來像意大利麪代碼不是嗎?當630反轉時打印36。爲什麼不顯示0?

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

} 
+1

http://stackoverflow.com/questions/5007487/c-printf-with-leading-zeros –

回答

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

非常感謝。 – Lyrk

7

因爲你失去了前導零。

036 = 36

+0

我知道我會輸,但需要做不會失去什麼呢?有沒有辦法? – Lyrk

+0

得到你的號碼的數字的計數,使用它作爲參數鏈接到代碼上面的代碼 –

+0

036 = 36,但'036'<>'36'。如果你想要一個前導零,你正在看一個字符串,而不是一個數字。 – thursdaysgeek

相關問題