法一:主要用于判断数字回文,不能用于字符串回文。
#include<stdio.h>
void fun(long num)
{
long r=0,temp=num;//记录判断数值
while(num)//逆向输出它的值
{
r=r*10+num%10;
num=num/10;
}
if(r==temp)//比较是否相等
printf("YES!");
else
printf("NO!");
}
int main()
{
long num;
scanf("%ld",&num);
fun(num);
return 0;
}
法二:可用用于判断字符串回文或数字回文。
#include<stdio.h>
#include<string.h>
void fun(char num[])
{
int i;
int len=strlen(num);
for(i=0;i<len/2;i++)//第一位和最后一位比较,依次递增,递减比较
{
if(num[i]!=num[len-1-i])
break;
}
if(i<len/2)
printf("NO!");
else
printf("YES!");
}
int main()
{
char num[50];
gets(num);
fun(num);
return 0;
}
法三:可用于字符串回文或数字回文,与前两种方法相比较,第三种方法用到了字符串比较函数strcmp.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fun(char num[])
{
int i,j=0;
int len=strlen(num);
char *p=(char *)malloc(sizeof(char)*len);//给P指针变量分配存储空间相当于char p[len]
for(i=len-1;i>=0;i--)//将num数组字符串逆向保存到p数组
{
p[j++]=num[i];
}
p[j]='\0';
if(strcmp(num,p)==0)//判断是否相等
printf("YES!");
else
printf("NO!");
}
int main()
{
char num[50];
gets(num);
fun(num);
return 0;
}