用指针编写函数int pla(char*str)判断一个字符串是否是回文,如“abcba”是回文,而“abcab”不是回文
时间: 2024-05-02 17:16:12 浏览: 72
以下是用指针编写的判断字符串是否为回文的函数:
```c
int pla(char *str) {
char *p = str;
char *q = str + strlen(str) - 1;
while (p < q) {
if (*p != *q) {
return 0; // 不是回文
}
++p;
--q;
}
return 1; // 是回文
}
```
这个函数接收一个指向字符串的指针,然后用两个指针 `p` 和 `q` 分别指向字符串的头和尾。然后在一个循环中,它将比较 `p` 和 `q` 所指向的字符是否相同。如果它们不相同,那么该函数会返回 `0` 表示不是回文;否则,它将移动指针 `p` 和 `q` 继续比较。如果一直比较到 `p` 大于等于 `q`,那么该函数将返回 `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。
编写一个函数 isPalindrome, 判断一个字符串是否是回文。 要求:判断过程通过指针操作实现! 函数接口定义: int isPalindrome ( char *str );
好的,我来为您编写这个函数。以下是函数的实现:
```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。
阅读全文