使用c语言编写函数,判断一个字符串是否是回文(要求用指针完成)不使用<string.h>。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串,如“XZYKYZX”是回文。
时间: 2024-02-28 10:52:43 浏览: 18
好的,下面是代码实现:
```c
#include <stdio.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)
{
char *p = str;
char *q = str;
while (*q != '\0') // 找到字符串的结尾
q++;
q--; // q 指向字符串最后一个字符
while (p < q)
{
if (*p != *q)
return 0;
p++;
q--;
}
return 1;
}
```
这个函数的实现和上面的函数类似,只是没有使用 `<string.h>` 库函数。我们依然定义了一个 `is_palindrome` 函数,用于判断一个字符串是否是回文。在该函数中,我们定义两个指针 `p` 和 `q`,分别指向字符串的首尾两端,然后使用 `while` 循环进行遍历。如果发现 `p` 和 `q` 指向的字符不相等,则说明该字符串不是回文,返回0;否则将 `p` 和 `q` 分别往中间移动一位,直到 `p` 大于等于 `q`,此时说明该字符串是回文,返回1。