编写一个c程序。编写一个函数,判断一个单词是否是回文,请分别用循环和函数递归实现。并在主函数中输入一个单词,调用该函数判断其是否是回文,并输出判断结果,
时间: 2024-12-24 22:35:23 浏览: 3
经管第7次C语言作业-《C语言程序设计现代方法》课后答案
当然可以。首先,让我们分步骤地写出一个C语言程序,它包含两个部分:循环版本的回文检测函数和递归版本的回文检测函数。
```c
#include <stdio.h>
#include <string.h>
// 循环实现的回文检测函数
int is_palindrome_loop(char *word) {
int start = 0;
int end = strlen(word) - 1;
while (start < end) {
if (word[start] != word[end]) {
return 0; // 如果任意一对字符不相等,则不是回文
}
start++;
end--;
}
return 1; // 所有字符都匹配,所以是回文
}
// 递归实现的回文检测函数
int is_palindrome_recursion(char *word, int start, int end) {
if (start >= end) {
return 1; // 单字符或空字符串都是回文
}
if (word[start] != word[end]) {
return 0;
}
return is_palindrome_recursion(word, start + 1, end - 1);
}
int main() {
char input[100];
printf("请输入一个单词:");
fgets(input, sizeof(input), stdin); // 读取用户输入并去除换行符
input[strcspn(input, "\n")] = '\0'; // 删除多余的换行符
if (is_palindrome_loop(input)) {
printf("%s 是一个回文。\n", input);
} else {
printf("%s 不是一个回文。\n", input);
}
if (is_palindrome_recursion(input, 0, strlen(input) - 1)) {
printf("%s 也是一个通过递归检测到的回文。\n", input);
} else {
printf("%s 通过递归检测不是一个回文。\n", input);
}
return 0;
}
```
在这个程序中,`is_palindrome_loop()` 和 `is_palindrome_recursion()` 分别采用循环和递归的方式来检查给定单词是否为回文。在`main()` 函数中,我们获取用户输入,然后调用这两个函数并打印出结果。
阅读全文