小组成员:赵永恒、范德一
一、实验题目
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
二、设计思路
刚看到这个问题的时候,我们的设想是分情况讨论,例如说12本的时候程序自动将其分成很多种情况,如4.4.4、3.4.5等。但是在设计程序的时候我们发现这样来实现是很麻烦或者说是实现不了的,因为数目越大情况越多,需要讨论的也就越多,实现不了对很大的数的分情况讨论。后来通过计算,我们发现只需将所有的情况分成5类就可以,即被5整除后对其余数进行讨论,对于价格总数,我们也归类了5个计算公式就可以解决,这样不管数目是多少都能带入而且很简洁。
三、源代码
#include<iostream.h> int main() { int num; int shang; int yushu; double price; cout<<"请输入买书数量:"; cin>>num; shang=num/5; yushu=num%5; switch(yushu) { case 0: price=30*shang; cout<<"书的总价是: "<<price<<" 元"<<endl; break; case 1: price=30*shang+8; cout<<"书的总价是: "<<price<<" 元"<<endl; break; case 2: price=30*shang+15.2; cout<<"书的总价是: "<<price<<" 元"<<endl; break; case 3: price=30*(shang-1)+51.2; cout<<"书的总价是: "<<price<<" 元"<<endl; break; case 4: price=30*shang+25.6; cout<<"书的总价是: "<<price<<" 元"<<endl; break; } return 0; }
四、运行截图
五、实验总结
刚看到这个题目感觉难度有些大,但是经过和搭档研究一番后,发现看似复杂问题可以划分成几个小的分组,然后每个分组进行分析,这样问题就得到了解决。很多问题本身并不难,我们总是被它的表象给吓到了,冷静分析后才发现原来都在自己的能力范围之内。