C语言编写一个程序,判断输入的一个字符串是否是回文。
#include<stdio.h>#include"string.h"intmain(){intx,y,i;charst1[100],*p;gets(st1);x=str...
#include <stdio.h>
#include "string.h"
int main()
{
int x,y,i;
char st1[100],*p;
gets(st1);
x=strlen(st1);
char st2[x];
for(i=0;i<x;i++)
{
*p=st1[i];
st2[x-i-1]=*p;
}
y=strcmp(st1,st2);
if(y==0) printf("YES");
if(y!=0) printf("NO");
}
哪出问题了 展开
#include "string.h"
int main()
{
int x,y,i;
char st1[100],*p;
gets(st1);
x=strlen(st1);
char st2[x];
for(i=0;i<x;i++)
{
*p=st1[i];
st2[x-i-1]=*p;
}
y=strcmp(st1,st2);
if(y==0) printf("YES");
if(y!=0) printf("NO");
}
哪出问题了 展开
8个回答
展开全部
*p=st1[i] 改为p=&st1[i] 试下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用那么麻烦,看看这种思路
一个字符串如果是回文,就是两端相对于中心位置对称
如
123321
123-对称点-321
12321
12---3(对称点)--21
只需要拿左边这半边的字符,与右边的比较,如果一样,就是回文
#include
<stdio.h>
#include
"string.h"
void
main()
{
int
x,i;
char
st1[100]={0};
gets(st1);
x=strlen(st1);
for(i
=
0;
i
<=
x/2;
i++)///比到一半就不比了,原理已讲
{
if(st1[i]
!=
st1[x-i-1])///这就是比较两端的字符
{
break;//不是回文
}
}
if(i>
x/2)///没执行break,就是回文
printf("YES");
else
printf("NO");
}
一个字符串如果是回文,就是两端相对于中心位置对称
如
123321
123-对称点-321
12321
12---3(对称点)--21
只需要拿左边这半边的字符,与右边的比较,如果一样,就是回文
#include
<stdio.h>
#include
"string.h"
void
main()
{
int
x,i;
char
st1[100]={0};
gets(st1);
x=strlen(st1);
for(i
=
0;
i
<=
x/2;
i++)///比到一半就不比了,原理已讲
{
if(st1[i]
!=
st1[x-i-1])///这就是比较两端的字符
{
break;//不是回文
}
}
if(i>
x/2)///没执行break,就是回文
printf("YES");
else
printf("NO");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以去我家水井网问问啊?那是这方面的专业
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询