2017-01-23 59 views
1

所以如果我輸入說092,它不會返回290,而是返回29,這不是我想要的。有什麼建議?C中的反向號碼功能

int reverseNumber(int number){ 
    int ans = 0; 
    while(number > 0) { 
     int rightDigit; 
     rightDigit = number % 10; 
     ans =ans *10 + rightDigit; 
     number = number/10; 
    } 
    return ans; 
} 
+1

請將功能從用戶那裏讀取 –

+1

因此,請不要將其視爲數字。 '092'作爲數字與'92'相同。相反,將其視爲字符串(字符數據)。 – wallyk

+0

您可能必須發送號碼的字符串,而不是號碼本身。或者必須指定數字的字符數,否則無法區分092和0092. – AntonH

回答

4

這是因爲029沒有來自29小數不同。爲了這個工作,你需要把輸入作爲一個字符串來代替,並反轉字符。之後,您可以將結果字符串轉換爲數字。


前導0意味着它是一個八進制數,但是在該特定情況下它具有9這不是一個八進制數字。根據你從數字轉換爲字符串的方式,這可以考慮。但如果你只是scanf()它,那麼它肯定會是十進制的。

+0

這是否意味着我必須將函數的輸入更改爲char而不是int? – Anymee

+0

@Anymee一個字符數組。 – Carcigenicate

+0

哦。我是一個剛剛開始學習C的初學者。我不知道char數組是什麼... – Anymee

0

你不能在int中有092。

cin>>a; //a=092 
cout<<a; //it will print 92 

所以,你應該把輸入作爲字符串,然後你可以扭轉字符串。