c语言回文求答案.字符串中只包含26个小写字母和10个数字字符。

题目描述

回文字符串是一种字符串,正读和反读该字符串都会得到同样的拼写。例如“radar”、“ablewasiereisawelba”和 “amanaplanacanalpanama”都是回文。编写一个递归函数testPalindrome,如果数组中储存的字符串是回文,则返回 true,否则,返回false。字符串中只包含26个小写字母和10个数字字符。

输入

第一行包含一个整数T,表示有T组数据。以下T行每行包含一个字符串(小于50个字符),表示T个字符串。

输出

对于每组数据,如果其为回文,这返回true,否则返回false。

#include <stdio.h>
#include <string.h>
int main()
{
    char s[80];
    int i,j;
    printf("Please input the string:\n");
    gets(s);
    j=strlen(s)-1;
    for(i=0;i<j;i++,j--)
        if(s[i]!=s[j])
            break;
    if(i<j)
        printf("No");
    else
        printf("Yes");
    return 0;
}

求字符串首尾开始向中间移动,逐对字符比较,如果有不同,则不是回文

用递归函数testPalindrome的

你题目的解答代码如下:

#include<stdio.h>
#include <string.h>

int testPalindrome(char s[], int a,int b)
{
    if (a<b)
    {
        if (s[a]!=s[b])
            return 0;
        else
            return testPalindrome(s, a+1,b-1);
    }
    else
        return 1;
}

int main()
{
    int t,i;
    char s[51];
    scanf("%d", &t);
    getchar();
    for(i=0;i<t;i++){
        gets(s);
        if(testPalindrome(s,0,strlen(s)-1))
            printf("true\n");
        else
            printf("false\n");
    }
    return 0;
}

如有帮助,望采纳!谢谢!