2014-07-02 34 views
1

我想顛倒一個大的整數(> 100位數)。我希望以這樣的方式實現它,即忽略原始數字中的尾隨零。即:反向(2130200)給出了20312.我的問題是,如何實現reverse(),使得大整數中的尾隨零不會被忽略。 例如:反向(20301205500)給出550210302顛倒一個大的整數(尾隨零)

這是我爲小值實現的代碼。

#include <iostream> 
using namespace std; 

int myreverse(int num) 
{ 
    int rev=0; 
    while(num) 
    { 
     rev=rev*10+(num%10); 
     num/=10; 
    } 
    return rev; 
} 

int main() 
{ 
    int num; 
    cin>>num; 
    int a1 = myreverse(num); 
    cout<<a1<<endl; 
    return 0; 
} 
+1

'int'不能持有100位的數字。你爲什麼不用絃樂? – Blender

+4

如果它超過100位,使用'std :: string','std :: reverse'和'find_last_not_of'。 – chris

+1

謝謝@chris!但是我想在不使用stl中的'reverse()方法'的情況下實現邏輯。 –

回答

0

看看這段代碼,我希望它會幫助你:

#include <iostream> 

using namespace std; 

int main() 
{ 
    int number = 1234567890; 

    cout << "Number: " << number << endl; 

    string str_of_number = to_string(number); 

    string rvsd_str_of_number(str_of_number.rbegin(), str_of_number.rend()); 

    int rvsd_number = std::atoi(rvsd_str_of_number.c_str()); 

    cout << "Reversed number: " << rvsd_number << endl; 
} 

輸出:

Number: 1234567890 
Reversed number: 987654321