基于顺序存储结构的图书信息表的创建和输出
时间: 2023-12-19 22:06:01 浏览: 24
在基于顺序存储结构的图书信息表中,每一本书的信息可以用一个结构体来表示,包含书名、作者、出版社、出版日期等信息。可以定义一个数组来存储所有的图书信息,如下所示:
```
#define MAX_SIZE 100 // 定义图书信息表的最大长度
// 定义图书信息的结构体
typedef struct {
char title[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
int pub_date; // 出版日期
} BookInfo;
// 定义图书信息表的结构体
typedef struct {
BookInfo data[MAX_SIZE]; // 存储图书信息的数组
int length; // 图书信息表的长度
} BookList;
```
接下来,我们可以编写创建图书信息表的函数。该函数需要先让用户输入图书信息,然后将其存储到结构体数组中,并更新图书信息表的长度。
```
// 创建图书信息表
void createBookList(BookList *list) {
int i;
printf("请输入图书信息:\n");
for (i = 0; i < MAX_SIZE; i++) {
printf("请输入第%d本书的信息:\n", i + 1);
printf("书名:");
scanf("%s", list->data[i].title);
printf("作者:");
scanf("%s", list->data[i].author);
printf("出版社:");
scanf("%s", list->data[i].publisher);
printf("出版日期(例如:20220131):");
scanf("%d", &list->data[i].pub_date);
list->length++; // 更新图书信息表的长度
printf("是否继续输入(y/n)?");
char c;
scanf(" %c", &c);
if (c == 'n') {
break;
}
}
}
```
最后,我们可以编写输出图书信息表的函数。该函数会遍历结构体数组中的所有图书信息,并输出到屏幕上。
```
// 输出图书信息表
void printBookList(BookList list) {
int i;
printf("图书信息表如下:\n");
for (i = 0; i < list.length; i++) {
printf("%s\t%s\t%s\t%d\n", list.data[i].title, list.data[i].author, list.data[i].publisher, list.data[i].pub_date);
}
}
```
完整代码如下:
```
#include <stdio.h>
#define MAX_SIZE 100 // 定义图书信息表的最大长度
// 定义图书信息的结构体
typedef struct {
char title[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
int pub_date; // 出版日期
} BookInfo;
// 定义图书信息表的结构体
typedef struct {
BookInfo data[MAX_SIZE]; // 存储图书信息的数组
int length; // 图书信息表的长度
} BookList;
// 创建图书信息表
void createBookList(BookList *list) {
int i;
printf("请输入图书信息:\n");
for (i = 0; i < MAX_SIZE; i++) {
printf("请输入第%d本书的信息:\n", i + 1);
printf("书名:");
scanf("%s", list->data[i].title);
printf("作者:");
scanf("%s", list->data[i].author);
printf("出版社:");
scanf("%s", list->data[i].publisher);
printf("出版日期(例如:20220131):");
scanf("%d", &list->data[i].pub_date);
list->length++; // 更新图书信息表的长度
printf("是否继续输入(y/n)?");
char c;
scanf(" %c", &c);
if (c == 'n') {
break;
}
}
}
// 输出图书信息表
void printBookList(BookList list) {
int i;
printf("图书信息表如下:\n");
for (i = 0; i < list.length; i++) {
printf("%s\t%s\t%s\t%d\n", list.data[i].title, list.data[i].author, list.data[i].publisher, list.data[i].pub_date);
}
}
int main() {
BookList list = {0};
createBookList(&list);
printBookList(list);
return 0;
}
```