某出版社需要统计本社目前最畅销的30本书的售书情况。设:
每一本书需保存的信息:书名,库存量,单价,出书统计数;
从键盘每次输入一本书名(假设购买该出版社的读者有100人);
程序根据输入的书名。使该书的库存量减少一本,售书统计数增加1;
按售书统计数的多少从大到小排序输出书名,售书统计数,库存量。
要求:
(1)设计出该程序的数据结构;
(2)编写程序,实现上述的所有要求。
#include<stdio.h>
#include<string.h>
#define N 3
struct bookInfo{
char bookName[20];
int num=0;//库存量
int saleNum=0;//售书统计数
float price;
}book[N];
int main(){
printf("请依次输入书籍信息(空格隔开):\n");
printf("\t书名\t库存\t单价:\n");
for(int i=0;i<N;i++){
printf("第%d个:",i+1);
scanf("%s %d %f",&book[i].bookName,&book[i].num,&book[i].price);
}
char name[20];
printf("请依次顾客购买的书籍名字(空格隔开,假设10名顾客):\n");
for(int i=0;i<10;i++){
scanf("%s",&name);
for(int j=0;j<N;j++){
if(strcmp(name,book[j].bookName)==0){
book[j].saleNum++;
book[j].num--;
}
}
}
struct bookInfo temp;
int max=0;
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(book[i].saleNum<book[j].saleNum){
temp=book[i];
book[i]=book[j];
book[j]=temp;
}
}
}
printf("\n售书排行榜:\n");
printf("\t书名\t售书统计数\t库存:\n");
for(int k=0;k<N;k++){
printf("第%d名 %10s %3d %3d\n",k+1,book[k].bookName,book[k].saleNum,book[k].num);
}
}