判断输入的字符串是否为“回文”
#include <stdio.h>
#include <string.h>
int main(void) {
char a[100],*p,*q;
int flag=0;
fgets(a,100,stdin);
a[strlen(a)-1]='\0';
// fputs(a,stdout);
p=a;
q=&a[strlen(a)-1];
while(q-p>0)
{
if(*p==*q)
{
p++;
q--;
}
else
{
flag=1;
break;
}
}
// printf("%d",flag);
if(flag==1) printf("NO");
else printf("YES");
return 0;
}
运用指针一个个的比对
当字符串长度为奇数时,指针p和q同时指向最中间的元素时结束,此时q-p=0.
当字符串的长度为偶数时,指针p和q错位,q指向p前面的一个元素。此时,q-p=-1.
所以while的判定条件为q-p>0.