您的位置:首页 > 其它

课堂小练习

2015-04-15 12:36 363 查看
一.题目及要求

题目:

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元,

具体折扣如下所示: 本数 折扣 2本 5%

              3本 10%

              4本 20%   

              5本 25%

要求:

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。

二.设计思路

1).若<=5,最理想的状态是这几本书都不一样,直接按对应的折扣购买就可以

2).若6<=x<=9,理想状态是里面每个类别最多有两本重复的,分别计算6,7,8,9时,书的最低价格。

3).若>=10,和2)的情况重复

三.源代码

// Test_sale.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<stdio.h>
#include<iostream.h>
float discount_2(int number)//当数量在6到10 之间时
{
float sum;
switch(number)
{
case 6: sum=38; break;
case 7: sum=45.2; break;
case 8: sum=51.2; break;
case 9: sum=55.5; break;
case 10: sum=60; break;
default:cout<<"ERROR!!!"<<endl;
}
return sum;
}
float discount_3(int number)       //当数量大于10时
{
int remainder,itg;             //remainder是余数,itg是整数
float sum;
remainder=5+number%5;          //将数量分成两部分,一部分是5+number%5
itg=number/5-1;                //一部分是number/5-1
sum=discount_2(remainder);     //第一部分调用discount_2函数
sum=sum+itg*30;                //另一部分直接按整套价格计算
return sum;
}
float sale(int number)
{
float sum;

if(number<=5)                  //当数量小于6本时
{
switch(number)
{
case 1: sum=8; break;
case 2:    sum=2*8*0.95; break;
case 3: sum=3*8*0.9; break;
case 4: sum=4*8*0.8; break;
case 5: sum=5*8*0.75; break;
default: cout<<"ERROR!!!"<<endl;
}
}
else if(number<=10)            //当数量在5到10之间时
{
sum=discount_2(number);
}
else                          //当数量大于10本时
sum=discount_3(number);
return sum;
}
int main()
{
int sale_number,flag=1;
float sum;
while(flag==1)
{
cout<<"请输入要购买的书的数量:";
cin>>sale_number;
sum=sale(sale_number);        //调用买书的最佳算法
cout<<"最低的价格是"<<sum<<endl;
cout<<"是否继续使用(是/1,否/0):";
cin>>flag;
}
return 0;
}


四.结果及截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: