• 购买图书


    题目:

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

                                         本数                  折扣    

                                           2                    5%

                                           3                    10%

                                           4                    20%

                                           5                    25%

         根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。

    设计思路:

                列举

    本数 价钱                                       原价         降价

    1     8                                            8           0

    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        43.2                   
     6       1+5        38
     6       2+4        41

    本数     策略       价钱
     7       1+6        46                   
     7       2+5        45.2
     7       3+4        47.4

    本数     策略      价钱
     8       1+7        53.2                   
     8       2+6        53.2
     8       3+5        51.6
     8       4+4        51.6

     本数     策略      价钱
     9       1+8        59.6                 
     9       2+7        60.4
     9       3+6        59.6
     9       4+5        55.8

    根据上述分析,可知对于总的购买数量count,可以以10本分组,X=count/10;Y=count%10(求余);总钱数=X*60+根据Y获得的策略价钱;

    代码:

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int x = 0, y = 0;        //x:书的数目,y:余数
        double money;            //购书金额
        cout << "输入图书的数量:";
        cin >> x;
    
        y = x % 5;
        if (y == 0)
            money = (x / 5)*(5 * 8)*0.75;
        else if (y == 1)
            money = (x - y) / 5 * (5 * 8)*0.75 + y * 8;
        else if (y == 2)
            money = (x - y) / 5 * (5 * 8)*0.75 + y * 8 * 0.95;
        else if (y == 3)
        {
            if (x == 3)
                money = 21.6;
            else
                money = (x - 8) / 5 * (5 * 8)*0.75 + 51.2;
        }
        else
            money = (x - y) / 5 * (5 * 8)*0.75 + y * 8 * 0.8;
        cout << "最低价格是:" << money << endl;
        return 0;
    }

    结果截图:

  • 相关阅读:
    hibernate和mybatis区别
    Spring事务的传播行为和隔离级别
    数组拷贝
    spring mvc 一次请求 两次查询
    手游性能之渲染分析3
    Android pm 命令详解
    Android am命令使用
    Android dumpsys命令详细使用
    java处理高并发高负载类网站的优化方法
    关于ArrayList的5道面试题
  • 原文地址:https://www.cnblogs.com/dgj1314/p/5612731.html
Copyright © 2020-2023  润新知