个人项目——买书

用折后最低价买书

一、程序要求

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

                       本数                    折扣

                        2                       5%

                        3                       10%

                        4                       20%

                        5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

    设计算法能够计算出读者购买一批书的最低价格。

二、程序设计思想

    列举出买十本书以内的所有情况,从中找规律:买一本的时候不打折扣,价钱为 8;买两本的时候买最低价为 15.2(1+1);买三本的时候最低价为 21.6(1+1+1);买四本的时候最低价为25.6(1+1+1+1);买五本的时候最低价为30(1+1+1+1+1);买六本的时候最低价为 38(5+1);买七本的时候最低价为 45.2(5+1+1);买八本的时候最低价为 51.2(4+4);买九本的时候最低价为 55.6(5+4);买十本的时候最低价为 60(5+5)。按照上面的情况可以看出:购买8本书时,最低价并不是(5+3),所以每10本书是一个循环。书的总数除以10求余求商:余数部分按10本以内数目计算;商数部分按整套购买计算。按此类推,算出最低价。

三、源程序

 

//李俏  2016,6,2
//根据折扣,计算买书的最低价

#include<iostream>
using namespace std;

int main()
{
    int num;//书的数量
    double money;//折后的钱数
    int i, j;

    cout << "请输入要买的书的数量:";
    cin >> num;
    while (num <= 0)
    {
        //exit(1);
        cout << "请重新输入要买的书的数量(数量必须为正数):";
        cin >> num;
    }

    i = num % 10;
    j = num / 10;
    switch (i)
    {
    case 0:
        money = j * 40 * 0.75*2 ;
        break;
    case 1:
        money = j * 40 * 0.75 * 2 + 8;
        break;
    case 2:
        money = j * 40 * 0.75 * 2 + 8 * 2 * 0.95;
        break;
    case 3:
        money = j * 40 * 0.75 * 2 + 8 * 3 * 0.9;
        break;
    case 4:
        money = j * 40 * 0.75 * 2 + 8 * 4 * 0.8;
        break;
    case 5:
        money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75;
        break;
    case 6:
        money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8;
        break;
    case 7:
        money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8 * 2 * 0.95;
        break;
    case 8:
        money = j * 40 * 0.75 * 2 + 8 * 4 * 0.8 * 2;
        break;
    case 9:
        money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8 * 4 * 0.8;
        break;
    }
    cout << "这批书的折后价为:"<<money<<endl;
    
    return 0;
}

 

四、结果截图

 

五、心得体会  

  课堂上,老师引导我们:根据题设,列举各种情况并且计算各种可能的结果,经过比较得到最低价;再然后从购买10以内数量的书、得到的每个最低价中,找规律,但是由于自己的不自信、计算的结果不正确,没能找到规律;最后,老师给出了思路——书的总数超过10本时,也可按10本以内的计算方法计算,并且指出购买8本书是一个特殊情况。

  就实现来讲,相比前两次的课堂练习,这次的还是比较简单的,关键在于解题的思路和从中发现的规律。这次练习实现后,内心还有点儿小激动,因为题目不太复杂,可以把自己的理解以程序的形式呈现出来,但是激动之余,还是有些担心,担心能力不能提高、以后遇到问题还是解决不了。通过本次实验,我复习了一些常用的基础语法点,以后会更加熟练的。

 

posted @ 2016-06-03 08:32  灯下等花开  阅读(258)  评论(0编辑  收藏  举报