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!

#include <stdio.h>
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。的主要内容,如果未能解决你的问题,请参考以下文章

用递归的方法实现判断回文字符c语言

c语言,利用递归判断回文

C语言:判断一个数是不是为回文数,要求如下:

回文字符串——递归。C语言。

使用 C 中的递归函数测试回文

C语言 判断回文字符串