C语言写程序:定义一个4*20的字符型二维数组,每行输入一句古诗,将其每行的第一个汉字输出。 提示:每个汉字字符占2个字节空间,输入一个五言绝句
时间: 2024-10-29 16:13:58 浏览: 57
在C语言中,你可以通过定义动态分配内存的字符数组来实现这个需求。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 需要头文件来处理内存分配
#define ROWS 4
#define COLS 20
#define CHARS_PER_WORD 2 // 每个汉字占用两个字节
// 动态分配存储古诗的二维字符数组
char **poem_array; // 定义指向指针的指针
int i, j;
void input_poems() {
poem_array = (char **)malloc(ROWS * sizeof(char *));
for (i = 0; i < ROWS; i++) {
poem_array[i] = (char *)malloc(COLS * CHARS_PER_WORD);
char word[CHARS_PER_WORD];
printf("请输入第 %d 行的诗句:", i + 1);
fgets(word, CHARS_PER_WORD, stdin); // 读取一行输入
int len = strlen(word) - 1; // 减去换行符
if (len > 0 && word[len - 1] == '\n') { // 去除末尾换行符
word[len - 1] = '\0';
}
// 只保留每行的第一个汉字
poem_array[i][0] = word[0]; // 把第一个汉字存入数组
poem_array[i][1] = '\0'; // 设置结束符
}
}
void print_first_char_of_each_line() {
for (i = 0; i < ROWS; i++) {
printf("%s ", poem_array[i]); // 输出每行的第一个汉字
}
printf("\n");
}
int main() {
input_poems();
print_first_char_of_each_line();
// 释放动态分配的内存
for (i = 0; i < ROWS; i++) {
free(poem_array[i]);
}
free(poem_array);
return 0;
}
```
当你运行这个程序并按照提示输入四行五言绝句时,它会输出每行的第一个汉字。记得在输入完所有诗句后关闭标准输入(如按Ctrl+D)。
阅读全文