需要比较整个字符串然后得到结论输出yes而不是只判断了一个字符相等就输出
#include<stdio.h>#include<string.h>
const int maxn=256
int main(){ int i char str[maxn] int len,b
scanf("%s",str) len=strlen(str) //输入完了字符串再计算长度,不能在输入之前算
for(i=0,b=1i<=len/2i++)
if(str[i]!=str[len-i-1]){ b=0 break } //如果发现不相等则判定不是回文
if ( b!=0 ) printf("yes") else printf("no") //等循环完毕再得出结论
return 0 //main前面有int修饰,因此必须返回整型值
}
用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。
参考代码如下:
int huiwen(char *s){
char *p = s
while(*p) p++//找到结束符\0的位置。
p--//\0的前一个字符,就是字符串的最后一个字符。
while(s<p)
{
if(*s != *p) return 0//发现不同,不是回文。
s++
p--//二者向中间移动。
}
return 1//到相遇后一直相同,是回文。
}
int main()
{
char s[100]
scanf("%s",s)//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf("%s是回文字符串\n",s)
else
printf("%s不是回文字符串\n",s)
return 0
}
#include <stdio.h>
#include<stdlib.h>
int main()
{
char a[100]
int i=0,j=0
printf("请输入字符串:\n")
gets(a)
while(a[i]!='\0')
i++
i--
for(j<=ii--,j++)
{
if(a[i]!=a[j])
{
break
}
}
if(j<=i)
{
printf("不是回文串\n",a)
}
else
{
printf("是回文串\n",a)
}
system("pause")
return 0
}
运行效果:
扩展资料:return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。