编写函数,判断一个字符串是否是回文(要求用指针完成)。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串,如“XZYKYZX”是回文。
时间: 2024-02-28 14:52:40 浏览: 63
好的,我会帮您完成这个任务。以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int is_palindrome(char *str);
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (is_palindrome(str))
printf("%s 是回文字符串。\n", str);
else
printf("%s 不是回文字符串。\n", str);
return 0;
}
int is_palindrome(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;
}
```
在这段代码中,我们首先定义了一个 `is_palindrome` 函数,用于判断一个字符串是否是回文。该函数接收一个字符指针 `str`,表示待判断的字符串,返回一个整数值,如果是回文则为1,否则为0。
然后在 `main` 函数中,我们先输入一个字符串,然后调用 `is_palindrome` 函数进行判断,根据返回值输出相应的结果。
在 `is_palindrome` 函数中,我们首先获取字符串长度,然后定义两个指针 `p` 和 `q`,分别指向字符串首尾两端。接着我们使用循环进行遍历,如果发现 `p` 和 `q` 指向的字符不相等,则说明该字符串不是回文,返回0;否则将 `p` 和 `q` 分别往中间移动一位,直到 `p` 大于等于 `q`,此时说明该字符串是回文,返回1。
阅读全文