课堂练习——书店折扣问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂练习——书店折扣问题相关的知识,希望对你有一定的参考价值。
1.设计题目
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
2.设计要求
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)
3.设计思想
首先,能够确定的是5本一下的购买数量,买不同卷的书是最便宜的;
然后,大于5本的需要分两种情况
第一种:6~9本,他们需要考虑每个数量下,购买最便宜,例如:6本需要在1,5分,2,6分,3,3分找到最便宜的,其他的如上。
第二种:大于9本的,举个例子,21本,分成5,5,5,6。就是前几个是5,最后一个是一个6-9的本数,根据上面的情况就可以简单求出这种情况的最大折扣了。
代码实现:
1 #include<iostream.h> 2 int main() 3 { 4 int i,d; 5 double a[200]; //书本类型 6 a[1]=8; 7 a[2]=8*2*(1-0.05); 8 a[3]=8*3*(1-0.10); 9 a[4]=8*4*(1-0.20); 10 a[5]=8*5*(1-0.25); 11 do{ 12 13 cout<<"请输入买书本的数:"; 14 int num; 15 16 cin>>num; 17 18 19 double max[10]; 20 max[1]=a[1]+a[5]; 21 max[2]=a[2]+a[4]; 22 max[3]=a[3]+a[3]; 23 a[6]=max[1]; 24 for(i=1;i<4;i++) 25 { 26 if(a[6]<max[i]) 27 { 28 a[6]=max[i]; 29 } 30 } 31 32 33 double max4=a[2]+a[5]; 34 double max5=a[3]+a[4]; 35 a[7]=(max4>max5)?max5:max4; 36 37 double max6=a[3]+a[5]; 38 double max7=a[4]*2; 39 a[8]=(max6>max7)?max7:max6; 40 41 42 a[9]=a[4]+a[5]; 43 44 if(num>9) 45 { 46 int b=(num/5)-1; 47 int m=5+num%5; 48 49 a[num]=b*a[5]+a[m]; 50 51 52 } 53 54 cout<<"买这些书一共需花费:"<<a[num]<<"元!"<<endl; 55 cout<<"如果需要计算其他数量的价格请输1,否则0:"; 56 cin>>d; 57 cout<<endl; 58 }while(d==1); 59 60 return 0; 61 }
程序截图:
以上是关于课堂练习——书店折扣问题的主要内容,如果未能解决你的问题,请参考以下文章