PTA 7-6 判断回文串

若一个串正向看和反向看等价,则称做回文串。例如:t,abba,xyzyx均是回文串。 给出一个长度不超过60的字符串,判断是否是回文串。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行输入一个长度不超过60的字符串(串中不包含空格)。

输出格式:
对于每组测试数据,判断是否是回文串,若是输出“Yes”,否则输出“No”。引号不必输出。

输入样例:

2
abba
abc

输出样例:

Yes
No

#include <stdio.h>
#include <string.h>
#define N 60

int main() {
    int T;
    scanf("%d",&T);
    while(T--) {
        char ch[N];
        scanf("%s",ch);
        int i,len = strlen(ch);
        bool flag = true;
        for(i = 0; i<len/2; i++) {
            if(ch[i] != ch[len-1-i]) {
                flag = false;
            }
        }
        if(flag) {
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    return 0;
}

有用记得采纳哟

供参考:

#include <stdio.h>
#define N 61
int main()
{
    int T;
    char s[N],*p,*q;
    scanf("%d",&T);
    while(T--){
          scanf("%s",s);
          p = s;q = s;
          while(*q) q++;
          q--;
          while(p < q){
               if(*p != *q) break;
               p++;q--;
          }
          if(p >= q)
               printf("Yes\n");
          else
               printf("No\n");
    }
    return 0;
}

bool isPalindrome(char * s){
int i = 0,j = 0;
while(s[i]){
if(s[i] >= 48 && s[i] <= 57)
s[j++] = s[i];
else if(s[i] >= 65 && s[i] <= 90){
s[i] += 32;
s[j++]= s[i];
}
else if(s[i] >= 97 && s[i] <= 122)
s[j++] = s[i];
i++;
}
int left = 0,right = j - 1;
while(left < right){
if(s[left] != s[right])
return false;
left++;
right--;
}
return true;
}

int main()
{
int t,n,i=0,j=0,k=0,flag=0;
char s[60];
scanf("%d",&t);
getchar();
for(i=0;i<t;i++)
{
flag=0;
gets(s);
flag =bool isPalindrome(s);
puts(s);
if(flag)
printf("NO\n");
else printf("YES\n");
}
return 0;
}