915xjtu2014_4

某出版社需要统计本社目前最畅销的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);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值