哈利波特最优价格
一、题目
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%。根据购买的卷数以及本数,会对应不同的折扣规则情况。单独一本书只会对应一个折扣规则。设计算法能够计算出读者购买一批书的最低价格。
二、思路
以10本为基础,只用求余数的最优价格即可——只需考虑10本以内的。对于5本及5本以内的直接乘上折扣即可,对于超过5本的,则考虑情况,例如7本分为3,4。1,6.两种情况。用for循环列出所有情况,将值存入数组。比较大小求出最小值。在加上10本的基础价格。即可。
三、源代码
#include<iostream.h>
double f1(int i)
{
double a;
switch(i)
{
case 5: a=0.75;break;
case 4: a=0.80;break;
case 3: a=0.90;break;
case 2: a=0.95;break;
case 1: a=1.0;break;
}
return a;
}
int main()
{
int numyu,num10,s,i;
double c;
double sum;
int BookNum;
cout<<"输入购买本数:";
cin>>BookNum;
numyu=BookNum%10;
num10=BookNum/10;
sum=num10*10*8*0.75;
double sum1,sum2;
double b[10];
int p=0;
if(numyu>5)
{
for(i=5;i>=(numyu+1)/2;i--)
{
c=f1(i);
sum1=c*i*8;
c=f1(numyu-i);
sum2=c*(numyu-i)*8;
b[p++]=sum1+sum2;
}
double min=b[0];
for(i=1;i<p;i++)
{
if(min>b[i])
{
min=b[i];
}
}
cout<<"最低购买:"<<min+sum;
}
else
{
c=f1(numyu);
sum1=numyu*8*c;
cout<<"最低购买:"<<sum1+sum;
}
return 0;
}
四、实验截图


五、实验总结
本次实验刚开始遇到如何根据书本数目返回折扣值,最终用switch的方法将五种折扣方案返回。对于此次实验不满意的地方就是
我写的时候没有养成写注释的习惯,这应该是差大弊端。在以后的实验中会将注释方面做个重点,强迫自己的思路有条目,而不是盲
目的敲代码。
浙公网安备 33010602011771号