首页 > 技术文章 > 哈利波特买书事件

mtant 2015-04-15 20:11 原文

题目:

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

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int num;
 6     int num1;
 7     int num2;
 8     int num3;
 9 
10     cout << "printf number of books";
11     cin >> num;
12 
13     if (num >= 1 && num <= 5)
14         cout << "" << num << "中不同的书即可";
15     else
16     {
17         switch (num)
18         {
19         case 6:
20             cout << "买5+1的套餐";
21             break;
22         case 7:
23             cout << "买5+2的套餐";
24             break;
25         case 8:
26             cout << " 买4+4的套餐";
27             break;
28         case 9:
29             cout << "买5+4的套餐";
30             break;
31         default:
32             num1 = num / 5;
33             num2 = num % 5;
34             num3 = num2 + 5;
35             switch (num3)
36             {
37                 case 5:
38                     cout << "其中" << num1 << "本是5本的套餐";
39                     break;
40                 case 6:
41                     cout << "其中"<<num1<<"本是5本的套餐剩下的一本单独买";
42                     break;
43                 case 7:
44                     cout << "其中" << num1 << "本是5本的套餐剩下的买2本的套餐";
45                     break;
46                 case 8:
47                     cout << "其中" << num1 - 1 << "本是5本的套餐其余的买4+4套餐";
48                     break;
49                 case 9:
50                     cout << "其中" << num1 << "本是5本的套餐剩下的买4本的套餐";
51                     break;
52             }
53 
54         }
55     }
56 
57 }

思考:当我们把买5本书的优惠下调到21%时上面的算法就不成立了,不能以5为单位去算,本题我计算了一下11本的5+5+1,4+4+3,12本的552和444发现5的折扣很给力把

只买1本的所谓亏损给赚回来了于是见5就合就可以了。

推荐阅读