请问程序哪里错了?初学者请教.
程序的作用是如果字符串是回文,返回值为1,否则为0, '回文 '是指逆读,顺读都一样的字符串,例如: "12321 ", "abba ";
我自己编的程序不知道哪里错了,请高手指教```
#include "stdio.h "
#include "string.h "
int palindrome(char *str)
{
int i,count;
count=strlen(str)/2;
for(i=0;i <count;i++)
{
if(*str+i!=*str+(count-i-1))
return 0;
}
return 1;
}
main()
{ int a;
char b[30];
char *p;
printf( "please input character string:\t ");
scanf( "%s ",b);
p=b;
a=palindrome(p);
printf( "%d ",a);
}
[解决办法]
int palindrome(char *str)
{
int i,count,center;
count =strlen(str);
center= count/2;
for(i=0;i <center;i++)
{
if(str[i] != str[count-i-1])
return 0;
}
return 1;
}
[解决办法]
#include "stdio.h "
#include "string.h "
int palindrome(char *str)
{
int i,count;
int len;
len = strlen(str);
count=strlen(str)/2;
for(i=0;i <count;i++)
{
if(*(str+i)!=*(str+(len-i-1)))
return 0;
}
return 1;
}
main()
{ int a;
char b[30];
char *p;
printf( "please input character string:\t ");
scanf( "%s ",b);
p=b;
a=palindrome(p);
printf( "%d ",a);
}
[解决办法]
int palindrome(char *str)
{
int i,count;
count=strlen(str)/2;
for(i=0;i <count;i++)
{
if(*str+i!=*str+(count-i-1)) //错误在这里。注意指针的的运算和*号的关系
return 0; //*str+i表示str里面的值+i,而不是地址+i
}
return 1;
}