反转一个数字程序不起作用,为什么?

Reverse a number program not working,why?

本文关键字:不起作用 程序 为什么 数字 一个      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main()
{
int n,sum=0;
cout<<"enter no.";
cin>>n;
while(n!=0)
{
int r=n%10;
int sum= (sum*10)+r;
n=n/10;
}
cout<<sum;
return 0;
}

这里的输出应该反转一个数字,但它给出的 O/P 为"0" 听不懂!! 请帮忙。

不要读数字,读一个字符串:

#include <iostream>
using namespace std;
int main()
{
std::string n;
cout<<"enter no.";
cin>>n;
std::string reversed(n.rbegin(), n.rend());
cout<<reversed;
return 0;
}

你的代码基本上是正确的,但你在while循环中犯了一个小错误。
旧代码:-

#include <iostream>
using namespace std;
int main()
{
int n,sum=0;
cout<<"enter no.";
cin>>n;
while(n!=0)
{
int r=n%10;         //-- Y R U declaring the variables 'r' and 'sum' here?
int sum= (sum*10)+r;//-- Declare them at top and initialize 'sum' with 0
n=n/10;
}
cout<<sum;
return 0;
}

新代码:-

#include <iostream>
using namespace std;
int main()
{
int n, sum = 0;
cout << "Enter a number >> ";
cin >> n;
while (n != 0) {
sum = (sum * 10) + n % 10;
n /= 10;
}
cout << sum << endl;
return EXIT_SUCCESS;
}

输出:-

Enter a number >> 123456
654321
Press any key to continue . . . _

问题是sum之前的int正在循环内创建一个隐藏外部sum的局部变量。如果删除它,您的程序将正常工作。您可能需要查找C++变量的范围

#include <iostream>
using namespace std;
int main()
{
int n,sum=0;
cout<<"enter no.";
cin>>n;
while(n!=0)
{
int r = n % 10;
sum = (sum * 10) + r;
//^^ note no int
n=n/10;
}
cout<<sum;
return 0;
}