1.问题
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。请设计算法能够计算出读者购买一批书的最低价格。
2.设计思路:
对于买5本以下的书,则按成套买(即一卷买一本)最便宜;而对于5本到10本的话,除了8本书以外,其余的都买一套后,再买一套不全的(如9本,就买5本加4本)最便宜。
对于8本,则是买两套4本的最便宜;对于10本以上,则按5到10本来买,如11=5+6,13=5+8,20=5+5+5+5.
3.代码
#include<iostream>
using namespace std;
void main ()
{
int x,a;
double y;
cout<<"输入要买购买的书数";
cin>>x;
if(x%5==0)
{
y=(x/5*40*0.75);
}
else if(x%5==1)
{
y=(x/5*40*0.75+8);
}
else if(x%5==2)
{
y=(x/5*40*0.75+16*0.95);
}
else if(x%5==3&&x!=3)
{
y=(x/5-1)*40*0.75+32*0.8*2;
}
else if(x%5==3&&x==3)
{
y=24*0.9;
}
else if(x%5==4)
{
y=(x/5*40*0.75+32*0.8);
}
cout<<y;
}
4.截图:
5.总结
这道题需要仔细列举,发现规律,发现规律之后理清思路。编写出程序并不算难。