Task 7 买书最低价格问题

任务:

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

2         5%

3        10%

4        20%

5        25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-5-12晚18:00)

1.设计思想:这是一道很经典的数学题,感觉很像奥林匹克那种竞赛题,所以只要做出把数学题算出来就可以很容易的编程实现了。首先,假设要购买N本书,购买1-5本书时,是购买N本为最低价;

  

根据规律,可以得出N>9时  ,当N除以10所得余数为8时,最低价情况是N/10组5本书,两组4本书的组合;余数不为8时,最低价情况就是N/5组5本书,一组N%5本书的组合。然后根据这个规律把程序写出来即可。

2.源代码:

#include<iostream>
using namespace std;

void main()
{    
    int n;
    cout << "请输入购买数量:" << endl;
    cin >> n;
    
    double price;
    int i = n % 5;
    switch (i)
    {
    case 0:
        price = n * 8 * 0.75;
        cout << "最低价是购买" << n / 5 << "套整5卷书";
        break;
    case 1:
        price = (n - 1) * 8 * 0.75 + 8;
        cout << "最低价是购买" << (n - 1) / 5 << "套整5卷书和五卷书中任意一本。" << endl;
        break;
    case 2:
        price = (n - 2) * 8 * 0.75 + 2 * 8 * 0.95;
        cout << "最低价是购买" << (n - 1) / 5 << "套整5卷书和五卷书中任意两本。" << endl;
        break;
    case 3:
        price = (n - 8) * 8 * 0.75 + 4 * 8 * 0.8 * 2;
        cout << "最低价是购买" << (n - 8) / 5 << "套整5卷书和两套任意四卷" << endl;
        break;
    case 4:
        price = (n - 4) * 8 * 0.75 + 4 * 8 * 0.8;
        cout << "最低价是购买" << (n - 1) / 5 << "套整5卷书,和五卷书中任意四本。" << endl;
        break;
    }
    
    cout << "最低价格是:" << price << endl;
}

3.实验截图:

4.实验总结:(1)有人说写程序就是在做数学题,这道题就是一个很典型的例子,只有当把这道题做出来的时候才能变成程序.

(2)写程序很重要的一点就是要敢于尝试,如果什么也不干就妄想写出什么是不可能的。

(3)要善于寻找事物的规律,开始的时候大家都没有仔细地分析运算,每个人都在抱怨这道题有多难、多复杂,可是在真正动手之后找到规律了才焕然大悟这题是有多简单。可见实践和动手是非常重要的。

原文地址:https://www.cnblogs.com/mengxiangjialzh/p/4492534.html