题目要求:
某书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元,具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
一、设计思想
购买本书 |
价格 |
1 |
s1=8 |
2 |
s2=16*0.95=15.2 |
3 |
s3=24*0.9=21.6 |
4 |
s4=32*0.8=25.6 |
5 |
s5=40*0.75=30 |
6 |
4本和2本 s6=s4+s2=40.8 |
5本和1本 s6=s5+s1=38 |
|
3本和3本 s6=s3+s3=43.2 |
|
7 |
5本和2本 s7=s5+s2=45.2 |
4本和3本 s7=s4+s3=47.2 |
|
8 |
5本和3本 s8=s5+s3=51.6 |
4本和4本 s8=s4+s4=51.2 |
|
9 |
5本和4本 s9=s5+s4=55.6 |
通过上面的表格可以看出,建设购买的本数为n:
如果n<=5直接按折扣购买即可
如果 5< n<10时,除了本数为8外,其余的都是5本加上n-5
如果 n>10时,都可以分成10*i+k的形式,其中k本书的计算方法和上面类似。
二、源程序
1 //设计者 信1201-2班 司新红 2 3 #include "stdafx.h" 4 #include "iostream" 5 using namespace std; 6 7 int main() 8 { 9 int b;//定义购买的书籍数 10 int m,n; 11 int i; 12 double sum=0; 13 cout<<"请输入需要购买的书籍数:"<<endl; 14 cin>>b; 15 m=b/5; 16 n=b%5; 17 i=n+5; 18 if(i!=8) 19 { 20 switch(n) 21 { 22 case 0: 23 sum=m*40*0.75; 24 break; 25 case 1: 26 sum=m*40*0.75+8; 27 break; 28 case 2: 29 sum=m*40*0.75+16*0.95; 30 break; 31 case 3: 32 sum=m*40*0.75+24*0.9; 33 break; 34 case 4: 35 sum=m*40*0.75+32*0.8; 36 break; 37 } 38 } 39 else 40 sum=(m-1)*30+4*8*0.8*2; 41 cout<<"读者购买"<<b<<"本书的最低价格为:"<<endl; 42 cout<<sum<<endl; 43 return 0; 44 }
三、运行结果
四、实验总结
这次的实验我感觉编写起来不是很难,最主要的是思路想到就可以了,思想在课堂上经过老师的提示以及我和同学的讨论就想到了算法大概应如何实现了。这次的代码也不用特别的繁琐,功能还是比较好实现的,我在编写的过程中,就是在考虑买8本书时应如何处理时遇到了一点困难。
时间: 2024-10-15 23:27:03