一、题目
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。
二,设计思路
先求出购买5本到10本书时的不同购买方式的折扣,以此观察如何购买能够得到最大的优惠
6本书:(1)1+5:5*8*0.25=10 7本书:(1)2+5:2*8*0.05+5*8*0.25=10.8
(2)2+4:2*8*0.05+4*8*0.2=7.2 (2)3+4:3*8*0.1+4*8*0.2=6.64
(3)3+3:3*8*0.1*2=4.8
8本书:(1)3+5:3*8*0.1+5*8*0.25=12.4 9本书:(1)4+5:4*8*0.2+5*8*0.25=16.4
(2)4+4:4*8*0.2*2= 12.8
根据上面的式子可算出能够凑出5本书时折扣最低(除购买8本),当购买数目为8本时,采用4+4的购买方式能得到最大的折扣。
三,程序代码
1 #include<iostream.h> 2 #include<conio.h> 3 #define p 8 4 int main() 5 { 6 int num; 7 double money; 8 int shang,yu; 9 int jixu; 10 cout<<"请输入购书的数目:"<<endl; 11 cin>>num; 12 shang=num/5; 13 yu=num%5; 14 if(num==3) 15 { 16 money=3*p*0.9; 17 } 18 else 19 { 20 money=shang*5*p*0.75; 21 switch(yu) 22 { 23 case 0:money=money;break; 24 case 1:money=money+8;break; 25 case 2:money=money+2*p*0.95;break; 26 case 4:money=money+4*p*0.8;break; 27 } 28 if(yu==3) 29 { 30 money=(shang-1)*5*p*0.75+4*8*0.8*2; 31 } 32 } 33 cout<<"所需最少人民币为"<<money<<"元"<<endl; 34 cout<<"是否继续执行程序:(1,继续 0,退出)"<<endl; 35 cin>>jixu; 36 if(jixu==1) 37 { 38 cout<<endl; 39 main(); 40 } 41 else 42 { 43 return 0; 44 } 45 getch(); 46 return 0; 47 }
四,实验总结
本次实验相对简单,有了老师课上提供的注意事项,加上前面几次实验的积累,很快便完成了实验内容。结论:贵在积累。