书店针对《哈利波特》系列书籍进行促销活动,一共 5 卷,用编号 0 、 1 、 2 、 3 、 4 表示,单独一卷售价 8 元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况 。单数一本书只会对应一个折扣规则,例如购买了两 本卷 1 ,一本卷 2 ,则可以享受 5% 的折扣,另外一本卷 一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
1 #include2 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 else32 sum=3*8*0.9;33 cout<<"读者购买一批书的最低价格为:"< <<"元"<
截图:
心得体会:
做这道题时,我把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的情况,来进行编程。
这道题还是考验了一下数学的能力,虽然中间计算花了点时间,但是编程还是顺利的完成了。