我需要编写可以在屏幕上显示 6 个回文数的代码。
示例:
300003
310013
320023
330033
340043
350053.
研究结果: 到目前为止,我刚刚编写了如何检查它是否是回文数的代码:
#include <iostream>
using namespace std;
int main()
{
int n, num, dig, rev = 0;
cout << "Insert number": << endl;
cin >> num;
n = num;
while (num != 0);
{
dig = num % 10;
rev = (rev * 10) + dig;
num = num / 10;
}
if (n == rev)
cout << "This is palindrome "<< rev << endl;
else
cout << "This is not palindrome "<< rev << endl;
return 0;
}
我怎样才能做到这一点?
您陷入了无限 while 循环:
while (num != 0);
所以去掉分号就可以了。
您可以做的一件事是通过 std::to_string 将给出的数字转换为字符串。
然后使用 std::reverse 反转字符串,并与原始字符串进行比较。
这个怎么样?
#include <iostream>
using namespace std;
bool is_palindrom(int num)
{
int dig,rev=0,n=num;
while (num != 0)
{
dig = num % 10;
rev = (rev * 10) + dig;
num = num / 10;
}
return (n == rev);
}
int main()
{
vector<int> v={300003, 310013, 320023, 330033, 340043, 350053,123};
for(auto n:v)
{
cout<<n<<" is "<<(is_palindrom(n)?"":"not ")<<"palindrom."<<endl;
}
}