不太懂,就是,问一下,我内个break结束那块不太懂呢,就是如果那两个一维数组不同,是怎么结束输出不是回文的啊

#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char a[1024];
int i, j;
gets(a); //从键盘中输出字符
j = strlen(a) - 1; //将字符串的长度-1之后赋值给j
for (i = 0; i < j; i++, j--) //将字符从两侧开始逐渐对比是否相同
if (a[i] != a[j]) break; //不同则跳出循环
if (a[i] == a[j])
printf("该字符串是回文字符\n"); //若相同则输出
else printf("该字符串不是回文字符\n"); //若不相同则输出
return 0;
}

img


这个循环结束有两种情况
不是回文串的话,例如 abcdea,在a[i]=b,a[j]=e处因为不相等,break跳出循环
是回文串的话,如果长度为偶数,如abccba,会在i=3,j=2时因i < j不成立结束循环,此时a[i]=c,a[j]=c,长度为奇数,如abcba,会在i=2,b=2时因i < j不成立结束循环,此时a[i]=c,a[j]=c
所以跳出循环后a[i]如果是不等于a[j]的,说明不是回文串

注释已经很清楚了吧,
从两头往中间比,如果如果不同说明肯定不是回文串,直接break退出循环,此时a[i]!=a[j]输出不是回文字符