反向数字输入

时间:2011-09-25 15:46:55

标签: c++

我正在尝试让我的代码打印输出任何整数的反向。没有错误,只是没有正确打印出来。我做错了什么?

#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 :(得分: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.

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

答案 1 :(得分:0)

如果将数字视为字符串,则反转数字会更容易。

e.g。

#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