回文数得出6个数字

问题描述 投票:0回答:3

我需要编写可以在屏幕上显示 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;
}

我怎样才能做到这一点?

c++ algorithm palindrome
3个回答
2
投票

您陷入了无限 while 循环:

while (num != 0);

所以去掉分号就可以了。


0
投票

您可以做的一件事是通过 std::to_string 将给出的数字转换为字符串。

然后使用 std::reverse 反转字符串,并与原始字符串进行比较。


0
投票

这个怎么样?

#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;
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.