用C语言写一个程序实现下面的功能
时间: 2023-10-08 21:04:35 浏览: 94
题目描述
输入一个字符串,判断该字符串是否为回文字符串(正反读都一样),忽略大小写和空格。
输入格式
输入一个字符串,长度不超过100。
输出格式
如果该字符串是回文字符串,则输出YES,否则输出NO。
输入样例
A man a plan a canal Panama
输出样例
YES
C语言程序
```c
#include <stdio.h>
#include <ctype.h> // 包含 tolower 函数
int is_palindrome(char s[], int len);
int main()
{
char str[101];
fgets(str, 101, stdin); // 读入字符串
int len = 0;
while (str[len] != '\n') // 计算字符串长度
len++;
if (is_palindrome(str, len))
printf("YES");
else
printf("NO");
return 0;
}
int is_palindrome(char s[], int len)
{
int i = 0, j = len - 1;
while (i < j) {
if (s[i] != s[j]) {
if (tolower(s[i]) != tolower(s[j]))
return 0; // 不是回文字符串
}
i++;
j--;
}
return 1; // 是回文字符串
}
```
思路说明
- 使用 fgets 函数读入字符串,可以包含空格和换行符;
- 使用 tolower 函数将大写字母转换为小写字母,方便比较;
- 从字符串两端开始比较字符,如果遇到不同的字符,再用 tolower 函数将它们转换为小写字母再比较,如果还不同,则不是回文字符串,返回 0,否则继续比较;
- 如果比较到中间字符都没有发现不同,则是回文字符串,返回 1。
阅读全文