zoukankan      html  css  js  c++  java
  • 优惠购书

    1.题目:

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

    本数        折扣

    2             5%

    3             10%

    4              20%

    5             25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
    设计算法能够计算出读者购买一批书的最低价格。
    2.设计思路
    刚开始看到这个题目时,感觉挺难的,感觉有好多种情况,后来仔细阅读题目后,跟同学讨论分析后,发现这个题目其实就是将数字分解,知道这么回事后,就开始分析每一个数,分析过程中发现其实小于5的数字不用分析,只需要分析6-9的数字就行,之后的数都会循环。针对6-9之间的数字进行分析,将各种情况进行计算,最终得到结论:
    6=5+1
    7=5+2
    8=4+4
    9=5+4
    这样就会扩大到一般情况。
    3.源代码
    #include<iostream>
    using namespace std;
    
    double mSum(int n)
    {
        int m = 0;
        double money;
        m = n % 5;
        m = m + 5;
        switch (m)
        {
    
        case 5:
            money = n * 8 * 0.75;
            break;
        case 6:
            money = (n - 1) * 8 * 0.75 + 8;
            break;
        case 7:
            money = (n - 2) * 8 * 0.75 + 8 * 2 * 0.95;
            break;
        case 8:
            money = (n - 8) * 8 * 0.75 + 4 * 8 * 0.8 * 2;
            break;
        case 9:
            money = (n - 4) * 8 * 0.75 + 8 * 4 * 0.8;
            break;
        }
        return money;
    }
    int main()
    {
        int n;
        cout << "请输入购买数量:" << endl;
        cin >> n;
        cout << endl;
        cout << "最优惠总书价:" << mSum(n) << "" << endl;
    }
    4.程序截图




    5.总结
    要学会把实际问题抽象出来,将实际问题转化为比较容易懂的模型。对于感觉比较复杂的程序,要注意分析情况的特殊性,先分析比较少的数,由特殊到一般,从而找出规律,这样程序就会简单许多。

  • 相关阅读:
    计算机网络
    计算机网络知识总结
    final,static,super,this
    ArrayList
    基础面试题
    BATJ都爱问的多线程面试题
    Session过期、失效时间
    类加载器ClassLoader源码解析
    连接ftp服务器 JDK 1.7
    根据当前请求的特征,判断该请求是否来自手机终端
  • 原文地址:https://www.cnblogs.com/gting/p/4488914.html
Copyright © 2011-2022 走看看