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修饰,因此必须返回整型值

}

我这里有一个源程序,自己看看吧,不懂就问我

#include <stdio.h>

int palind(char str[],int k, int i)/*自定义函数检测是否为回文字符串*/

{

if(str[k]==str[i-k]&&k==0)/*递归结束条件*/

return 1

else if(str[k]==str[i-k])/*判断相对应的两个字符是否相等*/

palind(str,k-1,i) /*递归调用*/

else

return 0

}

main()

{

int i=0,n=0/*i记录字符个数,n是函数返回值*/

char ch,str[20]

printf("\nplease input string:\n")

while ((ch=getchar())!='\n')

{

str[i]=ch

i++

}

if(i%2==0)/*当字符串中字符个数为偶数时*/

n=palind(str,(i/2),i-1)

else

n=palind(str,(i/2-1),i-1)/*当字符串中字符个数为奇数时*/

if(n==0)

printf("not palindrome")/*当n为0说明不是回文数,否则是回文数*/

else

printf("palindrome")

getch()

}