题目:有这样一类数字,顺着看和倒着看是相同的数,例如121,656,2332等,这样的数字就称为回文数字。编程判断某数字是否是回文数字。
为了防止空间限制和溢出,因此采用数字位判断法。
先比较整数的第1位和最后1位是否相等,如果不等,则直接返回false;若相等,则接下去判断剩下的位置,如同回文字符串判断的过程一样。代码如下:
#include<iostream>
using namespace std;
bool isPalindrome(int x)
{
if(x<0) //如果x为负数
{
return false;
}
int div=1; //设置div初始值
while(x/div>=10)
{
div*=10;
}
while(x!=0)
{
int l=x/div;//整数第一位
int r=x%10; //整数最后一位
if(l!=r)//如果第一位和最后一位不相等
{
return false;
}
x=(x%div)/10;//去除第一位和最后一位继续比较
div/=100;
}
return true;
}
int main()
{
int x;
cin>>x;
if(isPalindrome(x))
cout<<"是回文数"<<endl;
else
cout<<"不是回文数"<<endl;
return 0;
}