需要比较整个字符串然后得到结论输出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()
}