您的位置:首页 > 其它

课堂练习-购书问题

2016-06-03 14:21 204 查看
问题:

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

本数

折扣

2

5%

3

10%

4

20%

5

25%

  根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。

解决方法:当购买书籍在1-5本之间的时候,购买不同的书籍最省钱,当购买6本时有3+3,4+2,5+1这三种方法,计算得5+1这种方法最省钱,当购买7本时有4+3,5+2这两种方法,计算得5+2这种方法最省钱,当购买8本时有4+4,5+3这两种方法,计算得4+4这种方法最省钱,当购买9本时有5+4这种方法,计算得5+4这种方法最省钱。当购买10本时有5+5这种方法,计算得5+5这种方法最省钱。由此分析得购买数量是以10本为一个周期。当购买数量超过10本时,进入下一个循环周期。

代码:

//李妍
//20133093
#include<iostream>
using namespace std;
int Money(int num)
{
double money;
int N = (int) (num / 10);
switch (num % 10){
case 0: money = 0; break;
case 1: money = 1 * 8; break;
case 2: money = 2 * 8 * 0.95; break;
case 3: money = 3 * 8 * 0.9; break;
case 4: money = 4 * 8 * 0.8; break;
case 5: money = 5 * 8 * 0.75; break;
case 6: money = 1 * 8 + 5 * 8 * 0.75; break;
case 7: money = 5 * 8 * 0.75 + 2 * 8 * 0.95; break;
case 8: money = 4 * 8 * 0.8 * 2; break;
case 9: money = 5 * 8 * 0.75 + 4 * 8 * 0.8; break;
}
return N * 5 * 8 * 0.75 * 2 + money;
}
int main()
{
int num = 0;//数量
cout << "请输入要买书的数量:" << endl;
cin >> num;
while (num == 0){
cout << "要买书的数量不能为0!请重新输入:" << endl;
cin >> num;
}
cout << "当买" << num << "本书时,花费最少钱是:" << Money(num)<<"元。" << endl;
return 0;
}


试验结果:







试验总结:

本次试验要求学会总结规律,将一些困难问题仔细分析,通过寻找他们之间的规律,将问题简单化。老师在下课之前简单的说了一下编程思路,我就恍然大悟。我觉得读懂题目真的很重要,要注意培养自己读题审题的能力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: