C语言判断输入的字符串是否为回文
时间: 2024-09-17 20:02:40 浏览: 43
字符串寻找最长回文
在C语言中,判断一个字符串是否为回文通常采用双指针法,即设置两个指针,一个从字符串的起始位置开始(通常是`str`),另一个从字符串的结束位置开始(通常是`str + strlen(str) - 1`)。然后,逐个比较这两个指针对应的字符是否相等。如果所有对应字符都相等,那么字符串就是回文;如果有任何一个不相等,就立即返回false。
以下是一个简单的C语言函数,用于检查输入的字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数isPalindrome检查字符串是否回文
int isPalindrome(const char *str) {
// 初始化左右指针
const char *left = str;
const char *right = str + strlen(str) - 1;
// 循环直到左右指针交叉或相遇
while (left < right) {
if (*left != *right) { // 如果左边的字符不等于右边的字符
return 0; // 直接返回 false,表示不是回文
}
left++; // 左指针右移一位
right--; // 右指针左移一位
}
return 1; // 指针交叉或相遇,说明是回文,返回 true
}
int main() {
char input[100];
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 防止换行符干扰
input[strcspn(input, "\n")] = '\0'; // 移除fgets读取的换行符
if (isPalindrome(input)) {
printf("%s是回文字符串\n", input);
} else {
printf("%s不是回文字符串\n", input);
}
return 0;
}
```
在这个例子中,我们首先获取用户输入,然后调用`isPalindrome`函数进行判断,并根据结果输出相应的提示信息。如果想在`main()`函数内部简化代码,也可以直接在循环中处理输入,并省去`fgets`。
阅读全文