假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文。试写一个算法判别读入的一个以‘@’为结束字符的字符序列是否是回文,C语言
时间: 2024-10-25 11:15:24 浏览: 36
可以使用C语言编写一个简单的算法来判断输入的字符串是否是回文。这里是一个基本的思路:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int is_palindrome(char *str);
int main() {
char input[100] = ""; // 存储用户输入的字符串
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串,包括'\n'
// 去掉末尾的换行符
input[strlen(input) - 1] = '\0';
if (is_palindrome(input)) {
printf("输入的字符串是回文。\n");
} else {
printf("输入的字符串不是回文。\n");
}
return 0;
}
// 判断字符串是否是回文
int is_palindrome(char *str) {
int start = 0; // 开始位置
int end = strlen(str) - 1; // 结束位置
while (start < end) { // 只要开始位置小于结束位置
if (str[start] != str[end]) { // 如果对应字符不同
return 0; // 不是回文,直接返回0
}
start++; // 向右移动开始位置
end--; // 向左移动结束位置
}
return 1; // 所有字符比较完毕且都相等,说明是回文,返回1
}
```
这个程序首先读取用户的输入,然后通过`is_palindrome`函数检查它是否是回文。`is_palindrome`函数通过两个指针,一个从字符串开头向后移,另一个从字符串结尾向前移,每次比较对应的字符,直到它们相遇或者发现不匹配。
阅读全文