哈利波特折扣

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

本数

折扣

2

5%

3

10%

4

20%

5

25%

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

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

  思路:通过如下计算: 

本数

优惠价格

本数

优惠价格

1

8

6

30+8=38

2

15.2

7

30+15.2=45.2

3

21.6

8

30+25.6*2=51.2

4

25.6

9

30+25.6=55.6

5

30

10

30*2=60

 可得规律是:当数量超过一套时,优先一套购买。其中若大于5本且多出3本构成8余数的,优惠价格要按照(n/5-1)*8*0.75+25.6*2单独来算。

  代码:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int num,k;
 7     double price;
 8 xunhuan:
 9     cout << "输入购买书的数量:";
10     cin >> num;
11     k = num % 5;
12     k = k + 5;
13     switch (k)
14     {
15     case 5:
16         price = num * 8 * 0.75;
17         break;
18     case 6:
19         price= (num - 1) * 8 * 0.75 + 8;
20         break;
21     case 7:
22         price= (num- 2) * 8 * 0.75 + 8 * 2 * 0.95;
23         break;
24     case 8:
25         price= (num - 8) * 8 * 0.75 + 4 * 8 * 0.8 * 2;
26         break;
27     case 9:
28         price= (num - 4) * 8 * 0.75 + 8 * 4 * 0.8;
29         break;
30     }
31     cout << "购买"<<num<<"本书最折扣的价格是:"<<price<< endl;
32     int cont;
33     cout << "是否继续?(1:是 2:否)"<<endl;
34     cin >> cont;
35     switch (cont)
36     {
37     case 0:
38         cout << "退出!";
39         break;
40     case 1:
41         goto xunhuan;
42         break;
43     }
44     return 0;
45 }

  运行结果截图:

  总结:刚开始感觉一点思路都没有,而且上课老师让先拿笔计算的时候自己都能算错,然后就一点而都找不出规律,后来经过老师的点拨,发现原来是这么回事,所以说,有时候会编程并不重要,重要的是编程的思路。

原文地址:https://www.cnblogs.com/quite-love/p/5559592.html