#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.