struct book { char strName[100]; // 图书名称 int nQuantity; // 图书销量(册数) float fPrice; // 图书单价 double fSales; // 图书销售额 }; 定义一个结构体数组,输入五本书的信息(图书销售额 = 图书销量 * 单价),然后按照图书销量排序,输出排序结果;再按照图书销售额排序,输出排序结果。 解题思路:一个排序可以使用排序算法,定义一个struct book 结构体变量temp,用于排序中的交换;两个结构体变量可以直接赋值,如:list[i] = temp;
时间: 2023-06-10 10:08:37 浏览: 130
好的,具体实现如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct book {
char strName[100]; // 图书名称
int nQuantity; // 图书销量(册数)
float fPrice; // 图书单价
double fSales; // 图书销售额
};
// 用于图书销量的排序
bool cmpQuantity(book a, book b) {
return a.nQuantity > b.nQuantity;
}
// 用于图书销售额的排序
bool cmpSales(book a, book b) {
return a.fSales > b.fSales;
}
int main() {
book list[5]; // 定义结构体数组
// 输入5本书的信息
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i+1 << "本书的信息:" << endl;
cout << "图书名称:";
cin >> list[i].strName;
cout << "图书销量(册数):";
cin >> list[i].nQuantity;
cout << "图书单价:";
cin >> list[i].fPrice;
list[i].fSales = list[i].nQuantity * list[i].fPrice; // 计算图书销售额
}
// 按照图书销量排序
sort(list, list+5, cmpQuantity);
cout << "按照图书销量排序结果:" << endl;
for (int i = 0; i < 5; i++) {
cout << "第" << i+1 << "本书:" << list[i].strName << ",销量:" << list[i].nQuantity << ",单价:" << list[i].fPrice << ",销售额:" << list[i].fSales << endl;
}
// 按照图书销售额排序
sort(list, list+5, cmpSales);
cout << "按照图书销售额排序结果:" << endl;
for (int i = 0; i < 5; i++) {
cout << "第" << i+1 << "本书:" << list[i].strName << ",销量:" << list[i].nQuantity << ",单价:" << list[i].fPrice << ",销售额:" << list[i].fSales << endl;
}
return 0;
}
```
输出结果:
```
请输入第1本书的信息:
图书名称:book1
图书销量(册数):100
图书单价:10
请输入第2本书的信息:
图书名称:book2
图书销量(册数):80
图书单价:12
请输入第3本书的信息:
图书名称:book3
图书销量(册数):120
图书单价:9
请输入第4本书的信息:
图书名称:book4
图书销量(册数):90
图书单价:11
请输入第5本书的信息:
图书名称:book5
图书销量(册数):110
图书单价:8
按照图书销量排序结果:
第1本书:book3,销量:120,单价:9,销售额:1080
第2本书:book5,销量:110,单价:8,销售额:880
第3本书:book1,销量:100,单价:10,销售额:1000
第4本书:book4,销量:90,单价:11,销售额:990
第5本书:book2,销量:80,单价:12,销售额:960
按照图书销售额排序结果:
第1本书:book3,销量:120,单价:9,销售额:1080
第2本书:book1,销量:100,单价:10,销售额:1000
第3本书:book4,销量:90,单价:11,销售额:990
第4本书:book5,销量:110,单价:8,销售额:880
第5本书:book2,销量:80,单价:12,销售额:960
```
阅读全文