一.题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共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%)。
三.源代码
1 #include "stdafx.h" 2 3 int favourable(int num) 4 { 5 int judge1,judge2; 6 double favour,favour1; 7 judge1=num/5; 8 judge2=num%5; 9 if(judge1==0) 10 { 11 switch(num) 12 { 13 case 0: 14 printf("您没有消费 "); 15 break; 16 case 1: 17 favour=8; 18 break; 19 case 2: 20 favour=2*8*0.95; 21 break; 22 case 3: 23 favour=3*8*0.9; 24 break; 25 case 4: 26 favour=4*8*0.8; 27 break; 28 //case 5: 29 //favour=5*8*0.75; 30 //break; 31 default: 32 printf("error "); 33 34 } 35 } 36 else 37 { 38 switch(judge2) 39 { 40 case 1: 41 { 42 favour1=5*8*0.75+1*8; 43 favour=(judge1-1)*30+favour1; 44 break; 45 } 46 47 case 2: 48 { 49 favour1=5*8*0.75+2*8*0.95; 50 favour=(judge1-1)*30+favour1; 51 break; 52 } 53 54 case 3: 55 { 56 favour1=4*8*0.8*2; 57 favour=(judge1-1)*30+favour1; 58 break; 59 } 60 61 case 4: 62 { 63 favour1=5*8*0.75+4*8*0.8; 64 favour=(judge1-1)*30+favour1; 65 break; 66 } 67 68 default: 69 printf("error "); 70 71 72 73 } 74 75 76 } 77 printf("您的总消费额是:%d ",num*8); 78 printf("折后价格为:%f ",favour); 79 return 0; 80 81 } 82 83 int main(int argc, char* argv[]) 84 { 85 int num; 86 printf("请输入要购买的本数"); 87 scanf("%d",&num); 88 favourable(num); 89 90 return 0; 91 }
四、实验截图
五、实验体会
在编写代码时将判断条件误写错,导致结果输出不正确,后来经过调试找到错误的地方及时改正,感觉调试整的很好用也很重要,希望还不会调试的童鞋好好练一下