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

一.题目要求

书店针对《哈利波特》系列书籍进行促销活动,一共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("您没有消费\n");
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\n");
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\n");
70 
71 
72 
73         }
74         
75 
76     }
77     printf("您的总消费额是:%d\n",num*8);
78     printf("折后价格为:%f\n",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 }

四、实验截图

五、实验体会

在编写代码时将判断条件误写错,导致结果输出不正确,后来经过调试找到错误的地方及时改正,感觉调试整的很好用也很重要,希望还不会调试的童鞋好好练一下

 

转载于:https://www.cnblogs.com/caomeina/p/4428202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值