买书折扣问题
题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一 本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
算法思想:
一一列举法
本数 价钱 原价 降价
1 8 8
2 16-16*%5 =15.2 16 0.8
3 3*8-3*8*%10 =21.6 24 2.4
4 32-32*%20 =25.8 32 6.4
5 40-40*%25 =30 40 10
6本 3+3 1+5 2+4
43.2 38 41
7本 1+6 2+5 3+4
46 45.2 47.4
8本 1+7 2+6 3+5 4+4
53.2 53.2 51.6 51.6
9本 1+8 2+7 3+6 4+5
59.6 60.4 59.6 55.8
10 本 5+5
#include<iostream> using namespace std; int main() { double monery; int num; int shang, yu; cout << "请输入购买数量:"; cin >> num; if (num <= 5) { switch (num) { case(1) : monery = 8; break; case(2) : monery = 16 * 0.95; break; case(3) : monery = 24 * 0.9; break; case(4) : monery = 32 * 0.8; break; case(5) : monery = 30; break; default:cout << "输入错误!!" << endl; } } else if (num <= 10) { switch (num) { case(6) : monery = 38; break; case(7) : monery = 45.2; break; case(8) : monery = 51.2; break; case(9) : monery = 55.6; break; case(10) : monery = 60; break; } } else { shang = num / 10; yu = num % 10; switch (yu) { case(1) : monery = 8; break; case(2) : monery = 16 * 0.95; break; case(3) : monery = 24 * 0.9; break; case(4) : monery = 32 * 0.8; break; case(5) : monery = 30; break; case(6) : monery = 38; break; case(7) : monery = 45.2; break; case(8) : monery = 51.2; break; case(9) : monery = 55.6; break; } monery += 60 * shang; } cout << "购买数量为:" << num << " 应付金额:" << monery << endl; return 0;