用C语言编写函数,判断一个字符串是不是回文,如是则返回1,否则返回-1(回文是指这个字符串逆置后不变,如98789)
时间: 2024-05-07 14:19:18 浏览: 18
以下是一个基于C语言的函数实现,用于判断一个字符串是否为回文。
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char* str)
{
int i = 0, j = strlen(str) - 1;
while (i < j) {
if (str[i] != str[j])
return -1;
i++;
j--;
}
return 1;
}
int main()
{
char str[100];
printf("Enter a string: ");
gets(str);
if (isPalindrome(str) == 1)
printf("%s is a palindrome.\n", str);
else
printf("%s is not a palindrome.\n", str);
return 0;
}
```
该函数首先通过使用 `strlen` 函数获取字符串的长度,并用两个指针 `i` 和 `j` 分别指向字符串的头和尾。然后,它检查字符串的第一个字符和最后一个字符是否相等。如果它们不相等,则该函数返回 -1,表明该字符串不是回文。如果它们相等,则该函数移动指针并继续重复该过程,直到两个指针相遇或发现字符串不是回文。如果它们相遇,则该函数返回 1,表示该字符串是回文。
相关问题
用C语言编写函数,判断一个字符串是否为回文,如是返回1,否则返回-1.
以下是用C语言编写的函数,用于判断一个字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int i, j;
int len = strlen(str);
for (i = 0, j = len - 1; i <= j; i++, j--) {
if (str[i] != str[j]) {
return -1;
}
}
return 1;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if (isPalindrome(str) == 1) {
printf("%s is a palindrome.\n", str);
}
else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
```
在这个函数中,我们首先使用`strlen()`函数获取字符串的长度。然后使用两个指针`i`和`j`来遍历字符串,`i`从头开始遍历,`j`从尾开始遍历,每次迭代都会比较字符`str[i]`和`str[j]`,如果它们不相等,则返回-1,表示该字符串不是回文。最后,如果成功遍历了整个字符串,就返回1,表示该字符串是回文。
用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。