标签:
题目:
书店针对《哈利波特》系列书籍进行促销活动,一共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*折扣。
二、源代码
#include<iostream.h>
double 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<<"请输入购买数量:"<<endl;
cin>>n;
if(n>10)
{
m=n/10;
n=n%10;
}
if(n<=5)
{
price=m*2*5*8*0.75+Discount(n);
cout<<"购书最低价格为:"<<price<<endl;
return 0;
}
for(i=5;i>=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<<"购书最低价格为:"<<price<<endl;
return 0;
}
三、运行结果
四、个人总结
遇到的问题:在比较各种折扣最小值时,只需比较填充进数组的那些值就可以了,其他值不需要参与比较,甚至有可能会影响最终结果。
收获:通过这次课堂练习,使我编程更加严谨,思维更加缜密,能够及时发现一些细微的错误。
买书求如何获得折扣使价格最低
标签:
原文地址:http://www.cnblogs.com/benboerba/p/4425725.html