最优惠的购书价格程序设计

一、设计思路

      题目要求:

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

                                        2                       5%                                   

                                        3                       10%                                   

                                        4                       20%                                   

                                        5                       25%

           根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

设计算法能够计算出读者购买一批书的最低价格。

     设计思想:

          按照此打折规则中,1本不打折,2-5本的时候根据对应的折扣规则来购买,在5本以上的时候,可以对应的转化为买5,6,7,8,9本书来计算,对应的优惠方案和价格如下:

          当购书数量恰好为5的倍数时,统一的七五折计算;

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

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

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

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

          在购书的数量大于5本的范围内,例如买书13本,优惠方案为5+8本;买44本书时,优惠方案为35+9本,此时是最佳的购书方案。

二、程序源代码

 1 // maishu.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include "iostream.h"
 6 
 7 double add(int number)
 8 {
 9     int m;
10     double sum;
11     m = number % 5 + 5;
12     switch(m)
13     {
14         case 6://买6本书(5+1)
15             sum = 38;   
16             break;
17         case 7://买7本书(5+2)
18             sum = 45.2;
19             break;
20         case 8://买8本书(4+4)
21             sum = 51.2;
22             break;
23         case 9://买9本书(4+5)
24             sum = 55.6;
25             break;
26         case 5://买5本书(5)
27             sum = 30;
28             break;
29     }
30     return sum;
31 }
32 int main(int argc, char* argv[])
33 {
34     double  sum = 0,d;    //sum表示购买书的总价
35     int number,a, b, c;  //number表示购买的书的数量
36                         //a = number / 5,b = 30 * (a - 1),d为一个中间变量
37     int xuanze;
38     cout<<"购买数量:";
39     cin>>number;
40     if(number <= 0)
41     {
42         cout<<"输入错误!"<<endl;
43             return 0;
44     }
45     else if (number <= 5)
46     {
47         switch(number)
48         {            
49             case 1:
50                 sum = 8;
51                 break;
52             case 2:
53                 sum = 8*2*0.95;
54                 break;
55             case 3:
56                 sum = 8*3*0.9;
57                 break;
58             case 4:
59                 sum = 8*4*0.8;
60                 break;
61             case 5:
62                 sum = 8*5*0.75;
63                 break;
64         }
65     }
66     else 
67     {
68         a = number / 5;
69         b = 30 * (a - 1);
70         d = add(number);
71         sum = b + d;
72     }
73     cout<<"支付金额:"<<sum<<endl;
74     return 0;
75 }

三、运行结果截屏

       

        

四、总计与心得

      在本次求最优惠的买书价格的程序设计中,我针对题意用上了枚举的方式直接给出了买6,7,8,9本书时的最优惠的总价钱,并没有用一定的算法来实现这个求解过程,虽达到了最后的目的,但是当打折方案改变时,也就不适用了,有待改进。

原文地址:https://www.cnblogs.com/mudanhuakai/p/4429197.html