买书折扣问题

1.题目:

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

                                  本数                    折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。

2.设计思路:

把用户要买的书籍本数除以5来取余,再用余数加上5来单独考虑要买6、7、8、9本时的情况,最后求出折扣最多的情况。以下为这几种情况时的购书价格:

当购书数量为6时,优惠方案为1+5,总价为:38;

当购书数量为7时,优惠方案为2+5,总价为:45.2;

当购书数量为8时,优惠方案为4+4,总价为:51.2;

当购书数量为9时,优惠方案为4+5,总价为:55.6;

3.源代码:

 1  #include<iostream.h>
 2  void main()
 3  {
 4   
 5       int i,num,money,j;
 6       cout<<"请输入买书数量:";
 7       cin>>num;
 8       i=num%5;
 9       j=num/5;     
10       switch(i)
11      {
12          case 0:
13              money=j*30;
14              break;
15          case 1:
16              money=j*30+8;
17              break;
18          case 2:
19              money=j*30+2*8*0.95;
20              break;
21          case 3:
22             if(j=0)
23              {
24                  money=3*8*0.9;
25                 break;
26              }
27              else            
28              {
29                 money=(j-1)*30+4*8*0.8*2;
30                  break;
31              }
32         case 4:
33              money=j*30+4*8*0.8;
34              break;
35      }
36      cout<<"最低价格为"<<money<<""<<endl;
37   }

4.结果截图:

5.心得体会:

这道题重要的是得出求解方法与思路,程序编写很简单,但实现出来代码延伸与复用的用处不大,还有待改进。

原文地址:https://www.cnblogs.com/zhengt/p/4429375.html