原文: https://www.programiz.com/cpp-programming/examples/palindrome-number
要理解此示例,您应该了解以下 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变量中。
在将num添加到rev之前,我们首先需要将rev变量中的当前数据乘以 10,以便将数字添加到数字中的第n位。
例如:在数字 123 中,3 在个位,2 在十位,1 在百位。
因此,要在 123 之后再添加一个数字 4,我们需要将当前数字向左移动,所以现在 1 在千位置,2 在百位, 3 十位,4 在个位。
通过将 123 乘以 10(得到 1230)并加上数字 4(得到 1234),可以很容易地做到这一点。在上面的代码中也是如此。
当do while循环最终结束时,我们在rev中有一个相反的数字。 然后将该数字与原始数字n进行比较。
如果数字相等,则原始数字为回文,否则为非。