首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教程序错哪了?菜鸟请问

2012-04-11 
请问程序哪里错了?初学者请教.程序的作用是如果字符串是回文,返回值为1,否则为0, 回文 是指逆读,顺读都一

请问程序哪里错了?初学者请教.
程序的作用是如果字符串是回文,返回值为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;
}

热点排行