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 }

    总结:

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

  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/brucekun/p/5562070.html
Copyright © 2011-2022 走看看