//判断是否为回文数
//思想:将数的每个位分别存入数组中,一个for循环分别比较两边的数
#include<stdio.h>
#include<math.h>
bool isPalindrome(int x);
int main()
{
int m;
scanf("%d",&m);
printf("%d",isPalindrome(m));
}
bool isPalindrome(int x){
int a[10];//将数的每一位存入数组
int n=0;//数的位数
int flag=0;
int h;
if(x<0)//当为负数是,直接返回false
{
return false;
}
for(int i=0;i>=0;i++)//求数的位数
{
h=x/(pow(10,i));
if(h!=0)
n=i;
else
break;
}
n=n+1;
for(int j=0;j<n;j++)//将数的每一位存入数组
{
if(j==0) //存个位
a[j]=x%(int)(pow(10,j+1));
else //存个位以上的位数
{
h=x%(int)(pow(10,j+1));
a[j]=h/(int)(pow(10,j));
}
}
for(int t=0;t<n/2;t++)//一个for循环分别比较两边的数
{
if(a[t]!=a[n-t-1])
{
flag=1;
break;
}
}
if(flag==1)
return false;
else
return true;
}
有待提升的地方:如何更加高效的求一个整数的位数
易出错的地方:
(1)bool值的输出,就用%d
(2)for循环的结束条件、以及边界值是否可取