c语言任务三:回文诗 1, 定义一个字符数组,将《题金山寺》以字符串的形式存储到数组中。 将索引定位到字符串末尾。 倒序输出时,第一个句号不输出,因此从倒数第2个元素"潮”字输出。 输出一个汉字之后,将索引移动至前一个汉字,一个汉字2个字节。 Microsoft Visual Studio调试控制台 《题金山寺》回文输出: 轻鸥数点千峰碧,水接云边四望遥。 睛日晚霞红蔼蔼,晓天江树绿迢迢。 清波石眼泉当槛,小径松门寺对桥。 明月钓舟渔浦远,倾山雪浪暗随潮。
时间: 2025-06-25 19:13:35 浏览: 17
### 实现《题金山寺》的回文输出
#### 背景介绍
《题金山寺》是一首著名的回文诗,正读反读皆成章句。为了实现其倒序输出并验证其是否为回文,可以利用C语言中的字符数组来存储这首诗的内容,并通过指针或循环遍历的方式实现字符串反转。
---
### 程序设计与实现
以下是一个完整的C语言程序,用于定义字符数组存储《题金山寺》,并通过算法实现倒序输出以及判断该诗是否为回文。
#### 程序代码
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 200 // 定义最大长度以容纳诗句及其可能的空格或其他符号
// 函数声明
void reverseString(char str[], char reversedStr[]);
int isPalindrome(const char str[]);
int main() {
const char poem[] = "潮随暗浪雪山倾,远浦渔舟歌月明."
"桥对寺门松径小,槛当泉眼石波清."
"迢迢绿树江天晓,霭霭红霞晚日晴."
"遥望四边云接水,碧山千古隔嚣尘."; // 存储《题金山寺》原文
char reversedPoem[MAX_LEN]; // 用于存储倒序后的诗句
printf("原诗:\n%s\n", poem); // 输出原始诗句
// 倒序输出
reverseString(poem, reversedPoem);
printf("\n倒序输出:\n%s\n", reversedPoem);
// 判断是否为回文
if (isPalindrome(poem)) {
printf("\n该诗是回文。\n");
} else {
printf("\n该诗不是严格意义上的回文。\n");
}
return 0;
}
// 字符串反转函数
void reverseString(char str[], char reversedStr[]) {
int length = strlen(str); // 获取字符串长度
for (int i = 0; i < length; ++i) { // 反向复制字符
reversedStr[i] = str[length - i - 1];
}
reversedStr[length] = '\0'; // 添加字符串结束标志
}
// 回文检测函数
int isPalindrome(const char str[]) {
int start = 0, end = strlen(str) - 1;
while (start < end) { // 比较两端字符是否相等
if (str[start] != str[end]) {
return 0; // 不匹配则返回false
}
++start;
--end;
}
return 1; // 所有字符均匹配,则返回true
}
```
---
### 功能解析
1. **字符数组定义**
使用`char poem[]`定义了一个字符数组,用来存储《题金山寺》的全文[^1]。由于诗歌内容较长,因此设置了较大的数组容量(`MAX_LEN=200`),确保能够完全容纳整首诗。
2. **字符串反转逻辑**
`reverseString`函数通过双索引法逐字将源字符串中的字符按相反顺序存入目标字符串中。最终,在目标字符串末尾添加`\0`作为终止符[^2]。
3. **回文判定方法**
`isPalindrome`函数采用头尾比较的方法逐一校验字符串两端对应的字符是否一致。如果发现不匹配的情况立即退出循环并返回失败状态;反之,若全部匹配则确认为回文[^3]。
4. **主流程执行**
主函数负责初始化数据、调用辅助函数完成核心处理任务,并依据计算结果给出清晰的结果反馈给用户查看[^4]。
---
###
阅读全文
相关推荐


















