课堂实验--购书最低价实验

                                                                                          课堂实验--购书最低价实验

一、设计思想

     本次实验是要计算出购买一批图书的最低价格,当选取不同类型的图书时购买者可以享受折扣,并且根据购买者买的图书种类的数目可以分为四档折扣,本数为2,3,4,5时的折扣分别为5%,10%,20%,25%。

     本次题目的解题核心是找到最低价的规律,并且这个规律在每十本书中循环一次,在这十本书中除了八本书时享受20%的优惠以外,其它的都遵循优先享受25%优惠的规律,因此在计算最终价格时,只要将10的倍数的书和剩余的书分开来计算价格就可以了。

二、代码实现

//Hao Ying 2016/6/2
//购书最低价实验
#include<iostream>
using namespace std;
int main()
{
    int i,number,a,b;
    double price;
    cout<<"请输入书本数:";
    cin>>number;
    a=number/10;
    b=number%10;
    if(b==0)
    {
        price=2*a*8*0.25;
    }
    else if(b>0&&b<9&&b!=8)
    {
        if(b%5==0)
        {
            price=10*a*8*0.25+(b/5)*5*8*0.25+(b%5)*8*0.25;
        }
        else if(b%5==1)
        {
            price=10*a*8*0.25+(b/5)*5*8*0.25+(b%5)*8;
        }
        else if(b%5==2)
        {
            price=10*a*8*0.25+(b/5)*5*8*0.25+2*8*0.05;
        }
        else if(b%5==3)
        {
            price=10*a*8*0.25+(b/5)*5*8*0.25+3*8*0.1;
        }
        else if(b%5==4)
        {
            price=10*a*8*0.25+(b/5)*5*8*0.25+4*8*0.2;
        }
    }
    else if(b==8)
    {
        price=10*a*8*0.25+8*8*0.2;
    }
    cout<<"读者购买这批书的最低价格为:"<<price;
    cout<<endl;
    return 0;
}

三、实现截图

     当书本数为1-10时的最低价格:

     当书本数为338时的最第价格为:

四、个人总结

    通过这次的实验我觉得主要还是锻炼了设计思路,其实一开始把题目想的简单了,比如8本书就只想到了5和3的组合,并没有想到4和4或者其他的组合,当再深入思考的时候,考虑到了在书本数一定的情况下有很多种组合方式,于是不知道如何从这些情况下找到花销最小的那个,在老师的提示下,试着先从一本开始找规律,果然,他的最低价是有规律可言的,只有在8本的倍数时出现特例,并且每十本都可以享受25%的折扣,只要考虑除去十本之外多余的书本的情况就可以了。在这次实验中收获的是一种数学方法,它告诉我们在解决一个问题之前要先找到最佳的方法,这样可以避免做很多的无用功,也可以提高我们解决问题的效率,在遇到问题时多动笔多动脑是解决问题的最好途径!这次实验使我受益匪浅,之后的实验中我一定会更加努力去完成的!

原文地址:https://www.cnblogs.com/haoying1994/p/5553272.html