课堂练习4.14

练习题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

                                  本数                  折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
一、设计思想
   首先分析可得
1、在小于等于五本时按照折扣买即可。
2、分析可得在小于十本时分成两组比分成多组要合适。
3、、在大于五本小于十本时,经计算可得除在第八本处按照(4,4)分最少,其他在分为(x,5)比较合适。
4、在大于十本时(i本)分析可得与十本内时类似,当i%5!=3时,可以按照i除以5取整得a,a个5本再加上剩下的;当i%5=3时,则按照(a-1)个5本,剩下的分为(4,4),再进行求和。
二、源代码
#include<iostream.h>
void main()
{
    double b,sum;
    int a,i,c;
    cout<<"请输入要购买的本数:";
    cin>>i;
    if(i%5!=3)
    {
      a=i/5;
      b=30*a;
      c=i%5;
      if(c==0)
      {
         sum=b;
      }
      if(c==1)
      {
          sum=b+8;
      }
      else if(c==2)
      {
          sum=b+16*0.95;
      }
      else if(c==3)
      {
          sum=b+24*0.9;
      }
      else if(c==4)
      {
          sum=b+32*0.8;
      }

    }
    else if(i==3)
    {
        sum=24*0.9;
    }
    else if(i%5==3&&i!=3)
    {
      a=i/5;
      b=30*(a-1);
      c=i%5;
      sum=b+32*0.8*2;
    }
    cout<<"最低价格为:"<<sum<<endl;
}

三、结果截图

四、实验总结
   本次实验是在课堂上构思出来的,通过此次实验我首先的感悟是动手很重要,因为此次题目很难一眼看见规律,所以一直看的话是很难下手的。在老师的提醒下,很快发现需要考虑的只有6、7、8、9四种情况,再大的话情况是类似的,通过计算很快发现只有在8时与其他情况不同,所以只需通过判断语句在余数为三时做出不同的计算即可。
原文地址:https://www.cnblogs.com/gaoyang110/p/4425852.html