• 最优惠的购书价格程序设计


    一、设计思路

          题目要求:

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

                                            2                       5%                                   

                                            3                       10%                                   

                                            4                       20%                                   

                                            5                       25%

               根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

    设计算法能够计算出读者购买一批书的最低价格。

         设计思想:

              按照此打折规则中,1本不打折,2-5本的时候根据对应的折扣规则来购买,在5本以上的时候,可以对应的转化为买5,6,7,8,9本书来计算,对应的优惠方案和价格如下:

              当购书数量恰好为5的倍数时,统一的七五折计算;

              当购书数量为6时,优惠方案为1+5,总价为:38;

              当购书数量为7时,优惠方案为2+5,总价为:45.2;

              当购书数量为8时,优惠方案为4+3,总价为:51.2;

              当购书数量为9时,优惠方案为4+5,总价为:55.6;

              在购书的数量大于5本的范围内,例如买书13本,优惠方案为5+8本;买44本书时,优惠方案为35+9本,此时是最佳的购书方案。

    二、程序源代码

     1 // maishu.cpp : Defines the entry point for the console application.
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "iostream.h"
     6 
     7 double add(int number)
     8 {
     9     int m;
    10     double sum;
    11     m = number % 5 + 5;
    12     switch(m)
    13     {
    14         case 6://买6本书(5+1)
    15             sum = 38;   
    16             break;
    17         case 7://买7本书(5+2)
    18             sum = 45.2;
    19             break;
    20         case 8://买8本书(4+4)
    21             sum = 51.2;
    22             break;
    23         case 9://买9本书(4+5)
    24             sum = 55.6;
    25             break;
    26         case 5://买5本书(5)
    27             sum = 30;
    28             break;
    29     }
    30     return sum;
    31 }
    32 int main(int argc, char* argv[])
    33 {
    34     double  sum = 0,d;    //sum表示购买书的总价
    35     int number,a, b, c;  //number表示购买的书的数量
    36                         //a = number / 5,b = 30 * (a - 1),d为一个中间变量
    37     int xuanze;
    38     cout<<"购买数量:";
    39     cin>>number;
    40     if(number <= 0)
    41     {
    42         cout<<"输入错误!"<<endl;
    43             return 0;
    44     }
    45     else if (number <= 5)
    46     {
    47         switch(number)
    48         {            
    49             case 1:
    50                 sum = 8;
    51                 break;
    52             case 2:
    53                 sum = 8*2*0.95;
    54                 break;
    55             case 3:
    56                 sum = 8*3*0.9;
    57                 break;
    58             case 4:
    59                 sum = 8*4*0.8;
    60                 break;
    61             case 5:
    62                 sum = 8*5*0.75;
    63                 break;
    64         }
    65     }
    66     else 
    67     {
    68         a = number / 5;
    69         b = 30 * (a - 1);
    70         d = add(number);
    71         sum = b + d;
    72     }
    73     cout<<"支付金额:"<<sum<<endl;
    74     return 0;
    75 }

    三、运行结果截屏

           

            

    四、总计与心得

          在本次求最优惠的买书价格的程序设计中,我针对题意用上了枚举的方式直接给出了买6,7,8,9本书时的最优惠的总价钱,并没有用一定的算法来实现这个求解过程,虽达到了最后的目的,但是当打折方案改变时,也就不适用了,有待改进。

  • 相关阅读:
    机器学习中数据缺失的处理及建模方法
    小样本学习(Few-Shot Learning)
    常见文本相似度计算法
    【FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM实现PS与PL交互
    【紫光同创国产FPGA教程】【第十章】DDR3读写测试实验
    【紫光同创国产FPGA教程】【第九章】HDMI编程测试实验
    【紫光同创国产FPGA教程】【第八章】SD卡读写实验
    【紫光同创国产FPGA教程】【第七章】I2C接口EEPROM实验
    【紫光同创国产FPGA教程】【第六章】PDS下按键消抖实验
    【紫光同创国产FPGA教程】【第五章】串口收发实验
  • 原文地址:https://www.cnblogs.com/mudanhuakai/p/4429197.html
Copyright © 2020-2023  润新知