C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。相关的知识,希望对你有一定的参考价值。
编写一个测试一个串是否为回文的递归函数,是回文,返回1;不是,返回0。并在主函数调用该函数,判断输入的字符串是否为回文串。回文是正读和反读都一样的串。
输入:第一行为正整数N,表示有N组输入数据;每组输入对应一行,为一个字符串。
输出:每组输入对应一行输出,若输入的字符串是回文则输出“Yes!”,否则输出“No!”。
注意:用递归
样例输入
5
abccccbccccba
123454321
adsf fsda
hijkkjih
namemaa
样例输出
Yes!
Yes!
No!
Yes!
No!
int huiwen(char *s,int n)
if(n<2)return 1;
if(*s!=*(s+n-1))return 0;
return huiwen(s+1,n-2);
int main()
char s[200];
int i,k;
scanf("%d%*c",&k);
while(k--)
gets(s);
for(i=0;s[i];i++);
printf("%s\\n",huiwen(s,i)?"Yes!":"No!"); //运行完了才加上的"!"
return 0;
参考技术A
只给你写个核心代码吧
//判断一个长度为length的字符串str是否为回文bool isPalin(const char* str, int length)
if(length <= 1)
return true;
if(str[0] != str[length - 1])
return false;
return isPalin(str + 1, length - 1);
参考技术B #include <stdio.h>
#include <string.h>
int check( char *str, int len )
if ( len > 1 )
if ( *str!=*(str+len-1) )
return 0;
return check( str+1, len-2 );
else
return 1;
void main()
int rep=0;
char str[100];
scanf("%d", &rep); getchar();
while( rep-- )
gets(str);
if ( check(str,strlen(str) ) == 1 )
printf("Yes!\\n");
else
printf("No!\\n");
本回答被提问者采纳 参考技术C //判断一个长度为length的字符串str是否为回文
bool isPalin(const char* str, int length)
if(length <= 1)
return true;
if(str[0] != str[length - 1])
return false;
return isPalin(str + 1, length - 1);
以上是关于C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。的主要内容,如果未能解决你的问题,请参考以下文章