购买图书

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

                                  本数                    折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
 
解决思路:
 
6本时:1本+5本最优;
7本时:2本+5本最优;
8本时:4本+4本最优;
9本时:4本+5本最优。
买10本时选择“5+5”,优惠价格为20;当购买价格超过10本时,根据规律发现,选择10本十本买,最后根据1-10的本数选择最优惠方法就能求得最为优惠价格。
 
源代码:
 1 #include<iostream>
 2 using namespace std;
 3 
 4 void TheCheapestPrice(int number)
 5 {
 6     int count = 0;
 7     double price;     //10本以内的优惠价格 
 8     double sum;
 9     count = number / 10;
10 
11     switch (number % 10)
12     {
13     case 0:price = 0; break;
14     case 1:price = 0; break;
15     case 2:price = 0.8; break;
16     case 3:price = 2.4; break;
17     case 4:price = 6.4; break;
18     case 5:price = 10; break;
19     case 6:price = 10; break;
20     case 7:price = 10.8; break;
21     case 8:price = 12.8; break;
22     case 9:price = 16.4; break;
23     }
24 
25     sum = number * 8 - count * 20 - price;//总价格减去优惠价格
26     cout << "最低价格为: " << sum<<endl;
27 }
28 
29 int main()
30 {
31     int Book_Num = 0;
32     cout << "请输入需要购买的书籍数量: ";
33     cin >> Book_Num;
34     TheCheapestPrice(Book_Num);
35     return 0;
36 }
结果截图:
 
原文地址:https://www.cnblogs.com/X-knight/p/5557900.html