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

#include<stdio.h>#include<string.h>voidfun(char*w,intm){chart,*p1,*p2;p1=w,p2=w+m-1;w... #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("不是回文");
}
展开
 我来答
帐号已注销
2018-12-06
知道答主
回答量:16
采纳率:66%
帮助的人:6.4万
展开全部
#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从尾到头,就是多了不必要的比较;//记得采纳哦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式