题目要求:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
1设计思路:
0,1,2,3,4共五本。一本八块钱
本数折扣
2 5%
3 10%
4 20%
5 25%
本,价钱 原价 降价
1 8 8
2 16-16*%5 =15.2 16 0.8
3 3*8-3*8*%10 =21.6 24 2.4
4 32-32*%20 =25.8 32 6.4
5 40-40*%25 =30 40 10
6本 3+3 1+5 2+4
43.2 38 41
7本 1+6 2+5 3+4
46 45.2 47.4
8本 1+7 2+6 3+5 4+4
53.2 53.2 51.6 51.6
9本 1+8 2+7 3+6 4+5
59.6 60.4 59.6 55.8
10 本 5+5
通过以上对购买1到10本的购买分析,可以分别得到1到10本的最佳购买方式。 大多时候选择五本书为一个整体来购买。余下的就随机购买五本书中不相同的卷就可以价格最低。但在数量为8的情况有所不同,这时候选择4+4组合价格更低。
当购买数量大于十时,采用除以10取余的方法,余数部分使用前面分析的购买方式,其余使用5本整体的购买方式。注意在余数为8时的不同。
2源程序代码:
#include<iostream> using namespace std; void main() { int Book=0; double money; double a[5]={0,0.05,0.1,0.2,0.25}; while(Book<1) { cout<<"请输入你想要买的书的本数:"; cin>>Book; } if(Book%10==8) { money=(Book/10)*10*8*(1-a[4])+(Book%10)*8*(1-a[3]); } else { money=(Book/5)*5*8*(1-a[4])+(Book%5)*8*(1-a[Book%5-1]); } cout<<"读者购买这批书的最低价格为:"<<money<<endl; cout<<"购买方式如下:"<<endl; if(Book%10==8) { cout<<"五本中有四本书每本买"<< (Book/10)*2+2<<"本,"; cout<<"剩下的一本买"<< (Book/10)*2<<"本,"<<endl; } else { if(Book%5!=0) { cout<<"五本中有"<<Book%5<<"本书每本买"<< Book/5+1<<"本,"; cout<<"剩下的"<<5-Book%5<<"本每本买"<< Book/5<<"本,"<<endl; } else { cout<<"五本书每本买"<< Book/5<<"本 "<<endl; } } }
3 结果截图:
网速不好明日再发
4个人总结: