编写一个函数 isPalindrome, 判断一个字符串是否是回文。 要求:判断过程通过指针操作实现! 函数接口定义: int isPalindrome ( char *str );
时间: 2024-02-12 10:07:25 浏览: 165
好的,我来为您编写这个函数。以下是函数的实现:
```c++
int isPalindrome(char *str) {
if (!str) {
return 0;
}
int len = strlen(str);
for (int i = 0, j = len - 1; i < j; ++i, --j) {
if (*(str + i) != *(str + j)) {
return 0;
}
}
return 1;
}
```
函数的参数说明如下:
- `str`:指向待判断字符串的指针。
函数的实现比较简单,我们只需要遍历字符串中的每个字符,判断其是否与字符串对称位置上的字符相同即可。可以使用双指针法来实现,一个指针从字符串首部开始遍历,一个指针从字符串尾部开始遍历,每次比较两个指针位置上的字符是否相同,如果存在不同的情况,就说明字符串不是回文,直接返回0;如果整个字符串都被遍历完了,就说明字符串是回文,返回1。
相关问题
C语言回文是前后两个方向拼写完全相同的字符串。回文的例子如“radar”、"ABCBA"和"ABBA"。很显然,空字符串是回文,任何一个只有1个字符的字符串是回文。 编写一个函数 isPalindrome, 判断一个字符串是否是回文。 要求:判断过程通过指针操作实现! 函数接口定义: int isPalindrome ( char *str ); 判断字符串 str 是否回文,若是返回1,否则返回0。 裁判测试程序样例: #include <stdio.h> #include "string.h" int isPalindrome ( char *str ); int main() { char s[81]; gets(s); if(isPalindrome(s)==1) printf("Yes"); else printf("No"); } /* 请在这里填写答案 */
答案如下:
```c
int isPalindrome(char *str) {
int len = strlen(str);
char *p = str;
char *q = str + len - 1;
while (p < q) {
if (*p != *q) {
return 0;
}
p++;
q--;
}
return 1;
}
```
思路:用指针指向字符串的头尾,每次比较两个指针指向的字符是否相同,如果不同则不是回文,返回0;如果一直比较到两个指针相遇也没有发现不同的字符,说明是回文,返回1。
从键盘输入一个字符串,判断该字符串是否是回文(回文:正反方向读结果一样),要求必须用到指针。本题要用到strlen函数(头文件:string.h)判断字符串长度。
要使用指针判断一个字符串是否为回文,你可以采用以下步骤:
1. 首先,从键盘输入字符串,可以使用`scanf`函数配合字符数组来获取输入。
2. 接着,创建两个指向字符串起始位置的指针,一个指向前半部分(首字符开始),另一个指向后半部分(倒数第二个字符开始)。
3. 使用`strlen`函数计算字符串长度,并将其除以2得到半个字符串的长度,因为回文是对称的,所以不需要检查中间字符。
4. 进行循环比较,对于每个半字符串中的字符,如果前半部分的指针指向的字符不等于后半部分指针所指的字符,那么这个字符串就不是回文。
5. 如果所有字符都匹配,那么字符串就是回文。
以下是一个简单的C语言程序示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 假设字符串不超过98个字符
int len, half_len;
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin); // 注意fgets防止末尾换行符
len = strlen(str);
half_len = len / 2;
// 将字符串最后一个字符移动到第一个字符前面形成后半部分的起始点
char* end_ptr = str + (len - 1);
for(int i = 0; i < half_len; ++i) {
if(*str != *end_ptr) { // 指针比较字符
printf("%s 不是回文。\n", str);
return 0;
}
str++; // 移动前半部分指针
end_ptr--;
}
printf("%s 是回文。\n", str);
return 0;
}
```
阅读全文
相关推荐















