试写一个算法,判别读入的一个以‘@’为结束符的字符序列是否是“回文”用C语言写
时间: 2024-10-08 08:26:21 浏览: 48
当然可以。判断一个字符串是否是回文,我们通常需要比较字符串的首尾字符,然后向中间移动,直到所有的字符都检查过。这里是简单的C语言函数实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int isPalindrome(char str[], int start, int end);
int main() {
char input[100]; // 存储输入字符序列
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串到input
if (input[strlen(input) - 1] == '@') { // 检查是否以'@'结尾
input[strlen(input) - 1] = '\0'; // 截断'@'
if (isPalindrome(input, 0, strlen(input) - 1)) {
printf("是回文。\n");
} else {
printf("不是回文。\n");
}
} else {
printf("输入未以'@'结束。\n");
}
return 0;
}
// 回文判断函数
int isPalindrome(char str[], int start, int end) {
while (start < end) {
if (str[start] != str[end]) {
return 0; // 如果不相等则不是回文
}
start++;
end--;
}
return 1; // 如果遍历完所有字符都相等,则是回文
}
```
这个程序首先读取用户输入的字符序列,直到遇到换行符(如果直接按'@'键,实际上会包含'\n'),然后检测末尾是否为'@'。如果是,截断'@'并调用`isPalindrome`函数进行判断。
阅读全文