定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。

时间: 2023-05-31 16:18:06 浏览: 313
### 回答1: 可以使用以下代码实现: ```python class Book: def __init__(self, book_id, book_name, price): self.book_id = book_id self.book_name = book_name self.price = price def __str__(self): return f"{self.book_id}\t{self.book_name}\t{self.price}" def sort_books_by_price_desc(books): return sorted(books, key=lambda x: x.price, reverse=True) if __name__ == '__main__': books = [] while True: book_id = input("请输入书号:") if not book_id: break book_name = input("请输入书名:") price = float(input("请输入价格:")) book = Book(book_id, book_name, price) books.append(book) sorted_books = sort_books_by_price_desc(books) for book in sorted_books: print(book) ``` 首先定义了一个 `Book` 类来表示图书信息,包含书号、书名、价格三个属性。然后定义了一个 `sort_books_by_price_desc` 函数来按照价格降序排序图书列表。最后在 `main` 函数中读入图书信息,创建图书列表,然后调用 `sort_books_by_price_desc` 函数进行排序,最后逐行输出排序后的图书信息。 ### 回答2: 顺序表是一种经典的数据结构,其特点是空间大小固定,而且操作效率很高。定义一个包含图书信息(书号、书名、价格)的顺序表,可以使用数组来实现。 下面是实现此功能的代码: ```python class Book: def __init__(self, num, name, price): self.num = num self.name = name self.price = price def create_book_list(): n = int(input("请输入图书数量:")) book_list = [0] * n for i in range(n): num = input("请输入第%d本书的编号:" % (i+1)) name = input("请输入第%d本书的名称:" % (i+1)) price = float(input("请输入第%d本书的价格:" % (i+1))) book_list[i] = Book(num, name, price) return book_list def sort_book_list(book_list): n = len(book_list) for i in range(n-1): for j in range(n-i-1): if book_list[j].price < book_list[j+1].price: book_list[j], book_list[j+1] = book_list[j+1], book_list[j] def print_book_list(book_list): for book in book_list: print("%s, %s, %.2f" % (book.num, book.name, book.price)) if __name__ == '__main__': book_list = create_book_list() sort_book_list(book_list) print_book_list(book_list) ``` 首先,我们定义一个`Book`类来表示单本图书,其中包含三个属性:书号、书名和价格。然后,我们定义一个`create_book_list`函数来读入图书数据,创建图书信息表,并返回该表。在该函数中,我们首先读入图书数量`n`,然后定义长度为`n`的数组`book_list`来存储图书信息。接着,我们使用`for`循环逐个读入每本图书的编号、名称和价格,并创建`Book`对象,并将其存储在`book_list`数组中。最后,我们返回`book_list`数组作为函数返回值。 接下来,我们定义一个`sort_book_list`函数来对图书信息表按照价格进行降序排序。在该函数中,我们使用两层循环来实现冒泡排序算法。由于我们要进行降序排序,因此如果前一本书的价格小于后一本书的价格,则交换它们的位置。最终,`book_list`数组中的元素将按照价格降序排列。 最后,我们定义一个`print_book_list`函数来逐行输出排序后每本图书的信息。在该函数中,我们使用`for`循环逐个访问`book_list`数组中的元素,并使用`print`函数将其书号、名称和价格按照规定的格式输出。 在主程序中,我们先调用`create_book_list`函数来读入图书数据,创建图书信息表,并将其存储在`book_list`数组中。然后,我们调用`sort_book_list`函数来对`book_list`数组按照价格进行降序排序。最后,我们调用`print_book_list`函数逐行输出排序后每本图书的信息。 使用以上代码实现图书信息表的创建和按照价格进行降序排序,可以轻易地实现相应的功能,有利于提高书籍整理和管理的效率。 ### 回答3: 首先需要定义一个包含图书信息的结构体,包含书号、书名和价格三个属性: ``` typedef struct Book { int bookNo; char bookName[50]; double price; } Book; ``` 然后定义一个顺序表结构体,用来存储所有的图书信息: ``` #define MAX_SIZE 100 typedef struct SeqList { Book data[MAX_SIZE]; int length; } SeqList; ``` 接下来就可以读取输入的图书信息,创建顺序表并存储所有的图书数据: ``` SeqList createSeqList() { SeqList list; printf("请输入图书数量:"); scanf("%d", &list.length); for (int i = 0; i < list.length; i++) { Book book; printf("请输入第%d本图书信息:\n书号:", i + 1); scanf("%d", &book.bookNo); printf("书名:"); scanf("%s", book.bookName); printf("价格:"); scanf("%lf", &book.price); list.data[i] = book; } return list; } ``` 最后根据图书的价格进行降序排序,然后逐行输出每本图书的信息: ``` void sortSeqList(SeqList* list) { for (int i = 0; i < list->length - 1; i++) { for (int j = 0; j < list->length - 1 - i; j++) { if (list->data[j].price < list->data[j+1].price) { Book temp = list->data[j]; list->data[j] = list->data[j+1]; list->data[j+1] = temp; } } } } void printSeqList(SeqList list) { printf("书号\t书名\t价格\n"); for (int i = 0; i < list.length; i++) { printf("%d\t%s\t%.2lf\n", list.data[i].bookNo, list.data[i].bookName, list.data[i].price); } } int main() { SeqList list = createSeqList(); sortSeqList(&list); printSeqList(list); return 0; } ``` 这样就可以按照价格降序排列并逐行输出每本图书的信息了。

相关推荐

最新推荐

recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。