回文判断。从键盘输入任意一个字符串,判断该字符串是否为回文。(字符串首部和尾部的空格不参与比较)。(用字符串解决)
时间: 2024-10-20 14:13:47 浏览: 46
回文判断是指一个字符串从前往后读和从后往前读是一样的,即忽略空格和标点符号后,正向和反向拼接结果一致。以下是使用C语言编写的一个简单程序来完成这一任务:
```c
#include <stdio.h>
#include <string.h>
// 去除字符串两端的空格
void trim(char str[]) {
int start = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (!isspace(str[i])) {
str[start++] = str[i];
}
}
str[start] = '\0'; // 结束字符串
}
// 判断字符串是否为回文
int isPalindrome(const char* str) {
trim(str); // 先去除两端空格
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i]) {
return 0; // 不是回文
}
}
return 1; // 是回文
}
int main() {
char input[100];
printf("请输入字符串:");
fgets(input, sizeof(input), stdin); // 从键盘获取字符串
input[strcspn(input, "\n")] = '\0'; // 去除换行符
if (isPalindrome(input)) {
printf("是回文。\n");
} else {
printf("不是回文。\n");
}
return 0;
}
```
在这个程序中,我们首先定义了一个`trim`函数用于移除字符串首尾的空格,然后在`isPalindrome`函数中遍历字符串的一半,对比对应的字符是否相等。如果存在不相等的字符,则返回0表示不是回文,否则返回1表示是回文。
阅读全文