定义结构体类型BOOK表示某种图书的信息,已知图书信息包括书号(整型)、书名(长度小于50个字符)、总册数、库存量和销售量(均为整型),编写程序,实现以下功能:
在主函数中输入5种图书的书号、书名、总册数和库存量,而后计算每种图书的销售量,已知销售量 = 总册数 - 库存量;调用printBook函数进行输出,而后调用sort_by_sales函数进行排序,在主函数中输出排序后的结果。
编写自定义printBooks函数,输出每种图书的书号、书名和总册数、库存量和销售量。
编写自定义排序sort_by_sales函数,按销售量进行降序排序。
程序运行示例:
please enter 5 books info:
Id Name Total StockHere are the books information:
Id Name Total Stock Sale
10010 GTZ 200 120 80
12310 XXY 184 110 74
12980 ZEY 89 50 39
89012 ABC 110 23 87
78192 YYY 192 109 83After sorting by sales
Here are the books information:
Id Name Total Stock Sale
89012 ABC 110 23 87
78192 YYY 192 109 83
10010 GTZ 200 120 80
12310 XXY 184 110 74
12980 ZEY 89 50 39
#include <iostream>
using namespace std;
//此处定义结构体变量BOOK
struct BOOK{
int id;
char n[500];
int total;
int stock;
int sale;
};
//此处给出函数原型声明
void printBooks(BOOK*);
void sort_by_sales(BOOK*);
const int N = 5;
int main()
{
BOOK books[N];
cout <<"please enter "<< N <<" books info:\n";
cout <<"Id\tName\tTotal\tStock\n";
//此处编写结构体数组的输入、计算、输出、排序、输出等功能
int i;
for(i=0;i<5;i++){
cin>>books[i].id;
cin>>books[i].n;
cin>>books[i].total;
cin>>books[i].stock;
};
cout<<"\n";
cout<<"Here are the books information:"<<"\n";
cout <<"Id\tName\tTotal\tStock\tSale\n";
printBooks(books) ;
cout<<"\n";
cout<<"After sorting by sales"<<"\n"<<"Here are the books information:"<<"\n";
cout <<"Id\tName\tTotal\tStock\tSale\n";
sort_by_sales(books);
printBooks(books) ;
return 0;
}
//此处编写printBooks和sort_by_sales函数的定义
void printBooks(BOOK*books){
int i;
for(i = 0;i<5;i++){
cout<<books[i].id<<'\t';
cout<<books[i].n<<'\t';
cout<<books[i].total<<'\t';
cout<<books[i].stock<<'\t';
cout<<books[i].total-books[i].stock<<'\n';}
}
void sort_by_sales(BOOK*books){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
if(books[j+1].total-books[j+1].stock>books[j].total-books[j].stock){
BOOK temp=books[j+1];
books[j+1]=books[j];
books[j]=temp;
}
}
}
}