假设称正读和反读都相同的字符序列为 “回文” ,例如,“abcddcba” 。 试写一个算法判别读入的一个以 ‘@’ 为结束符的字符序列是否是 “回文”。用C写
时间: 2024-09-16 17:03:32 浏览: 60
为了判断输入的字符序列是否是回文,你可以采用两个指针分别从字符串的开始和结束位置向中间移动,同时比较它们指向的字符是否相同。如果所有对称的字符都匹配,则该字符串是回文。以下是使用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[strcspn(input, "\n")] = '\0'; // 移除换行符
if (isPalindrome(input, 0, strlen(input) - 1)) {
printf("给定的字符序列 '%s' 是回文。\n", input);
} else {
printf("给定的字符序列 '%s' 不是回文。\n", input);
}
return 0;
}
// 判断回文的辅助函数
int isPalindrome(char str[], int start, int end) {
while (start < end) {
if (str[start] != str[end]) {
return 0; // 如果有不匹配的字符,返回0表示不是回文
}
start++;
end--;
}
return 1; // 所有字符都匹配,返回1表示是回文
}
```
在这个程序中,`isPalindrome`函数接收一个字符串、起始索引和结束索引作为参数,通过比较对应位置的字符来检查是否为回文。如果在整个过程中没有发现不匹配的字符,那么就是回文。
阅读全文