“回文”是一种顺序读和反序读都一样的字符串,例如:“121”“abcba” “ABCCBA”编写程序,判断任一字符串是否为回文
时间: 2023-10-20 12:07:20 浏览: 111
判断一个字符串是否为回文,可以通过比较字符串的首尾字符是否相同来实现。以下是一个示例程序的实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is_palindrome(char *str) {
int i = 0;
int j = strlen(str) - 1;
while (i < j) {
while (!isalnum(str[i]) && i < j) i++; // 跳过非字母或数字的字符
while (!isalnum(str[j]) && i < j) j--;
if (tolower(str[i]) != tolower(str[j])) { // 判断首尾字符是否相同
return 0;
}
i++;
j--;
}
return 1;
}
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, 100, stdin); // 从标准输入读取字符串
if (is_palindrome(str)) {
printf("是回文字符串\n");
}
else {
printf("不是回文字符串\n");
}
return 0;
}
```
在上面的代码中,我们定义了一个is_palindrome函数来判断输入的字符串是否为回文。函数的参数是一个字符指针str,指向输入的字符串。
在函数内部,我们使用两个指针变量i和j来分别指向字符串的首字符和尾字符。使用两个while循环分别跳过字符串中的非字母或数字的字符,并使用tolower函数将字母转换为小写字母进行比较。如果首尾字符不相同,则返回0;否则,继续遍历字符串。如果遍历完成后没有发现不同的字符,则返回1,表示字符串是回文的。
在main函数中,我们使用fgets函数从标准输入读取输入的字符串,并将其传递给is_palindrome函数进行判断。最后,我们根据函数的返回值打印出相应的提示信息。
阅读全文