C语言判断一串字符是否为回文串

Python013

C语言判断一串字符是否为回文串,第1张

需要比较整个字符然后得到结论输出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)退出子程序而已。