C语言字符串回文判定
时间: 2024-08-15 21:06:29 浏览: 102
回文字符串是一个特殊的字符序列,即正序读和倒序读完全相同的字符串。例如:"madam" 或者 "racecar"。在C语言中,我们经常处理字符串,并且需要一些方法来判断一个字符串是否是回文。这通常涉及到对字符串进行逐字符的比较。
以下是一个C语言函数用于检测字符串是否为回文:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(const char *str) {
int len = strlen(str);
for(int i = 0; i < len / 2; ++i) {
// 跳过非字母数字字符,并将其转换为小写
while (!isalnum(str[i]) && i < len - 1) i++;
while (!isalnum(str[len-i-1]) && len-i-1 > 0) len--;
if(tolower(str[i]) != tolower(str[len-i-1])) {
return false;
}
}
return true;
}
int main() {
const char* str1 = "Madam";
const char* str2 = "racecar";
const char* str3 = "hello";
printf("'%s' is palindrome? %s\n", str1, isPalindrome(str1) ? "Yes" : "No");
printf("'%s' is palindrome? %s\n", str2, isPalindrome(str2) ? "Yes" : "No");
printf("'%s' is palindrome? %s\n", str3, isPalindrome(str3) ? "Yes" : "No");
return 0;
}
```
在这个程序中,首先导入了必要的头文件。`isPalindrome()` 函数接收一个指向字符串的指针作为参数。该函数计算字符串的长度,并从两端开始逐步向中心移动,比较对应的字符。如果在任何时候发现两个对应位置的字符不匹配,则返回false,表示输入的字符串不是一个回文。只有当所有的字符都匹配时,才会返回true。
运行此程序会显示以下结果:
```
'Madam' is palindrome? Yes
'racescar' is palindrome? Yes
'hello' is palindrome? No
```
以上是使用C语言判断字符串是否为回文的基本方法和代码实例。希望对您有所帮助!
阅读全文