买书折扣问题

题目:

书店针对《哈利波特》系列书籍进行促销活动,一共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

 

#include<iostream>
using namespace std;
int main()
{
    double monery;
    int num;
    int shang, yu;
    cout << "请输入购买数量:";
    cin >> num;
    if (num <= 5)
    {
        switch (num)
        {
        case(1) : monery = 8; break;
        case(2) : monery = 16 * 0.95; break;
        case(3) : monery = 24 * 0.9; break;
        case(4) : monery = 32 * 0.8; break;
        case(5) : monery = 30; break;
        default:cout << "输入错误!!" << endl;
        }
    }
    else if (num <= 10)
    {
        switch (num)
        {
        case(6) : monery = 38; break;
        case(7) : monery = 45.2; break;
        case(8) : monery = 51.2; break;
        case(9) : monery = 55.6; break;
        case(10) : monery = 60; break;
        }
    }
    else
    {
        shang = num / 10;
        yu = num % 10;
        switch (yu)
        {
        case(1) : monery = 8; break;
        case(2) : monery = 16 * 0.95; break;
        case(3) : monery = 24 * 0.9; break;
        case(4) : monery = 32 * 0.8; break;
        case(5) : monery = 30; break;
        case(6) : monery = 38; break;
        case(7) : monery = 45.2; break;
        case(8) : monery = 51.2; break;
        case(9) : monery = 55.6; break;
        }
        monery += 60 * shang;
    }
    cout << "购买数量为:" << num << "  应付金额:" << monery << endl;
    return 0;

 

 

posted @ 2016-06-03 18:19  来自代码的诅咒  阅读(165)  评论(0编辑  收藏  举报