题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例
输入: 121
输出: true
C语言答题模板
bool isPalindrome(int x) {
}
解答
由于C语言中没有布尔类型,所以我们要自己定义stdbool.h头文件并导入程序中
stdbool.h头文件如下:
#ifndef __STDBOOL_H
#define __STDBOOL_H
typedef enum{
false = 0,
true = !false,
}bool;
#endif
然后把该文件放入安装路径的XXXX\VC98\Include中即可
完整代码
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int x)
{
int temp,k;
k = x;
temp = 0;
if(x<=0)
return false;
while(x)
{
temp = temp*10 + x%10;
x = x /10;
}
if(k==temp)
return true;
else
return false;
}
int main()
{
int m;
scanf("%d",&m);
if(isPalindrome(m))
printf("%d是回文数\n",m);
else
printf("%d不是回文数\n",m);
return 0;
}
另一种方式就是先判断出该整数的位数,然后再接着判断第一位和最后一位是否相同,第二位和倒数第二位是否相同........
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int x)
{
int a[10];
int i,j;
i=0;
if(x<0)
return false;
while(x)
{
a[i] = x%10;
x = x/10;
i++;
}
for(j=0;j<i;j++)
{
if(a[j]==a[i-j-1])
{
return true;
}
else
return false;
}
}
int main()
{
int m;
scanf("%d",&m);
if(isPalindrome(m))
printf("%d是回文数\n",m);
else
printf("%d不是回文数\n",m);
return 0;
}