image.png
思路:
首先获取用户输入字符串的长度,然后找到中间的位数,作为循环终止的条件,第一位与最后一位进行判断,同时,第一位要前进一位,最后一位要后退一位,如果相等,则继续,如果不相等,则直接退出循环。
代码如下:
#include
#include
int main()
{
int n;
char a[100];
while(scanf("%d",&n)!=EOF)
{
while (n--)
{
scanf("%s",a);
int num = strlen(a);
int i,j;
int back=1;
for(i=0,j=num-1;i<=num/2;i++,j--)
{
if(a[i]==a[j])
{
back=1;
continue;
}
else
{
back=0;
break;
}
}
if(back==1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
}
return 0;
}
反思:
在完成要求是,须判断是否回文,然而,在输出"yes",的时候,老是会输出多次,这是原先部分代码如下,之后想到java中有布尔值作为判断,所以就定义一个变量,当两字符相等时,便不改变原先的值,当不相等时,就改变。
for(i=0,j=num-1;i<=num/2;i++,j--)
{
if(a[i]==a[j])
{
printf("yes\n");
continue;
}
else
{
printf("no\n");
break;
}
}