c语言回文判断。从键盘输入任意一个字符串,判断该字符串是否为回文。(字符串首部和尾部的空格不参与比较)。(用字符串解决)
时间: 2024-12-31 19:00:56 浏览: 5
在C语言中,判断一个字符串是否为回文可以采用双指针法。首先,我们需要忽略字符串两端的空格,然后创建两个指针,一个指向字符串的开头(left),另一个指向字符串的结尾(right)。接下来,遍历字符串直到两个指针相遇:
1. 使用`while`循环,条件是`left`小于`right`:
- 如果`left`指向的字符(减去空格后的)和`right`指向的字符相等,继续移动`left`向右一位,`right`向左一位;
- 否则,字符串不是回文,直接返回`false`。
2. 当`left`大于等于`right`时,说明所有的字符都检查过了,并且它们两两匹配,所以这是一个回文字符串,返回`true`。
下面是一个简单的C语言函数示例,用于判断字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int left = 0, right = strlen(str) - 1;
// 移除首尾空格
while (str[left] == ' ') left++;
while (str[right] == ' ') right--;
// 检查字符串是否为回文
while (left < right) {
if (str[left] != str[right]) return 0; // 不是回文
left++; right--;
}
return 1; // 是回文
}
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
input[strlen(input) - 1] = '\0'; // 去掉换行符
if (isPalindrome(input)) {
printf("是回文字符串。\n");
} else {
printf("不是回文字符串。\n");
}
return 0;
}
```
阅读全文