用c++定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
时间: 2024-05-05 22:23:02 浏览: 211
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义图书信息结构体
typedef struct {
char id[20]; // 书号
char name[50]; // 书名
float price; // 价格
} Book;
// 定义顺序表结构体
typedef struct {
Book *data; // 存放图书信息的数组
int length; // 顺序表长度
int size; // 数组容量
} SeqList;
// 初始化顺序表
void init(SeqList *list, int size) {
list->data = (Book*)malloc(sizeof(Book) * size); // 动态分配数组内存
list->length = 0;
list->size = size;
}
// 插入图书信息
void insert(SeqList *list, Book book) {
if (list->length == list->size) { // 如果数组已满,需要扩容
list->data = (Book*)realloc(list->data, sizeof(Book) * (list->size + 10)); // 扩容为原来的大小加上10
list->size += 10;
}
list->data[list->length++] = book; // 在表尾插入图书信息
}
int main() {
SeqList list;
Book book;
int i, n;
printf("请输入图书数量:");
scanf("%d", &n);
init(&list, n); // 初始化顺序表
// 读入图书信息
for (i = 0; i < n; i++) {
printf("请输入第 %d 本书的信息(书号 书名 价格):", i + 1);
scanf("%s %s %f", book.id, book.name, &book.price);
insert(&list, book); // 插入图书信息到顺序表中
}
// 统计图书个数并逐行输出图书信息
printf("图书总数:%d\n", list.length);
for (i = 0; i < list.length; i++) {
printf("%s %s %.2f\n", list.data[i].id, list.data[i].name, list.data[i].price);
}
free(list.data); // 释放数组内存
return 0;
}
```
该程序使用结构体存储图书信息,使用动态分配内存的方式定义了一个顺序表,然后依次读入图书信息并插入到顺序表中,最后统计图书个数并逐行输出图书信息。
阅读全文