c语言实现一个函数,判断字符串是否是回文。如果是则返回1,否则返回0。
时间: 2023-06-19 14:08:22 浏览: 76
可以使用双指针法来实现。
具体思路是,定义两个指针,一个指向字符串的开头,一个指向字符串的结尾,然后分别向中间移动,每次比较两个指针所指向的字符是否相同,若不同,则字符串不是回文,返回0;若相同,则继续移动指针,直到两个指针相遇,此时字符串是回文,返回1。
下面是代码实现:
```
#include <stdio.h>
#include <string.h>
int is_palindrome(char *str) {
int len = strlen(str);
char *left = str;
char *right = str + len - 1;
while (left < right) {
if (*left != *right) {
return 0;
}
left++;
right--;
}
return 1;
}
int main() {
char str1[] = "abcba";
char str2[] = "hello";
printf("%d\n", is_palindrome(str1)); // 输出 1
printf("%d\n", is_palindrome(str2)); // 输出 0
return 0;
}
```
相关问题
用C语言实现一个函数,判断字符串是否是回文。如果是则返回1,否则返回0。
下面是用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-i-1]) {
return 0;
}
}
return 1;
}
int main() {
char str1[] = "abcba";
char str2[] = "hello";
if(isPalindrome(str1)) {
printf("%s is a palindrome.\n", str1);
} else {
printf("%s is not a palindrome.\n", str1);
}
if(isPalindrome(str2)) {
printf("%s is a palindrome.\n", str2);
} else {
printf("%s is not a palindrome.\n", str2);
}
return 0;
}
```
输出结果为:
```
abcba is a palindrome.
hello is not a palindrome.
```
该函数先计算字符串的长度,然后从字符串的开头和结尾开始遍历,如果发现有不同的字符,则字符串不是回文,返回0;如果遍历到中间位置时所有字符都相同,则字符串是回文,返回1。
c语言数组实现一个函数,判断字符串是否是回文。如果是则返回1,否则返回0。
可以使用双指针法,从字符串的两端开始遍历,判断是否相等。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int is_palindrome(char str[]) {
int len = strlen(str);
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j])
return 0;
}
return 1;
}
int main() {
char str1[] = "hello";
char str2[] = "racecar";
printf("%d\n", is_palindrome(str1)); // 0
printf("%d\n", is_palindrome(str2)); // 1
return 0;
}
```
在 `is_palindrome` 函数中,先计算字符串的长度,然后使用双指针分别从前往后和从后往前遍历字符串,如果发现不相等的字符,就返回0,否则返回1。在主函数中,我们可以测试两个字符串是否是回文。
阅读全文