C++ 检查一个数是否为回文数程序

要理解本示例,您应该了解以下 C++ 编程 主题


此程序从用户那里获取一个整数,并反转该整数。

如果反转后的整数等于用户输入的整数,则该数字是回文数,否则不是。

示例:检查回文数

#include <iostream>
using namespace std;

int main()
{
     int n, num, digit, rev = 0;

     cout << "Enter a positive number: ";
     cin >> num;

     n = num;

     do
     {
         digit = num % 10;
         rev = (rev * 10) + digit;
         num = num / 10;
     } while (num != 0);

     cout << " The reverse of the number is: " << rev << endl;

     if (n == rev and n > 0)  // Negative numbers are not palindromic
         cout << " The number is a palindrome.";
     else
         cout << " The number is not a palindrome.";

    return 0;
}

输出

Enter a positive number: 12321
The reverse of the number is: 12321
The number is a palindrome.

Enter a positive number: 12331
The reverse of the number is: 13321
The number is not a palindrome.

在上面的程序中,用户被要求输入一个正数,该数存储在变量 num 中。

然后将该数字保存在另一个变量 n 中,以便在原始数字被反转时进行检查。

在 do...while 循环中,使用代码 digit = num % 10; 分离出数字的最后一位。然后将此数字添加到 rev 变量中。

在将 digit 添加到 rev 之前,我们需要先将 rev 变量中的当前数据乘以 10,以便将数字添加到该数字的第 n 位。

例如:在数字 123 中,3 在零位,2 在一位,1 在百位。

因此,要在 123 之后添加另一个数字 4,我们需要将当前数字向左移位,现在 1 在千位,2 在一位,3 在一位,4 在零位。

这可以通过将 123 乘以 10 得到 1230,再加上数字 4,得到 1234 来轻松完成。上面的代码也做了同样的事情。

当 do while 循环最终结束时,rev 中将有一个反转的数字。然后将此数字与原始数字 n 进行比较。

如果数字相等,则原始数字是回文数,否则不是。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战