用c语言定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后查找价格最高的图书,输出相应图书的信息
时间: 2024-09-08 17:02:32 浏览: 166
在C语言中,可以使用结构体(`struct`)来定义一个包含图书信息的顺序表。下面是一个简单的实现方法:
首先定义一个图书信息的结构体,包含书号、书名和价格三个字段:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 定义顺序表的最大长度
// 图书信息结构体
typedef struct {
int book_id; // 书号
char book_name[50]; // 书名
float price; // 价格
} Book;
// 图书顺序表结构体
typedef struct {
Book books[MAX_BOOKS]; // 图书数组
int length; // 当前顺序表中图书的数量
} BookList;
// 函数声明
void createBookList(BookList *list, int *count);
void findAndPrintMaxPriceBook(const BookList *list);
int main() {
BookList bookList;
int count = 0;
// 创建图书信息顺序表
createBookList(&bookList, &count);
// 查找并输出价格最高的图书信息
findAndPrintMaxPriceBook(&bookList);
return 0;
}
// 创建图书信息顺序表的函数实现
void createBookList(BookList *list, int *count) {
printf("请输入图书数量(不超过%d本):", MAX_BOOKS);
scanf("%d", count);
for (int i = 0; i < *count; ++i) {
printf("输入第%d本图书的书号、书名和价格:\n", i + 1);
scanf("%d %s %f", &list->books[i].book_id, list->books[i].book_name, &list->books[i].price);
}
}
// 查找价格最高的图书并输出信息的函数实现
void findAndPrintMaxPriceBook(const BookList *list) {
if (list->length == 0) {
printf("图书列表为空。\n");
return;
}
int maxIndex = 0; // 用于记录价格最高图书的索引
float maxPrice = list->books[0].price; // 初始化为第一本图书的价格
for (int i = 1; i < list->length; ++i) {
if (list->books[i].price > maxPrice) {
maxIndex = i;
maxPrice = list->books[i].price;
}
}
printf("价格最高的图书信息如下:\n");
printf("书号:%d\n", list->books[maxIndex].book_id);
printf("书名:%s\n", list->books[maxIndex].book_name);
printf("价格:%.2f\n", list->books[maxIndex].price);
}
```
在这个程序中,我们定义了两个结构体:`Book` 用于存储单本图书的信息,`BookList` 用于存储图书列表。我们使用数组来模拟顺序表,并实现了两个函数:`createBookList` 用于创建图书信息列表,`findAndPrintMaxPriceBook` 用于查找并输出价格最高的图书信息。
阅读全文