2014-09-24 55 views
-3

我正在編寫一個程序,用於分隔已輸入的整數。例如,12345會輸出1 2 3 4 5,但每個都是自己的變量。現在,如果我輸入12345,它會給我5 4 3 2 1.任何人都可以幫我弄清楚如何使它輸出數字反向?C++向後輸出數字

代碼:

#include <iostream> 

using namespace std; 

int number; 

int main() 
{ 
    cout << "Enter number: "; 
    cin >> number; 
    while (number > 0) { 
     int digit = number % 10; 
     number = number/10; 
     cout << digit << " "; 
    } 
    return 0; 
} 
+0

只是把它變成一個字符串並按順序打印? – billz 2014-09-24 02:14:12

+0

提示:12345%10具有什麼價值? – orlp 2014-09-24 02:24:01

+0

@ nightcracker我明白,但我問如何得到的值反向打印.. – Dsf190 2014-09-24 02:25:56

回答

0

你的電話號碼,不要保存在一個int,它存儲在一個字符串代替。

#include <iostream> 
#include <string> 

using namespace std; 

string number; 

int main() 
{ 
    cout << "Enter number: "; 
    cin >> number; 
    for (int i=0; i<number.size(); i++) { 
     char digit = number[i]; 
     cout << digit << " "; 
    } 
    return 0; 
} 
+0

這仍然是相反的順序。 – user515430 2014-09-24 02:57:31

+0

@etbh我在括號裏的數字是什麼? – Dsf190 2014-09-24 03:11:51

+0

@ user515430在這種情況下,** i **是一個計數器。它的值從0開始到第一次出現的循環,並且增加到它達到字符串大小減1的值。(這就是_for_循環的作用。)在C++中,一個字符串的行爲就像一個字符數組。要訪問字符串中包含的字符,可以圍繞所需字符的索引使用方括號運算符。索引只是字符串中字符的數字,從0開始。因此,要訪問第一個字符,需要編寫'mystring [0]',以訪問第二個'mystring [1]'等等。 – etbh 2014-09-24 03:25:24

2

您可以使用遞歸。

void PrintNumber(int number) 
{ 
    int digit = number % 10; 
    number /= 10; 

    if (number > 0) 
     PrintNumber(number); 

    cout << digit << " "; 
}