题目描述
回文字符串是一种字符串,正读和反读该字符串都会得到同样的拼写。例如“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;
}
如有帮助,望采纳!谢谢!