书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元,具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
1 #include<iostream.h> 2 int main(){ 3 int num; 4 int m,n; 5 float sum; 6 cout<<"请输入要购买的书的本书:"; 7 cin>>num; 8 m=num/5; 9 n=num%5; 10 if(num!=3) 11 { 12 switch(n) 13 { 14 case 0: 15 sum=num*8*0.75; 16 break; 17 case 1: 18 sum=m*5*8*0.75+8; 19 break; 20 case 2: 21 sum=m*5*8*0.75+2*8*0.95; 22 break; 23 case 3: 24 sum=(m-1)*5*8+4*8*0.8+4*8*0.8; 25 break; 26 case 4: 27 sum=m*5*0.75+4*8*0.8; 28 break; 29 } 30 } 31 else 32 sum=3*8*0.9; 33 cout<<"读者购买一批书的最低价格为:"<<sum<<"元"<<endl; 34 return 0; 35 }
截图:
心得体会:
做这道题时,我把6-10本的情况进行了计算:当买6本时,5本和1本买最便宜;买7本时,5本和2本买最便宜;买8本时,4本和4本买最便宜;买9本时,5本和4本最便宜;买10本时,5本和5本买最便宜。然后10以上的数我们可以看成这些的组合。比如11可以变成,5,5,1;12变成5,5,2。但有特殊的情况,当买的本数除以5时,余3的情况时,比如13,我们不能把他分成5,5,3,我们应该看成5,8,也就是5,4,4,这样的最便宜。所以,我们可以根据除以5的情况,来进行编程。
这道题还是考验了一下数学的能力,虽然中间计算花了点时间,但是编程还是顺利的完成了。