zoukankan      html  css  js  c++  java
  • 如何购买一批书使其最低价格

    题目要求:

      某书店针对《哈利波特》系列书籍进行促销活动,一共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本书时应如何处理时遇到了一点困难。

     

     

  • 相关阅读:
    Spring bean的循环依赖以及解决方式
    在Java中为什么实现了Cloneable接口,就能调用Object的clone方法?
    Java-Objects类-deepEquals()和equals()详解
    Linux TCP状态TIME_WAIT 过多的处理
    mysql字符串区分大小写的问题
    java 类加载
    java native 理解
    Maven配置阿里镜像仓库
    Cannot find name ‘XX‘. Do you need to change your target library? Try changing the `lib` compiler
    Typescript Interfaces(接口)添加任意key值/内容
  • 原文地址:https://www.cnblogs.com/zgsxh/p/4428178.html
Copyright © 2011-2022 走看看