课堂练习——计算法能够计算出读者购买一批书的最低价格。
1.题目。
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,
单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,
例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
2.设计思想。
因为除了买8本,13本...(5^n+8)(n>=1)本以外,不论买多少本,都应该按最大折扣5本计算,才能使得买这一批书价格最低。
3.代码。
#include<iostream.h> int main() { int k,m,n; double sum=0; cout<<" 书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,"<<endl; cout<<"单独一卷售价8元, 具体折扣如下所示:"<<endl; cout<<" 本数 折扣"<<endl; cout<<" 2 5%"<<endl; cout<<" 3 10%"<<endl; cout<<" 4 20%"<<endl; cout<<" 5 25%"<<endl; cout<<endl; cout<<"请输入读者要购买的书籍个数:"<<endl; cin>>k; m=k/5; n=k%5; switch(n) { case 0: sum=m*40*0.75; break; case 1: sum=m*40*0.75+8; break; case 2: sum=m*40*0.75+16*0.95; break; case 3: if(m==0) sum=24*0.9; else sum=(m-1)*40*0.75+2*4*8*0.8; break; case 4: sum=m*40*0.75+32*0.8; break; } cout<<"读者购买一批书的最低价格为:"<<endl; cout<<sum<<"元"<<endl; cout<<endl; cout<<endl; cout<<endl; return 0; }
4.运行结果。
5.实验总结。
有些问题是有规律的,只要掌握了规律就可以用很简单的算法实现一个感觉很复杂的问题。