题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
思路:
5本以下,购买不重样的是最低价格。
5本以上,6本是买一套并单买1本。
7本,买一套并买不重样的2本。
8本为特殊情况,买两套四本的。
9本为买一套并买不重样4本。
10本为买两套。
即买N本,特殊情况为5N+8
其余均和5,6,7,9,10类似。
代码:
1 #include<iostream> 2 using namespace std; 3 4 void main() 5 { 6 int a; 7 cout << "购买书的数量:"; 8 cin >> a; 9 10 int n; 11 n = a % 5; 12 13 switch (n) 14 { 15 case 0: 16 cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75; 17 break; 18 case 1: 19 cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 8; 20 break; 21 case 2: 22 cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 15.2; 23 case 3: 24 { 25 if (a == 3) 26 cout << "最低价格为:21.6"; 27 else 28 cout << "最低价格为:" << (a - 8) / 5 * (8 * 5)*0.75 + 51.2; 29 } 30 break; 31 case 4: 32 cout << "最低价格为:" << (a - n) / 5 * (8 * 5)*0.75 + 25.6; 33 break; 34 35 } 36 }
截图:
总结:
主要是理清这道题的思路,找到如何处理特殊情况的规律即可