请定义一个描述学校图书管图书信息的结构,包括书名,作者,价格等。编程: 1.编写input()函数,输入图书信息(5条记录)即:顺序表的插入 2.编写printf)函数,输出全体图书信息;即顺序表的输出,c语言简单代码
时间: 2024-09-29 08:09:37 浏览: 254
首先,我们可以定义一个简单的结构体(struct)来存储图书的信息,包含书名(book_name)、作者(author)和价格(price)。然后创建一个动态数组(linked list 或 数组)来存储这个结构体的对象。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书信息结构体
typedef struct {
char book_name[100];
char author[100];
float price;
} Book;
// 动态分配内存并初始化图书结构体
Book* create_book(char* name, char* author, float price) {
Book* new_book = (Book*)malloc(sizeof(Book));
strcpy(new_book->book_name, name);
strcpy(new_book->author, author);
new_book->price = price;
return new_book;
}
// 输入图书信息
void insert_books(Book** books, int* count, int num_insertions) {
for (int i = 0; i < num_insertions; i++) {
char book_name[100], author[100];
float price;
printf("请输入第%d本书的信息(书名、作者、价格,用空格分隔): ", i+1);
scanf("%s %s %f", book_name, author, &price);
*books = realloc(*books, (*count + 1) * sizeof(Book)); // 动态扩容
(*books)[*count] = create_book(book_name, author, price);
(*count)++;
}
}
// 输出所有图书信息
void display_books(Book* books, int count) {
for (int i = 0; i < count; i++) {
printf("书名:%s 作者:%s 价格:%.2f\n", books[i].book_name, books[i].author, books[i].price);
}
}
int main() {
int count = 0; // 初始图书数量
Book* books = NULL;
// 获取用户想要插入的图书数量
int num_insertions;
printf("请输入需要插入的图书数量:");
scanf("%d", &num_insertions);
// 插入图书
insert_books(&books, &count, num_insertions);
// 输出所有图书信息
display_books(books, count);
// 释放内存
for (int i = 0; i < count; i++) {
free(books[i]);
}
free(books); // 只有当count为0时才释放总内存
return 0;
}
```
阅读全文
相关推荐
















