C语言编写一道程序:(1)输入一行字符串,判断其是否是回文字符串 规则:只判断字母和数字,忽略大小写 如: 输入:i am a a121,a a ma i 输出:true // 回文 输入:abcd 12 abcd 输出:false
时间: 2023-12-31 21:04:31 浏览: 109
C语言 判断字符串是否是回文
5星 · 资源好评率100%
以下是一份C语言程序,用于判断输入字符串是否为回文字符串:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char str[1000];
int left, right, len;
printf("请输入字符串:");
fgets(str, 1000, stdin);
len = strlen(str) - 1; // 去除最后一个换行符
left = 0;
right = len - 1;
while (left < right) {
while (left < right && !isalnum(str[left])) left++;
while (left < right && !isalnum(str[right])) right--;
if (tolower(str[left]) != tolower(str[right])) {
printf("false\n");
return 0;
}
left++;
right--;
}
printf("true\n");
return 0;
}
```
程序的思路如下:
1. 定义一个字符串数组 `str`,用于存储输入的字符串;
2. 定义三个整型变量 `left`、`right` 和 `len`,分别代表字符串的左下标、右下标和长度;
3. 使用 `fgets()` 函数读取用户输入的字符串,并去除最后一个换行符;
4. `left` 初始化为 0,`right` 初始化为 `len - 1`;
5. 循环判断,如果 `left >= right`,则说明已经判断完整个字符串,输出 `true`;
6. 在循环中,使用 `isalnum()` 函数判断字符是否是字母或数字,如果不是,则继续移动 `left` 或 `right`;
7. 使用 `tolower()` 函数将字符转换为小写字母,并判断左右两个字符是否相等,如果不相等,则输出 `false`;
8. 如果左右两个字符相等,则将 `left` 和 `right` 分别加 1 和减 1,继续循环判断。
使用示例:
```
请输入字符串:i am a a121,a a ma i
true
请输入字符串:abcd 12 abcd
false
```
阅读全文