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


    一.题目要求

    书店针对《哈利波特》系列书籍进行促销活动,一共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 }

    四、实验截图

    五、实验体会

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

     
  • 相关阅读:
    父div不会被子div撑高
    ie6兼容问题
    浏览器兼容性技巧
    css hack基本语法
    网站设置为灰色
    .net cookie跨域请求指定请求域名
    实体对象属性和值转为键值对Dictionary
    C#通过对象属性名修改值
    jQuery.noConflict()解决imgBox.js依赖jquery版本问题
    华为OJ之最长公共子序列
  • 原文地址:https://www.cnblogs.com/caomeina/p/4428202.html
Copyright © 2020-2023  润新知