课堂实验--购书最低价实验
一、设计思想
本次实验是要计算出购买一批图书的最低价格,当选取不同类型的图书时购买者可以享受折扣,并且根据购买者买的图书种类的数目可以分为四档折扣,本数为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%的折扣,只要考虑除去十本之外多余的书本的情况就可以了。在这次实验中收获的是一种数学方法,它告诉我们在解决一个问题之前要先找到最佳的方法,这样可以避免做很多的无用功,也可以提高我们解决问题的效率,在遇到问题时多动笔多动脑是解决问题的最好途径!这次实验使我受益匪浅,之后的实验中我一定会更加努力去完成的!