定制一个名为BOOK的结构体,定义五个结构体变量或结构体数组,定义一个输出函数带结构体指针参数,通过该函数输出定义的五个变量或数组的所有内容
时间: 2024-10-20 12:17:19 浏览: 23
在C语言中,我们可以创建一个名为`BOOK`的自定义结构体,并定义一个结构体数组或变量,以及一个输出函数用于打印其内容。首先,让我们定义`BOOK`结构体,包含五个字段:
```c
#include <stdio.h>
// 定义 BOOK 结构体
typedef struct {
char title[50]; // 小说标题
int pages; // 页数
float price; // 价格
char author[30]; // 作者名
char genre[20]; // 题材类型
} BOOK;
// 定义结构体变量
BOOK book1 = {"红楼梦", 120, 39.99, "曹雪芹", "古典文学"};
BOOK book2 = {"百年孤独", 300, 49.99, "加西亚·马尔克斯", "魔幻现实主义"};
```
如果需要定义一个结构体数组,可以这样:
```c
// 定义结构体数组,假设我们有5本书
BOOK bookArray[5] = {
{"西游记", 108, 29.99, "吴承恩", "神话"},
{"战争与和平", 1260, 79.99, "列夫·托尔斯泰", "历史小说"},
{".NET编程实战", 400, 55.00, "无名氏", "编程技术"},
{"哈利·波特", 600, 69.99, "J.K.罗琳", "奇幻"},
{"算法图解", 450, 44.99, "Aditya Bhargava", "计算机科学"}
};
```
接下来,我们需要一个输出函数接受一个`BOOK`类型的指针,遍历并打印结构体的内容:
```c
void printBook(BOOK* book, const char* name) {
if (name == NULL) { // 如果是数组
for (int i = 0; i < 5; i++) {
printf("书籍 %d:\n", i + 1);
printf("标题: %s\n", book[i].title);
printf("页数: %d\n", book[i].pages);
printf("价格: %.2f\n", book[i].price);
printf("作者: %s\n", book[i].author);
printf("题材: %s\n\n", book[i].genre);
}
} else { // 如果是单个变量
printf("%s:\n", name);
printf("标题: %s\n", book->title);
printf("页数: %d\n", book->pages);
printf("价格: %.2f\n", book->price);
printf("作者: %s\n", book->author);
printf("题材: %s\n", book->genre);
}
}
```
现在你可以通过`printBook()`函数分别打印单个结构体变量或数组的内容:
```c
int main() {
// 输出单个变量
printBook(&book1, "书1");
// 输出结构体数组
printBook(bookArray, "书籍列表");
return 0;
}
阅读全文