2014-09-24 32 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 << " "; 
}