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     8                                 8           

    2     16-16*%5 =15.2         16       0.8

    3     3*8-3*8*%10  =21.6   24       2.4

    4     32-32*%20 =25.8       32       6.4

    5     40-40*%25 =30          40       10

    6本   3+3  1+5  2+4  

            43.2  38   41

    7本    1+6  2+5   3+4

            46     45.2   47.4

    8本    1+7  2+6  3+5    4+4

           53.2 53.2   51.6      51.6

    9本  1+8   2+7    3+6    4+5 

          59.6   60.4   59.6   55.8

    10 本 5+5 

    代码实现:

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     double monery;
     6     int num;
     7     int shang, yu;
     8     cout << "请输入购买数量:";
     9     cin >> num;
    10     if (num <= 5)
    11     {
    12         switch (num)
    13         {
    14         case(1) : monery = 8; break;
    15         case(2) : monery = 16 * 0.95; break;
    16         case(3) : monery = 24 * 0.9; break;
    17         case(4) : monery = 32 * 0.8; break;
    18         case(5) : monery = 30; break;
    19         default:cout << "输入错误!!" << endl;
    20         }
    21     }
    22     else if (num <= 10)
    23     {
    24         switch (num)
    25         {
    26         case(6) : monery = 38; break;
    27         case(7) : monery = 45.2; break;
    28         case(8) : monery = 51.2; break;
    29         case(9) : monery = 55.6; break;
    30         case(10) : monery = 60; break;
    31         }
    32     }
    33     else
    34     {
    35         shang = num / 10;
    36         yu = num % 10;
    37         switch (yu)
    38         {
    39         case(1) : monery = 8; break;
    40         case(2) : monery = 16 * 0.95; break;
    41         case(3) : monery = 24 * 0.9; break;
    42         case(4) : monery = 32 * 0.8; break;
    43         case(5) : monery = 30; break;
    44         case(6) : monery = 38; break;
    45         case(7) : monery = 45.2; break;
    46         case(8) : monery = 51.2; break;
    47         case(9) : monery = 55.6; break;
    48         }
    49         monery += 60 * shang;
    50     }
    51     cout << "购买数量为:" << num << "  应付金额:" << monery << endl;
    52 return 0;
    53 }

    总结:

    此类问题类似数学里的找规律推导公式,将实际问题转化为代码的能力很重要。

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/brucekun/p/5562070.html
Copyright © 2011-2022 走看看