我正在尝试让我的代码打印输出任何整数的反向。没有错误,只是没有正确打印出来。我做错了什么?
#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;
}
答案 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