1. 程式人生 > >na_beginning的專欄

na_beginning的專欄

Talk is cheap, show me the code.

一、問題描述

輸入一個整數,將這個整數以字串的形式逆序輸出
程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為100,則輸出為001

輸入描述:

輸入一個int整數

輸出描述:

將這個整數以字串的形式逆序輸出

輸入例子:

1516000

輸出例子:

0006151

二、問題分析

有多種方法,可以直接讀入一個字串,然後對字串倒序,可以用標準庫algorithm中的reverse方法,或者直接用反向迭代器反向輸出。也可以讀入一個整數,然後分別取數,儲存在一個字串中,因為末位的0反向輸出時在首位不能去掉,所以必須使用字串來儲存反向後的數。另外,還有一點值得注意,就是當輸入的整數為0時,這個特殊情況需要特殊考慮。

解題方式1:

#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
    string s;
    while (cin >> s)
    {
        reverse(s.begin(), s.end());
        cout << s << endl;
    }
    return 0;
}

解題方式2:

#include <iostream>
#include <string>
#include <iterator>
using namespace std;

int main()
{
    string s;
    while (cin >> s)
    {
        string str;
        for (string::reverse_iterator it = s.rbegin(); it != s.rend(); ++it)
        {
            str += (*it);
        }
        cout << str << endl;
    }
    return 0;
}

解題方式3:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int a;
    while (cin >> a)
    {
        if (a == 0)
            cout << a << endl;
        string s;
        while (a)
        {
            int temp = a % 10;
            s += (temp + '0');
            a /= 10;
        }
        cout << s << endl;
    }
    return 0;
}