购买图书最优惠问题

一、题目
 
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
                               本数                  折扣
                                   2                       5%
                                   3                       10%
                                   4                       20%
                                   5                       25%
 
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
二,设计思路
先求出购买5本到10本书时的不同购买方式的折扣,以此观察如何购买能够得到最大的优惠
6本书:(1)1+5:5*8*0.25=10              7本书:(1)2+5:2*8*0.05+5*8*0.25=10.8
       (2)2+4:2*8*0.05+4*8*0.2=7.2            (2)3+4:3*8*0.1+4*8*0.2=6.64
       (3)3+3:3*8*0.1*2=4.8 
8本书:(1)3+5:3*8*0.1+5*8*0.25=12.4    9本书:(1)4+5:4*8*0.2+5*8*0.25=16.4
       (2)4+4:4*8*0.2*2= 12.8  
根据上面的式子可算出能够凑出5本书时折扣最低(除购买8本),当购买数目为8本时,采用4+4的购买方式能得到最大的折扣。

三,程序代码

 1 #include<iostream.h>
 2 #include<conio.h>
 3 #define p 8
 4 int main()
 5 {
 6     int num;
 7     double money;
 8     int shang,yu;
 9     int jixu;
10     cout<<"请输入购书的数目:"<<endl;
11     cin>>num;
12     shang=num/5;
13     yu=num%5;    
14     if(num==3)
15     {
16         money=3*p*0.9;
17     }
18     else
19     {
20         money=shang*5*p*0.75;
21         switch(yu)
22         { 
23         case 0:money=money;break;
24         case 1:money=money+8;break;
25         case 2:money=money+2*p*0.95;break;
26         case 4:money=money+4*p*0.8;break;
27         }
28         if(yu==3)
29         {
30             money=(shang-1)*5*p*0.75+4*8*0.8*2;
31         }
32     }
33     cout<<"所需最少人民币为"<<money<<""<<endl;
34     cout<<"是否继续执行程序:(1,继续 0,退出)"<<endl;
35     cin>>jixu;
36     if(jixu==1)
37     {
38         cout<<endl;
39         main();
40     }
41     else
42     {
43         return 0;
44     }
45     getch();
46     return 0;
47 }             

四,实验总结
本次实验相对简单,有了老师课上提供的注意事项,加上前面几次实验的积累,很快便完成了实验内容。结论:贵在积累。

posted @ 2015-04-15 16:34  小小金丫  阅读(292)  评论(0编辑  收藏  举报