//这是我写的程序 希望对你有所帮助
#include"stdio.h"
#include
int is_palindrome(char*);
int
is_palindrome(char *p){
int i=0,j=0,num=0; //这里j应该初始化 否则你的while循环从那开始呢 同时我定义了一个sum
int result=0;
while(p[j]!='\0'){
j++;
}
num=j-1; //因为j的值马上要发生改变 所以要记录它的值 否则在if((result==num/2&&num%2==0)||(result==num/2-1&&num%2==1))语句中会出问题
for(i=0;i<=j/2;i++){
if(p[i]==p[j-1]){
result++;
}
//i++; //这里需要注释掉 因为循环中已经对i进行了增一操作
j--;
}
//用sum代替j
if((result==num/2&&num%2==0)||(result==num/2-1&&num%2==1)){
return 1;
}else{
return 0;
}
}
int
main(int argc,char **argv){
char *a="no on";
printf("%d",is_palindrome(a));
fflush(stdout);
return 0;
}
//要求是如果一个string类似于"on no"或者"a man nam a"就返回1,否者返回2,我这个程序好像不对诶。。我是先判定这个string有多少个,然后头尾对比,如果一样就加1,最后看看是不是全部都是一样的
while(p[j]!='\0')这个条件中的j还没有赋初值。
还有在for(i=0;i<=j/2;i++){
if(p[i]==p[j-1]){
result++;
}
i++;
j--;
}循环中你在if后面还写了个i++,不知道使你需要还是多写了,应该是多写了吧。
第一个函数中的j没有赋值初值,看你的程序应该是初值为0;另外就是i++多了条语句,别的我看基本没有什么问题了,试着再运行下