//你的错误在于递归调用的时候,i每次都是0,所以要用static int i = 0
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站制作、大安网络推广、小程序定制开发、大安网络营销、大安企业策划、大安品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供大安建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
#include stdio.h
#include stdlib.h
#include string.h
int hui(char a[10000])
{
int n;
static int i=0; //这里改为static int i = 0就对了,因为你递归调用i的时候每次都把i置为0了,那肯定不行的,因为你的i是在变得,所以用static
n=strlen(a);
if(i=n-i-1)
return 1;
else
{
if (a[i]==a[n-i-1])
{
i++;
hui(a);
}
else
return 0;
}
}
int main(int argc, char *argv[])
{
char a[10000];
gets(a);
if (strlen(a)==0) {printf("No\n");}
else
{
if(hui(a))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
需要比较整个字符串然后得到结论输出yes而不是只判断了一个字符相等就输出
#includestdio.h
#includestring.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=1;i=len/2;i++)
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
#includestdlib.h
int main()
{
char a[100];
int i=0,j=0;
printf("请输入字符串:\n");
gets(a);
while(a[i]!='\0')
i++;
i--;
for(;j=i;i--,j++)
{
if(a[i]!=a[j])
{
break;
}
}
if(j=i)
{
printf("不是回文串\n",a);
}
else
{
printf("是回文串\n",a);
}
system("pause");
return 0;
}
运行效果:
扩展资料:
return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。