如何在C语言中定义并实现一个函数来检查一个字符串是否是回文串?
时间: 2024-12-24 15:36:03 浏览: 21
在C语言中,可以定义一个函数来检查一个字符串是否是回文串,即正读和反读都一样的字符串。下面是一个简单的例子:
```c
#include <stdio.h>
#include <string.h> // 包含字符串处理库
// 定义函数,接收一个字符串作为参数,并返回一个整型结果(0表示不是回文,非0表示是)
int isPalindrome(char str[]) {
int len = strlen(str); // 计算字符串长度
for (int i = 0; i < len / 2; ++i) { // 只需要检查一半,因为两端对称
if (str[i] != str[len - 1 - i]) { // 如果对应字符不同
return 0; // 返回0,表示不是回文
}
}
return 1; // 遍历完都没找到不同字符,说明是回文
}
int main() {
char test_str[] = "madam"; // 测试字符串
if (isPalindrome(test_str)) {
printf("%s 是回文串\n", test_str);
} else {
printf("%s 不是回文串\n", test_str);
}
return 0;
}
```
相关问题
如何在C语言中定义并实现一个函数来检查输入的字符串是否是回文串?
在C语言中,你可以通过定义一个函数来检查一个字符串是否是回文串,即正读和反读都相同的字符串。这里是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int isPalindrome(char str[]);
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 从用户输入获取字符串
input[strcspn(input, "\n")] = '\0'; // 移除fgets添加的换行符
if (isPalindrome(input)) {
printf("%s is a palindrome.\n", input);
} else {
printf("%s is not a palindrome.\n", input);
}
return 0;
}
// 实现isPalindrome函数
int isPalindrome(char str[]) {
int start = 0;
int end = strlen(str) - 1;
while (start < end) { // 当start小于end时继续比较
if (str[start] != str[end]) {
return 0; // 如果字符不匹配,不是回文,返回0
}
start++;
end--;
}
return 1; // 所有字符都匹配,返回1表示是回文
}
```
在这个代码中,`isPalindrome`函数接收一个字符数组作为参数,通过两个指针`start`和`end`分别指向字符串的首尾,然后逐个比较字符是否相等。如果发现不相等的字符,则立即返回0;当所有字符都比较过且都匹配时,说明字符串是回文,返回1。
如何用C语言编写一个函数来检查一个字符串是否为回文?
在C语言中,你可以通过比较字符串的第一个字符和最后一个字符,然后逐个向前移动直到两个指针相遇,同时检查对应位置的字符是否相等来判断一个字符串是否为回文。这里是一个简单的示例函数:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数,判断字符串是否为回文
int isPalindrome(char str[]) {
int len = strlen(str); // 获取字符串长度
for (int i = 0; i < len / 2; i++) { // 只需要比较一半的字符
if (str[i] != str[len - 1 - i]) { // 如果当前字符和对应反向字符不相等,则不是回文
return 0;
}
}
return 1; // 所有字符都匹配,说明是回文
}
int main() {
char test_str[] = "madam";
if (isPalindrome(test_str)) {
printf("%s 是回文\n", test_str);
} else {
printf("%s 不是回文\n", test_str);
}
return 0;
}
阅读全文