买书求如何获得折扣使价格最低
2015-04-14 18:31 奔波儿灞 阅读(209) 评论(0) 编辑 收藏 举报题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求:将设计思想、代码实现、实现截图、个人总结、以博文的形式发表。
一、设计思路
由键盘输入购买图书的数量num,只需考虑num个位数为6,7,8,9的情况,其他情况下,均可直接按照题目中所给的折扣进行计算。假设num的个位数为k,则用循环语句即可,从i=5开始循环,循环一次i--,i<k/2时结束循环,花费的价格为(k-5)*折扣+i*折扣。
二、源代码
#include<iostream.h> double Discount(int type) { double k; //进行折扣后的值 switch(type) { case 1:k=8;break; case 2:k=2*8*0.95;break; case 3:k=3*8*0.9;break; case 4:k=4*8*0.8;break; case 5:k=5*8*0.75;break; default:break; } return k; } int main() { int n; //图书的数量 int m=0; //获取整十的数量 int i; double cheap; //最低折扣 double cost[10]={0}; //各折扣价格 double price; //最终的最低价格 cout<<"请输入购买数量:"<<endl; cin>>n; if(n>10&&(n%10==3)) { m=n/5-1; price=m*5*8*0.75+Discount(4)*2; cout<<"购书最低价格为:"<<price<<endl; return 0; } if(n>10) { m=n/10; n=n%10; } if(n<=5) { price=m*2*5*8*0.75+Discount(n); cout<<"购书最低价格为:"<<price<<endl; return 0; } for(i=5;i>=n/2;i--) { cost[i]=Discount(i)+Discount(n-i); } cheap=cost[5]; for(i=5;i>=n/2;i--) { if(cheap>cost[i]) cheap=cost[i]; } price=m*2*5*8*0.75+cheap; cout<<"购书最低价格为:"<<price<<endl; return 0; }
三、运行结果
![](http://images0.cnblogs.com/blog2015/726928/201504/141822494176889.png)
![](http://images0.cnblogs.com/blog2015/726928/201504/141823069646861.jpg)
![](http://images0.cnblogs.com/blog2015/726928/201504/141824061203189.png)
![](http://images0.cnblogs.com/blog2015/726928/201504/141824225574133.png)
四、个人总结
遇到的问题:在比较各种折扣最小值时,只需比较填充进数组的那些值就可以了,其他值不需要参与比较,甚至有可能会影响最终结果。
收获:通过这次课堂练习,使我编程更加严谨,思维更加缜密,能够及时发现一些细微的错误。