7-1 图书分类

【问题描述】

泉州师范学院图书馆新购置了一批书籍,为了方便师生查阅及图书馆日常管理,需要对这批图书进行分类与汇总,你的任务是:

1、实现图书信息的录入,每种图书的信息包括:书号,书名,作者,出版社,定价和数量。

2、能够实现分别按书名、作者、出版社查询图书。

输入格式:

输入第一行1个数字n(n≤100)表示所有的图书种数。接下来n行,每一行为一种图书的信息,并按照书号(13位的数字编号)、书名(不超过10个汉字)、作者(不超过4个汉字)、出版社(不超过10个汉字)、定价(不超过100的浮点数)和数量(不超过100的整数)的顺序输入,空格隔开。题目保证所有图书的书号都不相同。

再一行一个数字q(n≤20)表示查询的次数,然后q行查询,每一行的查询遵循如下格式:

a b

其中a是一个整数,b是个字符串,a的取值仅有3个,分别是1、2、3,表示分别按书名、作者、出版社查询图书;字符串b对应不同的a其意义不同:当a=1时,b为书名;当a=2时,b为作者;当a=3时,b为出版社。即字符串b就是查询条件,题目保证所有的查询条件都能找到至少一条结果。

输出格式:

对应每一次查询,其查询结果每一种图书输入在一行,并遵循如下格式:

中间用一个制表符隔开,浮点数保留两位小数。如查询结果超过一行(即有多个满足条件的图书),则按书号升序输出,并在每次查询结果的最前面输出仅有一个字符'*'的一行。(具体请参考输出样例)

输入样例:

13
9787302359388 高级语言程序设计 刘备 电子工业出版社 44.50 21
9787302387954 面向对象程序设计 刘备 机械工业出版社 34.50 20
9787302407263 Java程序设计 刘备 清华大学出版社 39.50 23
9787302423898 高级语言程序设计 曹操 中国铁道出版社 39.00 8
9787113196202 面向对象程序设计 曹操 电子工业出版社 39.00 12
9787113195724 Java程序设计 诸葛亮 中国铁道出版社 39.80 10
9787113185800 高级语言程序设计 诸葛亮 清华大学出版社 45.00 9
9787115410641 高级语言程序设计 诸葛亮 人民邮电出版社 45.00 23
9787113185701 面向对象程序设计 诸葛亮 电子工业出版社 40.00 11
9787115427298 面向对象程序设计 赵云 人民邮电出版社 45.00 8
9787115356239 高级语言程序设计 赵云 机械工业出版社 39.80 11
9787115394842 面向对象程序设计 赵云 人民邮电出版社 45.00 13
9787302440680 高级语言程序设计 孙权 清华大学出版社 45.00 22
4
2 诸葛亮
1 面向对象程序设计
3 清华大学出版社
1 Java程序设计

输出样例:

*
9787113185701	面向对象程序设计	诸葛亮	电子工业出版社	40.00*11=440.00
9787113185800	高级语言程序设计	诸葛亮	清华大学出版社	45.00*9=405.00
9787113195724	Java程序设计	诸葛亮	中国铁道出版社	39.80*10=398.00
9787115410641	高级语言程序设计	诸葛亮	人民邮电出版社	45.00*23=1035.00
*
9787113185701	面向对象程序设计	诸葛亮	电子工业出版社	40.00*11=440.00
9787113196202	面向对象程序设计	曹操	电子工业出版社	39.00*12=468.00
9787115394842	面向对象程序设计	赵云	人民邮电出版社	45.00*13=585.00
9787115427298	面向对象程序设计	赵云	人民邮电出版社	45.00*8=360.00
9787302387954	面向对象程序设计	刘备	机械工业出版社	34.50*20=690.00
*
9787113185800	高级语言程序设计	诸葛亮	清华大学出版社	45.00*9=405.00
9787302407263	Java程序设计	刘备	清华大学出版社	39.50*23=908.50
9787302440680	高级语言程序设计	孙权	清华大学出版社	45.00*22=990.00
*
9787113195724	Java程序设计	诸葛亮	中国铁道出版社	39.80*10=398.00
9787302407263	Java程序设计	刘备	清华大学出版社	39.50*23=908.50

 【代码如下】

#include<stdio.h>
#include<string.h>
struct lib {
	double num;    //编号
	char book[100];//书名
	char name[100];//作者名字
	char pubh[100]; //出版社名字
	double price;  //单价
	int cou;       //数量
} libs[100],temp;
int main() {
	int n;
	scanf("%d",&n);

	for(int i=0; i<n; i++) {
		scanf("%lf",&libs[i].num);  //一定要加取值符啊
		scanf("%s",libs[i].book);
		scanf("%s",libs[i].name);
		scanf("%s",libs[i].pubh);
		scanf("%lf",&libs[i].price);//一定要加取值符啊
		scanf("%d",&libs[i].cou);   //一定要加取值符啊
	}
	//冒泡法排序
	for(int i=0; i<n-1; i++) {
		for(int j=0; j<n-1-i; j++) {
			if(libs[j].num > libs[j+1].num) {
				temp = libs[j];
				libs[j] = libs[j+1];
				libs[j+1] = temp;
			}

		}
	}
	int m;
	scanf("%d",&m);
	getchar();
	for(int i=0; i<m; i++) {
		int a;
		char b[100];
		scanf("%d %s",&a,b);
		if( a == 1 ) {
			printf("*\n");
			for(int j=0; j<n; j++) {
				if( strcmp(libs[j].book,b) == 0 ) {
					//"\t"使文本对齐
					printf("%.0f\t%s\t%s\t%s\t%.2f*%d=%.2f\n",libs[j].num,libs[j].book,libs[j].name,libs[j].pubh,libs[j].price,libs[j].cou,libs[j].price*libs[j].cou);
				}
			}
		} else if( a == 2 ) {
			printf("*\n");
			for(int j=0; j<n; j++) {
				if( strcmp(libs[j].name,b) == 0 ) {
					//"\t"使文本对齐
					printf("%.0f\t%s\t%s\t%s\t%.2f*%d=%.2f\n",libs[j].num,libs[j].book,libs[j].name,libs[j].pubh,libs[j].price,libs[j].cou,libs[j].price*libs[j].cou);
				}
			}
		} else if( a == 3 ) {
			printf("*\n");
			for(int j=0; j<n; j++) {
				if( strcmp(libs[j].pubh,b) == 0 ) {
					//"\t"使文本对齐
					printf("%.0f\t%s\t%s\t%s\t%.2f*%d=%.2f\n",libs[j].num,libs[j].book,libs[j].name,libs[j].pubh,libs[j].price,libs[j].cou,libs[j].price*libs[j].cou);
				}
			}
		}
	}

	return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值