小组成员:陈志利 檀威
一、题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
二、设计思想
首先我们俩根据书的本数划分了三个范围,0-5,6-9,10以上。然后我们决定从实际数据出发,笔算了10以下的实际最大折扣,总结出10以上就是前面6-9的循环。跟5做除法得到的商就是5本的最大折扣的整数倍,再加上跟5取余得到的余数乘上相应的折扣,最终得到的和就是最低价格。
三、代码实现
1 #include<iostream.h> 2 void main() 3 { 4 int number;//本数 5 int shang;//商 6 int remainder;//余数 7 double price; 8 int n; 9 while(n) 10 { 11 cout<<"请输入您买书的本数:"<<endl; 12 cin>>number; 13 shang=number/5; 14 remainder=number%5; 15 switch(remainder) 16 { 17 case 0: 18 price=shang*8*0.75*5; 19 cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl; 20 break; 21 case 1: 22 price=shang*8*0.75*5+8; 23 cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl; 24 break; 25 case 2: 26 price=shang*8*0.75*5+8*2*0.95; 27 cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl; 28 break; 29 case 3: 30 price=(shang-1)*8*0.75*5+8*4*0.8*2; 31 cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl; 32 break; 33 case 4: 34 price=shang*8*0.75*5+8*4*0.8; 35 cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl; 36 break; 37 default: 38 break; 39 } 40 cout<<"继续输入1,退出输入0"<<endl; 41 cin>>n; 42 } 43 }
四、实现截图
五、个人总结
在我们计算的过程中,由于计算不认真,不全面误以为6-9的时候都是先满足5本的折扣,剩下的折扣就是最便宜的,不过经过后来同学的指正,我们又认真计算了一下,当为8本时,4本和4本是折扣力度最大的,这就是由于我们的不认真,太天真造成的,以后要坚决避免这种类似情况的发生。