这题需要注意的是,恰好改变一个字符的情况包括了如“aba”这样中间可改可不改的情况
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i;
int y =n;
int m=0;
int e[n+1];
while(n!=0)
{
char a[10000]={0};
int k = 0;
do{
scanf("%c",&a[k]);
k++;
}while(a[k-1]!='\n');//
k = k-1;
if(a[k]=='\n'&&n==y)
{
y = y + 1;
continue;
}
int c,b;
m=0;
if(k%2==0){
for(i=0;i<=(k-1)/2;i++)
{
c = a[i];
b = a[(k-i-1)];
if(c!=b)
{
m++;
}
if(m>1)
{
e[n] = 0;
break;
}
}
if(m==0)
{
e[n] = 0;
}else if(m==1){
e[n] = 1;
}
n--;
}else
{
for(i=0;i<=(k-1)/2;i++)
{
c = a[i];
b = a[(k-i-1)];
if(c!=b)
{
m++;
}
if(m>1)
{
e[n] = 0;
break;
}
}
if(m==0)
{
e[n] = 1;
}else if(m==1){
e[n] = 1;
}
n--;
}
}
y = y - 1;
for(i=y;i>0;i--)
{
if(e[i]==1)
{
printf("YES");
}else if(e[i]==0)
{
printf("NO");
}
printf("\n");
}
return 0;
}
//变量名定义重复导致出错
//计数器没有清0
//