/*判断是不是回文串
思路:要是它是回文串,那么他的前半部分倒序输出和后半部分一定是一样的,
要是不一样就不是回文串。
例:12321 21(前半段倒序输出)==21
123321 321==321
*/
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[101],s[101];
int i,top=0,len,mid,next;
printf("输入你要判断的:\n");
gets(a);
len=strlen(a); //测量长度
mid=len/2;//取出中间位置
if(len%2)
next=mid+1;//要是奇数起始位就是中间的下一位;
else
next=mid;//偶数就是中间
for(i=0;i<mid;i++)
s[top++]=a[i];//把前半段存起来
for(top=top-1,i=next;top>0;top--)//架设循环开始比较
{
if(a[i]-s[top])//不一样就跳出循环
break;
else //一样就继续判断下一位
i++;
}
//出了循环之后,判断top,是回文串,top就是正常
//出循环的,top==0;不是回文串,top一定不是零;
if(top-0)
printf("NO\n");
else
printf("yes\n");
return 0;
}
这个简单直接附上程序,看一看注释就可以了。
我是小纸人,谢谢大家。