(1)定义结构体类型book,使之包含每本图书的属性,成员包括书号(bookID,字符串)、书名(name,字符串)和价格(price,double型数值)。 (2)编写函数void input(book bs[], int n); 输入n本图书的价格。 (3)编写函数double average(book bs[], int n); 计算并返回n本图书的平均价格。 (4)编写函数int findMax(book bs[], int n),找出价格最高的图书下标并返回。 (5)编写函数void print(book bs[], int n); 以上述表格形式输出n本图书信息。 (6)编写函数void sort(book bs[], int n); 将n本图书按照价格排成升序。 提示:本函数中实现排序算法时,比较的是图书价格,交换的是结构体元素。 (7)在主函数中定义一个类型为book的具有4个元素的结构体数组books[],用上述列表的前两列中的数据初始化该数组(即初始化数组部分数据),价格将在input()函数中输入。 (8)在主函数中依次调用input()函数输入所有图书的价格,调用print()函数输出所有图书的完整信息,调用average()函数计算所有图书的平均价格然后在主函数中输出该平均价格,调用findMax()求出价格最高的图书的下标然后在主函数中输出该图书的书号、书名和价格,调用sort()函数将图书按照价格升序排序,最后再次调用print()函数输出排序后的所有图书信息。
时间: 2023-06-10 11:08:26 浏览: 624
```c++
#include <iostream>
#include <string>
using namespace std;
struct book {
string bookID;
string name;
double price;
};
void input(book bs[], int n) {
for(int i=0; i<n; i++) {
cout << "请输入第" << i+1 << "本书的价格:";
cin >> bs[i].price;
}
}
double average(book bs[], int n) {
double sum = 0;
for(int i=0; i<n; i++) {
sum += bs[i].price;
}
return sum/n;
}
int findMax(book bs[], int n) {
int maxIndex = 0;
for(int i=1; i<n; i++) {
if(bs[i].price > bs[maxIndex].price) {
maxIndex = i;
}
}
return maxIndex;
}
void print(book bs[], int n) {
cout << "书号\t\t书名\t\t价格" << endl;
for(int i=0; i<n; i++) {
cout << bs[i].bookID << "\t\t" << bs[i].name << "\t\t" << bs[i].price << endl;
}
}
void sort(book bs[], int n) {
for(int i=0; i<n-1; i++) {
for(int j=0; j<n-i-1; j++) {
if(bs[j].price > bs[j+1].price) {
swap(bs[j], bs[j+1]);
}
}
}
}
int main() {
book books[4] = {{"001", "C++ Primer", 78.9}, {"002", "Java核心技术", 65.4}, {"003", "Python编程从入门到实践", 49.8}, {"004", "数据结构与算法", 55.2}};
int n = 4;
input(books, n);
print(books, n);
cout << "平均价格为:" << average(books, n) << endl;
int maxIndex = findMax(books, n);
cout << "价格最高的图书为:" << books[maxIndex].bookID << " " << books[maxIndex].name << " " << books[maxIndex].price << endl;
sort(books, n);
cout << "排序后的图书信息为:" << endl;
print(books, n);
return 0;
}
```
阅读全文