# C++ 程序：检查数字是否为回文

> 原文： [https://www.programiz.com/cpp-programming/examples/palindrome-number](https://www.programiz.com/cpp-programming/examples/palindrome-number)

#### 该程序使用`while`循环反转整数（由用户输入）。 然后，如果使用`if`语句检查反向编号是否等于原始编号。

要理解此示例，您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题：

*   [C++ `while`和`do...while`循环](/cpp-programming/do-while-loop)
*   [C++ `if`，`if...else`和嵌套`if...else`](/cpp-programming/if-else)

* * *

该程序从用户那里获取一个整数，并且该整数被取反。

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

## 示例：检查回文数

```cpp
#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)
         cout << " The number is a palindrome.";
     else
         cout << " The number is not a palindrome.";

    return 0;
} 
```

**输出**

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

```cpp
 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`变量中。

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

例如：在数字 123 中，3 在个位，2 在十位，1 在百位。

因此，要在 123 之后再添加一个数字 4，我们需要将当前数字向左移动，所以现在 1 在千位置，2 在百位， 3 十位，4 在个位。

通过将 123 乘以 10（得到 1230）并加上数字 4（得到 1234），可以很容易地做到这一点。在上面的代码中也是如此。

当`do while`循环最终结束时，我们在`rev`中有一个相反的数字。 然后将该数字与原始数字`n`进行比较。

如果数字相等，则原始数字为回文，否则为非。