c语言数组实现一个函数,判断字符串是否是回文。如果是则返回1,否则返回0。
时间: 2023-06-19 21:08:49 浏览: 52
可以使用双指针法,从字符串的两端开始遍历,判断是否相等。
以下是一个示例代码:
```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语言编写函数,判断一个字符串是否是回文,调用该函数后输出结果。
好的,这是一个简单的C语言程序,实现了判断一个字符串是否是回文的功能:
```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 str[100];
printf("请输入字符串:");
scanf("%s", str);
if (is_palindrome(str)) {
printf("是回文字符串\n");
} else {
printf("不是回文字符串\n");
}
return 0;
}
```
在该程序中,我们定义了一个名为is_palindrome()的函数,它的形参是一个指向字符数组的指针变量。在该函数中,我们首先使用strlen()函数计算出字符串的长度。接着使用两个指针i和j,分别指向字符串的开头和结尾,从两端开始遍历字符串,每次比较两个字符是否相等,如果不相等就返回0,表示不是回文字符串。如果遍历完整个字符串后都没有返回0,则说明是回文字符串,返回1。
在main()函数中,我们首先定义了一个字符数组str,然后使用scanf()函数从标准输入中读取这个字符串。接着调用is_palindrome()函数判断字符串是否是回文,最后输出结果。
需要注意的是,在输入字符串时,我们使用了%s格式控制符,这个控制符表示读取一个字符串,遇到空格或者换行符就停止读取。
c语言判断字符串是否是回文
### 回答1:
可以使用以下方法来判断一个字符串是否是回文:
1. 定义两个指针,一个指向字符串的开头,一个指向字符串的结尾。
2. 依次比较这两个指针所指向的字符,如果相同则继续比较下一个,直到两个指针相遇。
3. 如果在比较的过程中发现不同的字符,则说明这个字符串不是回文。
4. 如果两个指针相遇时都没有发现不同的字符,则说明这个字符串是回文。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for(i = 0; i < len/2; i++) {
if(str[i] != str[len-i-1]) {
flag = 1;
break;
}
}
if(flag)
printf("%s 不是回文\n", str);
else
printf("%s 是回文\n", str);
return 0;
}
```
在这个示例代码中,我们使用了一个变量 `flag` 来标记是否发现了不同的字符。如果在比较的过程中发现不同的字符,则将 `flag` 设置为 1,跳出循环并输出结果;否则循环结束后输出结果。
### 回答2:
C语言判断字符串是否是回文可以通过以下步骤实现:
1. 接收用户输入的字符串。
2. 定义两个指针,一个指向字符串的开头,一个指向字符串的末尾。
3. 判断两个指针指向的字符是否相等,如果相等,则移动两个指针分别指向下一个字符,重复这一步骤;
如果不相等,则说明字符串不是回文,输出结果为“不是回文”。
4. 当两个指针相遇时,说明字符串是回文,输出结果为“是回文”。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int i = 0;
int j = len - 1;
int flag = 1;
while (i < j) {
if (str[i] != str[j]) {
flag = 0;
break;
}
i++;
j--;
}
if (flag) {
printf("是回文\n");
} else {
printf("不是回文\n");
}
return 0;
}
```
该示例中,我们首先使用`scanf`函数接收用户输入的字符串,并使用`strlen`函数获取字符串的长度。然后,我们使用两个指针`i`和`j`分别指向字符串的开头和末尾,并在循环中比较两个指针指向的字符是否相等。如果发现不相等的字符,则将`flag`标志设为0,同时跳出循环。最后,根据`flag`的值判断是否输出结果为“是回文”或“不是回文”。
### 回答3:
要判断一个字符串是否是回文,可以使用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 0; // 不是回文
}
}
return 1; // 是回文
}
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str);
if (isPalindrome(str)) {
printf("%s 是回文。\n", str);
} else {
printf("%s 不是回文。\n", str);
}
return 0;
}
```
首先,定义一个 `isPalindrome` 函数,接受一个字符串作为参数。使用两个指针,一个指向字符串开头,另一个指向结尾。然后,比较指针所指向的字符是否相同,如果有不相同的字符,则说明不是回文,返回0;如果指针相遇或者交叉,说明是回文,返回1。
在 `main` 函数中,首先声明一个字符数组 `str`,用于存储用户输入的字符串。然后,使用 `gets` 函数获取用户输入的字符串。接下来,调用 `isPalindrome` 函数判断字符串是否是回文,并根据返回的结果输出相应的提示信息。
以上的代码可以判断单词是否是回文,对于句子中包含空格或者标点符号的情况稍有差别,需要进行处理。