自行选择一首七言绝句,程序中提示分行输入,存储在自选的数据类型中,而后实现程序最终输出横版和竖版(从右向左)的绝句,要求用两种方法实现。
时间: 2024-06-12 21:05:12 浏览: 109
中英文断句的实现程序
4星 · 用户满意度95%
我选择的七言绝句是唐代诗人杜甫的《登高》:
风急天高猿啸哀,渚清沙白鸟飞回。
无边落木萧萧下,不尽长江滚滚来。
万里悲秋常作客,百年多病独登台。
艰难苦恨繁霜鬓,潦倒新停浊酒杯。
以下是两种实现方法:
方法一:使用数组和循环
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100 // 定义字符串的最大长度
int main() {
char poem[MAX_LEN][8]; // 使用二维字符数组存储每一句的字符串
int i, j;
// 分行输入,存储在数组中
for (i = 0; i < 7; i++) {
printf("请输入第%d句:", i+1);
fgets(poem[i], 8, stdin); // fgets可以输入空格和换行符
// 去掉字符串中的换行符
if (poem[i][strlen(poem[i])-1] == '\n') {
poem[i][strlen(poem[i])-1] = '\0';
}
}
// 横版输出
for (i = 0; i < 7; i++) {
printf("%s ", poem[i]);
}
printf("\n");
// 竖版输出
for (i = 6; i >= 0; i--) {
for (j = 6; j >= 0; j--) {
printf("%c", poem[j][i]);
}
printf("\n");
}
return 0;
}
```
方法二:使用指针和字符串操作函数
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100 // 定义字符串的最大长度
int main() {
char *poem[7]; // 使用指针数组存储每一句的字符串
char buf[MAX_LEN]; // 临时存储输入的字符串
int i, j;
// 分行输入,动态分配内存,并存储在指针数组中
for (i = 0; i < 7; i++) {
printf("请输入第%d句:", i+1);
fgets(buf, MAX_LEN, stdin);
// 去掉字符串中的换行符
if (buf[strlen(buf)-1] == '\n') {
buf[strlen(buf)-1] = '\0';
}
poem[i] = (char*)malloc(strlen(buf) + 1);
strcpy(poem[i], buf);
}
// 横版输出
for (i = 0; i < 7; i++) {
printf("%s ", poem[i]);
}
printf("\n");
// 竖版输出
for (i = strlen(poem[6])-1; i >= 0; i--) {
for (j = 0; j < 7; j++) {
printf("%c", poem[j][i]);
}
printf("\n");
}
// 释放动态分配的内存
for (i = 0; i < 7; i++) {
free(poem[i]);
}
return 0;
}
```
阅读全文