您的位置:首页 > 其它

课堂练习之书费问题

2016-05-30 16:44 176 查看
题目:书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣

2 5%

3 10%

4 20%

5 25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
思路:
根据题目可以清楚点的知道在1-5本之间时,购买1、2、3、4、5本不同书籍最省钱,6本时是5+1,7本时是5+2,8本时是4+4,9本时是5+4,以上是最省钱的购买方式。
即假设购买的书籍是n本,则花费最少的金额为w,当n%5=0时,w=n*8*0.75;当n%5=1时,w=(n-1)*8*0.75+8;当n%5=2时,w=(n-2)*8*0.75+8*2*0.95;
当n%5=3时,w=(n-8)*8*0.75+8*8*0.8;当n%5=4时,w=(n-4)*8*0.75+4*8*0.8。以上就可以的得出最少花费的购买书籍的方式。
源代码:

#include <iostream>
using namespace std;

void main()
{
int n;//n为要购买书籍的数量
double w;//w为购买书籍所花费最少的金额
for(;;)
{
cout<<"请输入要购买书籍的数量:"<<endl;
cin>>n;
//按照购买不同数量书籍的情况来设计不同的表达式
if(n%5==0)
{
w=n*8*0.75;
}
else if(n%5+5==6)
{
w=(n-1)*8*0.75+8;
}
else if(n%5+5==7)
{
w=(n-2)*8*0.75+2*8*0.95;
}
else if(n%5+5==8)
{
w=(n-8)*8*0.75+8*8*0.8;
}
else if(n%5+5==9)
{
w=(n-4)*8*0.75+4*8*0.8;
}
cout<<"买这批书花费最少为:"<<w<<"元"<<endl;
}
}


结果截图:





个人总结:

看到以上这类问题时,要用笔在纸上划一划,找找规律基本就能解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: