c语言正速 和倒读相同(忽略空格、标点和大写)。写一个函数 isPalindrome, 它接受一个字符串作力輸入, 如果字 符串是回文,则返回1,如果不是,则返回0。
时间: 2024-02-25 20:54:16 浏览: 65
C语言字符/字符串相关函数收藏大全
可以使用类似上面的判断回文的代码,只需要在比较字符时忽略空格、标点和大写。下面是一个实现了这个功能的 isPalindrome 函数的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isPalindrome(char *str) {
int i, len, flag = 0;
char c1, c2;
len = strlen(str);
for(i = 0; i < len/2; i++) {
// 转换为小写字母
c1 = tolower(str[i]);
c2 = tolower(str[len-i-1]);
// 如果是空格或标点,则跳过
if(!isalpha(c1)) {
i++;
c1 = tolower(str[i]);
}
if(!isalpha(c2)) {
len--;
c2 = tolower(str[len-i-1]);
}
// 比较字符是否相等
if(c1 != c2) {
flag = 1;
break;
}
}
if(flag)
return 0;
else
return 1;
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, 100, stdin);
if(isPalindrome(str))
printf("%s 是回文\n", str);
else
printf("%s 不是回文\n", str);
return 0;
}
```
这个程序中,isPalindrome 函数接受一个字符串作为输入,使用一个循环遍历字符串的前一半(因为判断回文只需要比较前一半和后一半是否相等)。在循环中,我们先将字符转换为小写字母,然后判断是否是字母,如果不是,则跳过该字符。最后比较字符是否相等,如果存在不相等的字符,则该字符串不是回文;反之,则是回文。
阅读全文