本关任务:定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。
时间: 2024-10-24 16:02:37 浏览: 117
线性表的链式存储结构..
5星 · 资源好评率100%
在本任务中,你需要首先定义一个结构体或类来表示图书信息,通常会包括三个字段:书号(例如int类型的book_id)、书名(字符串类型title)和价格(float类型price)。这个顺序表可以是一个数组、链表或者动态数组(如C++的vector),取决于语言的选择。
下面是一个简单的C++示例:
```cpp
struct Book {
int bookId;
string title;
float price;
};
Book* createBookTable() {
int numBooks; // 输入书籍的数量
cout << "请输入书籍数量:";
cin >> numBooks;
Book* books = new Book[numBooks]; // 动态分配内存
for (int i = 0; i < numBooks; i++) {
cout << "请输入第" << i+1 << "本书的信息(书号,书名,价格):" << endl;
cin >> books[i].bookId >> books[i].title >> books[i].price;
}
return books;
}
void sortBooksByPrice(Book* books, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (books[j].price > books[j + 1].price) {
// 交换元素
swap(books[j], books[j + 1]);
}
}
}
}
void printSortedBooks(Book* books, int size) {
cout << "按价格降序排列的图书信息:\n";
for (int i = 0; i < size; i++) {
cout << "书号:" << books[i].bookId << ", 书名:" << books[i].title << ", 价格:" << books[i].price << endl;
}
}
int main() {
Book* bookTable = createBookTable();
int tableSize = sizeof(bookTable) / sizeof(bookTable[0]);
sortBooksByPrice(bookTable, tableSize);
printSortedBooks(bookTable, tableSize);
delete[] bookTable; // 释放内存
return 0;
}
```
在这个例子中,`createBookTable`函数用于输入并创建图书列表,`sortBooksByPrice`函数对列表进行降序排序,最后`printSortedBooks`函数输出排序后的图书信息。
阅读全文