课堂练习-购书问题

问题:

 

  书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号01234表示,单独一卷售价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;
}

 试验结果:

试验总结:

     本次试验要求学会总结规律,将一些困难问题仔细分析,通过寻找他们之间的规律,将问题简单化。老师在下课之前简单的说了一下编程思路,我就恍然大悟。我觉得读懂题目真的很重要,要注意培养自己读题审题的能力。

 

 

posted @ 2016-06-03 14:21  樱花瓣满天飞  阅读(174)  评论(0编辑  收藏  举报