题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求:将设计思想、代码实现、实现截图、个人总结、以博文的形式发表。
一、设计思路
由键盘输入购买图书的数量num,只需考虑num个位数为6,7,8,9的情况,其他情况下,均可直接按照题目中所给的折扣进行计算。假设num的个位数为k,则用循环语句即可,从i=5开始循环,循环一次i--,i<k/2时结束循环,花费的价格为(k-5)*折扣+i*折扣。
二、源代码
#includedouble Discount(int type){ double k; //进行折扣后的值 switch(type) { case 1:k=8;break; case 2:k=2*8*0.95;break; case 3:k=3*8*0.9;break; case 4:k=4*8*0.8;break; case 5:k=5*8*0.75;break; default:break; } return k;}int main(){ int n; //图书的数量 int m=0; //获取整十的数量 int i; double cheap; //最低折扣 double cost[10]={ 0}; //各折扣价格 double price; //最终的最低价格 cout<<"请输入购买数量:"< >n; if(n>10&&(n%10==3)) { m=n/5-1; price=m*5*8*0.75+Discount(4)*2; cout<<"购书最低价格为:"< < 10) { m=n/10; n=n%10; } if(n<=5) { price=m*2*5*8*0.75+Discount(n); cout<<"购书最低价格为:"< < =n/2;i--) { cost[i]=Discount(i)+Discount(n-i); } cheap=cost[5]; for(i=5;i>=n/2;i--) { if(cheap>cost[i]) cheap=cost[i]; } price=m*2*5*8*0.75+cheap; cout<<"购书最低价格为:"< <
三、运行结果
四、个人总结
遇到的问题:在比较各种折扣最小值时,只需比较填充进数组的那些值就可以了,其他值不需要参与比较,甚至有可能会影响最终结果。
收获:通过这次课堂练习,使我编程更加严谨,思维更加缜密,能够及时发现一些细微的错误。