课堂练习4.14
练习题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
一、设计思想
首先分析可得
1、在小于等于五本时按照折扣买即可。
2、分析可得在小于十本时分成两组比分成多组要合适。
3、、在大于五本小于十本时,经计算可得除在第八本处按照(4,4)分最少,其他在分为(x,5)比较合适。
4、在大于十本时(i本)分析可得与十本内时类似,当i%5!=3时,可以按照i除以5取整得a,a个5本再加上剩下的;当i%5=3时,则按照(a-1)个5本,剩下的分为(4,4),再进行求和。
二、源代码
#include<iostream.h> void main() { double b,sum; int a,i,c; cout<<"请输入要购买的本数:"; cin>>i; if(i%5!=3) { a=i/5; b=30*a; c=i%5; if(c==0) { sum=b; } if(c==1) { sum=b+8; } else if(c==2) { sum=b+16*0.95; } else if(c==3) { sum=b+24*0.9; } else if(c==4) { sum=b+32*0.8; } } else if(i==3) { sum=24*0.9; } else if(i%5==3&&i!=3) { a=i/5; b=30*(a-1); c=i%5; sum=b+32*0.8*2; } cout<<"最低价格为:"<<sum<<endl; }
三、结果截图
四、实验总结
本次实验是在课堂上构思出来的,通过此次实验我首先的感悟是动手很重要,因为此次题目很难一眼看见规律,所以一直看的话是很难下手的。在老师的提醒下,很快发现需要考虑的只有6、7、8、9四种情况,再大的话情况是类似的,通过计算很快发现只有在8时与其他情况不同,所以只需通过判断语句在余数为三时做出不同的计算即可。