C语言判断字符串是否回文
#include<stdio.h>main(){inta,b=0;charf[255];scanf("%s",f);for(a=0;f[a]!='\0';a++)b++;...
#include<stdio.h>
main()
{
int a,b=0;
char f [255];
scanf("%s",f);
for (a=0;f [a]!='\0';a++)
b++;
if(f [a++]!=f [b--])
printf ("N");
else
printf ("Y");
return 0;
}
请问上面的代码哪出错了啊
是回文输出Y
不是输出N
字符串长度小于255 展开
main()
{
int a,b=0;
char f [255];
scanf("%s",f);
for (a=0;f [a]!='\0';a++)
b++;
if(f [a++]!=f [b--])
printf ("N");
else
printf ("Y");
return 0;
}
请问上面的代码哪出错了啊
是回文输出Y
不是输出N
字符串长度小于255 展开
9个回答
2008-11-20
展开全部
for (a=0;f [a]!='\0';a++)
b++;
这个语句执行完毕后,a=字符串长度,b也是字符串长度
main()
{
int a,b=0;
int flag = 0;
char f[255];
scanf("%s",f);
for (a=0;a<(strlen (f) - 1)/2;a++)
{
b=strlen(f)-a-1;
if(f[a]!=f[b])
{
flag = 1;
break;
}
}
if(flag != 0)
printf ("N");
else
printf ("Y");
return 0;
}
b++;
这个语句执行完毕后,a=字符串长度,b也是字符串长度
main()
{
int a,b=0;
int flag = 0;
char f[255];
scanf("%s",f);
for (a=0;a<(strlen (f) - 1)/2;a++)
{
b=strlen(f)-a-1;
if(f[a]!=f[b])
{
flag = 1;
break;
}
}
if(flag != 0)
printf ("N");
else
printf ("Y");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有错,错在if(f [a++]!=f [b--]) ,其中的a不等与0.因为前面的一个循环已经是a=b.你看是不是.还有你那个if判断,不能产生循环比较,所以也是错误的.
我写了下,测试是可以的,你看看
#include<stdio.h>
void main()
{
int m=0;
char *pf,*pe;
char f[255];
printf("input a string:");
scanf("%s",f);
for(pf=f;*pf!='\0';pf++)
m++;
for(pf=f,pe=f+m-1;pe-pf>=0&&*pf==*pe;pf++,pe--);
if(pe-pf<0)
printf("the string is a palindrome!\n");
else
printf("the string is no a palindrome!\n");
}
我写了下,测试是可以的,你看看
#include<stdio.h>
void main()
{
int m=0;
char *pf,*pe;
char f[255];
printf("input a string:");
scanf("%s",f);
for(pf=f;*pf!='\0';pf++)
m++;
for(pf=f,pe=f+m-1;pe-pf>=0&&*pf==*pe;pf++,pe--);
if(pe-pf<0)
printf("the string is a palindrome!\n");
else
printf("the string is no a palindrome!\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
int a,b=0;
char f [255];
scanf("%s",f);
b=strlen(f);
if(f[a++]!=f[b--])
printf ("N");
else
printf ("Y");
}
这样运行一下吧!这个题有点难度,我做不来了.
main()
{
int a,b=0;
char f [255];
scanf("%s",f);
b=strlen(f);
if(f[a++]!=f[b--])
printf ("N");
else
printf ("Y");
}
这样运行一下吧!这个题有点难度,我做不来了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (a=0;f [a]!='\0';a++)
b++;
在这个语句后,a=b,都在字符数组结束的位置
应该再a=0;
然后再if(f [a++]!=f [b--]) 判断是否回文
你自己想一下
b++;
在这个语句后,a=b,都在字符数组结束的位置
应该再a=0;
然后再if(f [a++]!=f [b--]) 判断是否回文
你自己想一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询