C语言题目三:回文判断 判断任意s字符串是否为“回文”的递归程序。 (注:回文串是指这个字符串无论从左读还是从右读,所读的顺序是一样的)
时间: 2024-10-11 21:11:24 浏览: 7
在C语言中,我们可以编写一个递归函数来判断一个字符串是否是回文。这里是一个简单的递归方法,它会比较字符串的第一个字符和最后一个字符,如果它们相等,那么就递归地检查剩余部分是否也是回文。下面是一个示例:
```c
#include <stdbool.h>
#include <string.h>
bool isPalindrome(char* s, int start, int end) {
// 基础情况:当start等于end或者超过时,说明是回文
if (start >= end)
return true;
// 检查第一个字符和最后一个字符是否相等
if (s[start] != s[end])
return false;
// 递归调用自身,忽略首尾字符继续检查
return isPalindrome(s, start + 1, end - 1);
}
// 测试函数
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 防止fgets读取换行符
str[strcspn(str, "\n")] = '\0'; // 去除换行符
bool result = isPalindrome(str, 0, strlen(str) - 1);
if (result)
printf("%s 是回文\n", str);
else
printf("%s 不是回文\n", str);
return 0;
}
```
这个`isPalindrome`函数接受三个参数:字符串`s`,起始索引`start`,和终止索引`end`。如果起始索引大于等于终止索引,则返回`true`,表示已经找到回文串;如果第一个字符和最后一个字符不匹配,则返回`false`;否则,递归地调用自己,移除首尾字符,直到满足上述基础条件。