编写一个程序,判断一个字符串是否为回文,回文就是顺读和逆读都相同,如字符串“abcba”就是回文

#include<stdio.h>
#include<string.h>
void fun(char *w,int m)
{
char t,*p1,*p2;
p1=w,p2=w+m-1;
while(p1<p2)
{
t=*p1;
*p1=*p2;
*p2=t;
p1++,p2--;
}
}
void main()
{
printf("请输入一个字符串:\n");
char s[80],a[80];
gets(s);
strcpy(a,s);
fun(s,strlen(s));
if(strcmp(s,a)==0)
printf("是回文");
else
printf("不是回文");
}

#include<stdio.h>
#include<string.h>
int strcmp_self(char *a)
{
int length=strlen(a);
int i,j;
for(i=0,j=length-1;i<length/2+1;i++,j--)
{
if(a[i]!=a[j])
{
return 1;
}
}
return 0;
}
void main()
{
printf("请输入一个字符串:\n");
char s[80];
gets(s);
if(strcmp_self(s)==0)
printf("是回文");
else
printf("不是回文");
}
思路:从两端开始比较a[0]和a[length-1],a[1]和倒数第二个;只要出现了不相等的情况,就不是回文,至于i<length/2+1;这个条件,就是比较到中间的那个数就可以结束了,改成i<length其实也可以,表示i从头到尾,j从尾到头,就是多了不必要的比较;//记得采纳哦
温馨提示:答案为网友推荐,仅供参考
相似回答