c语言数组实现一个函数,判断字符串是否是回文。如果是则返回1,否则返回0。
时间: 2023-06-19 14:08:49 浏览: 100
可以使用双指针法,从字符串的两端开始遍历,判断是否相等。
以下是一个示例代码:
```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。在主函数中,我们可以测试两个字符串是否是回文。
相关问题
用c语言数组编写程序,判断以字符串是否是回文串, 回文串是顺读和逆读都是一样的字符串 样例 显示:请输入字符串: 输入:12321 输出:12321是回文。
在 C 语言中,我们可以使用数组存储字符串,然后逐个比较字符以确定它是否是回文串。以下是一个简单的程序示例:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
int start = 0, end = len - 1;
// 检查字符串长度是否小于2,因为单个字符也是回文
while (start < end) {
if (str[start] != str[end]) {
return 0; // 非回文
}
start++;
end--;
}
return 1; // 回文
}
int main() {
char input[100];
// 从键盘输入字符串
printf("请输入字符串:");
fgets(input, sizeof(input), stdin); // 使用fgets防止换行符被当作字符
// 去掉字符串末尾的换行符
input[strcspn(input, "\n")] = '\0';
// 判断并输出结果
if (isPalindrome(input)) {
printf("%s是回文。\n", input);
} else {
printf("%s不是回文。\n", input);
}
return 0;
}
```
这个程序首先定义了一个函数 `isPalindrome`,它接受一个字符数组作为参数,使用两个指针 `start` 和 `end` 分别指向字符串的开始和结束位置。然后,它们同时向中间移动,比较对应位置的字符。如果有任何一个字符不同,则返回 0,表示不是回文;否则当 `start` 超过 `end` 时,返回 1,表示是回文。
在主函数 `main` 中,我们先从键盘接收字符串,然后调用 `isPalindrome` 函数判断并输出结果。
c语言编写函数判断一个字符串是否为回文运用指针函数并判断输入字符串是否为回文
在C语言中,我们可以利用指针和循环结构来编写一个函数来判断一个字符串是否是回文。回文是指正读反读都一样的字符串,比如"level"、"racecar"等。
下面是一个简单的C函数示例,它接受两个指向字符数组的指针作为参数,通过比较首尾字符是否相等来判断字符串是否为回文:
```c
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool is_palindrome(char *str1, char *str2) {
// 如果两个指针交叉点到达结束位置,则说明是回文
if (str1 >= str2)
return true;
// 比较两个指针所指的字符是否相等
while (*str1 == *str2) {
str1++;
str2--;
}
// 如果有不相等的字符,说明不是回文
return false;
}
int main() {
char input[] = "madam";
if (is_palindrome(input, input + strlen(input) - 1)) {
printf("%s is a palindrome.\n", input);
} else {
printf("%s is not a palindrome.\n", input);
}
return 0;
}
```
在这个例子中,`str1` 和 `str2` 分别指向字符串的开始和结束,然后向中心移动,如果发现有不匹配的字符则返回 `false`。如果没有找到不匹配的字符,说明整个字符串是回文,返回 `true`。
阅读全文