1、題目及要求
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編号0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:
本數 | 折扣 |
2 | 5% |
3 | 10% |
4 | 20% |
5 | 25% |
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書隻會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。設計算法能夠計算出讀者購買一批書的最低價格。
2、實驗思路
通過對買書優惠找規律可得:
當買的數量為1-5本時,肯定買不同的最便宜
當買的數量為6時最優為,買一套+任意一本
當買的數量為7時最優為:買一套+任意不同的兩本
當買的數量為8時最優為:不同的四本各買兩本
當買的數量為9時最優為:買一套+任意不同的四本
當買的數量為10時最優為:買兩套
是以任意買的書的數量都可以除以時求餘數,商部分則按兩套來算,餘部分則按1-10之間選擇最優。
3、實驗代碼

1 #include<iostream>
2 using namespace std;
3
4
5 int main()
6 {
7 int x, a, b;//x為買書的數量
8 double num,num1;
9 cout << "請輸入書本數:";
10 cin >> x;
11 a = x / 10;
12 b = x % 10;
13 num1 = 10 * 8 * a * (1 - 0.25);
14 if (b == 0)
15 {
16 num = num1;
17 }
18 else if (b == 1)
19 {
20 num = num1 + 8;
21 }
22 else if (b == 2)
23 {
24 num = num1 + 2 * 8 *(1-0.05);
25 }
26 else if (b == 3)
27 {
28 num = num1 + 3 * 8*(1 - 0.1);
29 }
30 else if (b == 4)
31 {
32 num = num1 + 4 * 8*(1 - 0.2);
33 }
34 else if (b == 5)
35 {
36 num = num1 + 5 * 8*(1 - 0.25);
37 }
38 else if (b == 6)
39 {
40 num = num1 +30+ 8;
41 }
42 else if (b == 7)
43 {
44 num = num1+30 + 2 * 8*(1 - 0.05);
45 }
46 else if (b == 8)
47 {
48 num = num1 + 8 * 8 * (1-0.2);
49 }
50 else if (b == 9)
51 {
52 num = num1 + 30 + 4* 8 * (1-0.2);
53 }
54 cout << "讀者購買這批書的最低價格為:" << num<<endl;
55 return 0;
56 }
View Code
4、實驗截圖
5、時間記錄日志(機關:h):
日期 | 開始時間 | 結束時間 | 中斷時間(min) | 淨時間(min) | 活動 | 備注 |
星期一 | 14:00 | 15:50 | 10(課間) | 100 | 聽課 | 軟體工程 |
星期三 | 15:00 | 17:00 | 10(休息) | 120 | 看書 | 人月神話 |
星期四 | 上機 | 買書問題 | ||||
星期五 | 18:30 | 19:10 | 30 | 程式設計發部落格 |