跳到主要内容

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)
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 进行比较。

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