您的位置:首页 > 其它

软件工程课堂练习-最高折扣

2015-04-15 12:51 190 查看
一.题目要求

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

2 5%

3 10%

4 20%

5 25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。
二.设计思路
因为一共有5卷书,所以高出10本的情况和6,7,8,9这四种情况是一样的,那现在就单分析10本以下的情况。买1~5本时,只要给出对应的折扣后的价钱就OK了,那现在分别得6,7,8,9这几种情况进行分析;经过计算我们可以发现,买6本时最高折扣组合为5(25%)|1(无);7本最高折扣组合为5(25%)|2(5%);8本时为4(20%)|4(20%);9本时为5(25%)|4(20%)。

三.源代码

#include "stdafx.h"

int favourable(int num)
{
int judge1,judge2;
double favour,favour1;
judge1=num/5;
judge2=num%5;
if(judge1==0)
{
switch(num)
{
case 0:
printf("您没有消费\n");
break;
case 1:
favour=8;
break;
case 2:
favour=2*8*0.95;
break;
case 3:
favour=3*8*0.9;
break;
case 4:
favour=4*8*0.8;
break;
//case 5:
//favour=5*8*0.75;
//break;
default:
printf("error\n");

}
}
else
{
switch(judge2)
{
case 1:
{
favour1=5*8*0.75+1*8;
favour=(judge1-1)*30+favour1;
break;
}

case 2:
{
favour1=5*8*0.75+2*8*0.95;
favour=(judge1-1)*30+favour1;
break;
}

case 3:
{
favour1=4*8*0.8*2;
favour=(judge1-1)*30+favour1;
break;
}

case 4:
{
favour1=5*8*0.75+4*8*0.8;
favour=(judge1-1)*30+favour1;
break;
}

default:
printf("error\n");

}

}
printf("您的总消费额是:%d\n",num*8);
printf("折后价格为:%f\n",favour);
return 0;

}

int main(int argc, char* argv[])
{
int num;
printf("请输入要购买的本数");
scanf("%d",&num);
favourable(num);

return 0;
}


四、实验截图



五、实验体会

在编写代码时将判断条件误写错,导致结果输出不正确,后来经过调试找到错误的地方及时改正,感觉调试整的很好用也很重要,希望还不会调试的童鞋好好练一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: