课堂练习——书店折扣问题

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 }

程序截图:

 技术分享

以上是关于课堂练习——书店折扣问题的主要内容,如果未能解决你的问题,请参考以下文章

课堂练习

课堂练习---最低价格买书

课堂练习-买书价格最低

课堂练习—书价最优

课堂练习-促销书

课堂练习-促销书