回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。C语言
时间: 2024-10-01 07:13:26 浏览: 8
在C语言中,你可以通过双指针法来判断一个字符串是否为回文。这里是一个简单的C程序示例:
```c
#include <stdio.h>
#include <string.h>
// 定义函数检查字符串是否为回文
int isPalindrome(char str[]) {
int length = strlen(str);
int start = 0;
int end = length - 1;
// 当两个指针指向的字符都相等时,继续移动
while (start < end) {
if (str[start] != str[end]) {
return 0; // 如果发现不相等,则非回文
}
start++;
end--;
}
return 1; // 如果遍历完都没有不相等,说明是回文
}
int main() {
char input[100];
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 注意:fgets处理换行符
input[strcspn(input, "\n")] = '\0'; // 移除fgets添加的换行符
if (isPalindrome(input)) {
printf("%s 是回文\n", input);
} else {
printf("%s 不是回文\n", input);
}
return 0;
}
```
这个程序首先获取用户输入的字符串,然后使用 `isPalindrome` 函数检查它是否为回文。双指针从字符串两端开始比较,如果在任何时候找到不相等的字符,就立即返回 `0` 表示不是回文;反之,如果整个过程都没有找到不相等的,就返回 `1`。