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 }

    总结:

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

  • 相关阅读:
    翻转单词顺序
    java layout 表格项增加、删除、修改
    Hadoop学习之HBase
    protected的一些功能
    hdu4431 Mahjong
    kendo ui gird温馨提示(使用本地数据) 一个
    TOP计划猿10最佳实践文章
    Java高级应用(一个)-文件夹监控服务
    BSD介绍
    获取编译学习笔记 (十三)—— 外部中断
  • 原文地址:https://www.cnblogs.com/brucekun/p/5562070.html
Copyright © 2011-2022 走看看