一、题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%。根据购买的卷数以及本数,会对应不同的折扣规则情况。单独一本书只会对应一个折扣规则。设计算法能够计算出读者购买一批书的最低价格。
二、设计思路:
对于1-5,定义double具有返回值类型的函数,列举5种优惠情况。对于6-9,例如7,先计算2和5这种情况,然后2加1变3,计算3和4这种情况;然后3再加1,计算4,3这种情况。直至加一后小于5。对于10以上,那就简单了。。
三、源代码:
#include<iostream.h> double fa(int i) { double a; switch(i) { case 1:a=1.0;break; case 2:a=0.95;break; case 3:a=0.9;break; case 4:a=0.8;break; case 5:a=0.75;break; } return a; } int main() { int booknumber,keybook,a,i,d,b,g,j; double sum; cout<<"input:"; cin>>booknumber; if(booknumber>0&&booknumber<=5) { double c=fa(booknumber); sum=c*booknumber*8; cout<<sum; } else if(booknumber>5&&booknumber<=9) { a=booknumber-5; double d=fa(a); sum=d*a*8+30; for(i=a;i<5;i++) { b=booknumber-a; double e=fa(a); double f=fa(b); if (e*a*8+f*b*8<sum) sum=e*a*8+f*b*8; } cout<<sum; } else g=booknumber%5; j=booknumber/5; double k=fa(g); sum=j*30+k*8*g; cout<<sum; }
四.截图
五.实验总结这种
这次试验应该说是不太难,只要分成3种情况就行,关键是6-7的这种情况,必须考虑到每一种情况。这种情况可以用switch语句,和循环解决。程序的关键是把实际问题抽象成为数学问题再用程序实现,只要想到每一种情况,解决好就行。