酷代码 AI
菜单

6-7 判断回文 分数 10 全屏浏览 切换布局 作者 ** 单位 青岛大学 如果一串字符从左至右读和从右至左读相同,那么这串字符就是回文(Palindrome)。例如,ABCBA是回文,而ABCD则不是。本题要求编写一个判断字符串是否为回文的函数,并且通过函数参数获取字符串的中间字符(如果中间是两个字符,则获取靠左的那一个,例如字符串是ABCDEF,则中间字符是C)。题目保证输入的字符串长度在1至2000之间且不含空格、换行等分隔符。 函数接口定义: int isPalindrome(const char* str, char* pch); 其中 str 和 pch 都是用户传入的参数。 str 是字符串的首地址; pch 是传入的要存放字符串中间字符的变量的地址。如果字符串是回文,函数须返1,否则返回0。 裁判测试程序样例: /* 测试程序仅为示例,实际的测试程序可能不同 */ #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int isPalindrome(const char* str, char

```c #include <stdio.h> #include <string.h> #define MAXLENGTH 100 int isPalindrome(const char* str, char* pch); int main() { char str[MAXLENGTH], mid; scanf("%s", str); if (isPalindrome(str, &mid)) printf("是回文!中间字符是%c\n", mid); else printf("不是回文!中间字符是%c\n", mid); return 0; } int isPalindrome(const char* str, char* pch) { int len = strlen(str); *pch = str[len / 2]; int left = 0; int right = len - 1; while (left < right) { if (str[left] != str[right]) { return 0; } left++; right--; } return 1; } ``` 代码解释: 1. `isPalindrome` 函数: - 首先计算字符串的长度 `len`。 - 将字符串中间字符(如果中间是两个字符,则取靠左的那一个)存储到 `*pch` 中。 - 使用两个指针 `left` 和 `right` 分别指向字符串的首尾。 - 在 `left` 小于 `right` 的条件下,比较 `str[left]` 和 `str[right]`,如果不相等,说明不是回文,返回 0。 - 如果循环结束都没有发现不相等的情况,说明是回文,返回 1。 2. `main` 函数: - 读取用户输入的字符串。 - 调用 `isPalindrome` 函数进行判断,并根据返回值输出相应的结果。 [2025-12-10 22:27:54 | AI问答 | 426点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多