小组成员:赵永恒、范德一
一、实验题目
书店针对《哈利波特》系列书籍进行促销活动,一共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个计算公式就可以解决,这样不管数目是多少都能带入而且很简洁。
三、源代码
1 #include<iostream.h> 2 int main() 3 { 4 int num; 5 int shang; 6 int yushu; 7 double price; 8 cout<<"请输入买书数量:"; 9 cin>>num; 10 shang=num/5; 11 yushu=num%5; 12 switch(yushu) 13 { 14 case 0: 15 price=30*shang; 16 cout<<"书的总价是: "<<price<<" 元"<<endl; 17 break; 18 case 1: 19 price=30*shang+8; 20 cout<<"书的总价是: "<<price<<" 元"<<endl; 21 break; 22 case 2: 23 price=30*shang+15.2; 24 cout<<"书的总价是: "<<price<<" 元"<<endl; 25 break; 26 case 3: 27 price=30*(shang-1)+51.2; 28 cout<<"书的总价是: "<<price<<" 元"<<endl; 29 break; 30 case 4: 31 price=30*shang+25.6; 32 cout<<"书的总价是: "<<price<<" 元"<<endl; 33 break; 34 } 35 return 0; 36 }
四、实验截图
五、实验总结
其实在一开始老师说这是一道微软的面试题我确实被吓到了,感觉难度一定很大,要用很长的时间来设计编写代码。但是冷静下来,我们两个人对整体的布局和思路进行协商和计算以后,发现并不是我们想象的那样,思路确实是比代码的编写更为重要,也证实了,脚踏实地永远比沉浮与表面的恐惧更重要。