2011-09-25 81 views
0

我想让我的代码打印出任何整数输入的反转。没有错误,只是没有正确打印。我究竟做错了什么?反向数字输入

#include<iostream> 
#include<conio.h> 

using namespace std; 

int num, n; 
int reverse(int); 

int main() 
{ 
    cout << "Enter a number less than 1000 to be reversed:" << endl; 
    cin >> num; 
    reverse(num); 
    cout << "reversed number is:"; 
    getch(); 
    return 0; 
} 

int reverse(int num) 
{ 
    long sum=0;int rem; 

    while(n>0) 
    { 
     rem=n%10; 
     sum=sum*10+rem; 
     n=n/10; 
     cout << sum << endl; 
    } 

    return sum; 
    cout << sum << endl; 
} 
+2

请出示的输入,输出和预期输出。 –

+0

输入234,输出234,预期输出432 – Sam

回答

2

n未初始化的程序,但你在while循环使用。

试试这个:

int reverse(int num) 
{ 
    int sum=0; 
    while(num>0) 
    { 
    sum=sum*10+ num %10; 
    num=num/10; 
    } 
    return sum; 
} 

而且,由于此函数返回一个整数,它是反向,你传递给函数的数量,你必须在调用点保存返回的值,如:

int revnum = reverse(num); //in your code, you're not doing this. 

现在看到完整的在线演示:http://ideone.com/hLnS1

顺便说一句,避免全局变量:

int num, n; //avoid declaring these at global level. 

在本地范围内定义它们,就像我在演示中看到的那样(参见它)。

+0

我返回后在主循环中打印什么? NUM? – Sam

+0

@Sam:查看演示:http://ideone.com/hLnS1。我已经用它更新了我的答案。 – Nawaz

0

如果将它作为字符串对待,则反转数字更容易。

例如

#include <iostream> 
#include <string> 
#include <algorithm> 

int main() 
{ 
    std::string sNum; 

    std::cout << "Enter a number:" << std::flush; 
    std::cin >> sNum; 
    std::reverse(sNum.begin(), sNum.end()); 
    std::cout << "\nThe reverse is \"" << sNum << "\""; 
    std::cout << "\n\nPress return to finish" << std::endl; 
    std::cin.get(); 
    return 0; 
} 

主要生产

Enter a number:123456789 

The reverse is "987654321" 

Press return to finish 
+0

确实比较容易。但速度较慢。 – 2011-09-25 17:03:37

+0

@WPT - 为什么它会变慢? cin/cout对字符数据进行操作,所以我们有从int到int的转换,然后至少有与字符串反转一样多的操作。 –