以下是引用smallmoon521在2012-1-8 20:15:56的发言:
LZ,你的程序不对吧.
第一个循环判断就是头尾,一样就跳出了,返回1
里面的没机会判断~
如1456adbc1 返回是1
PS:不用两个for循环的.一个就可以,折半.
for(...)
{
if(array==array[len-i-1])
...
}
这样就可以了
不过LZ遇到问题,自己想办法解决,而不是不思考就提问,是值得提倡的
如果能给补点分,就更值得提倡了
嗯,谢谢楼上提示这个小bug,我改进了一下程序,在让i的值至少大于字符串长度一半以上就行了,或j的值小于字符串长度一半以上就行了,还有就是这题昨天晚上就封贴了,呵呵,不过你放心,以后多多关注我的帖子,分是大大的有
#include"stdio.h"
#include"string.h"
int palindrome(char *string){
int *str,len,i,j;
len=strlen(string);
for(i=0,j=len;i<len;i++,j--)
if(*(string+i)==*(string+j-1)&&(i>=len/2))
{
return 1;
}
else return 0;
}
int main(){
char string[100],a;
printf("imput string:\n");
gets(string);
a=palindrome(string);
printf("%d",a);
}
[
本帖最后由 a271885843 于 2012-1-8 21:35 编辑 ]