zoukankan      html  css  js  c++  java
  • 买书求如何获得折扣使价格最低

    题目:

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

                                   本数                  折扣

                                       2                       5%

                                       3                       10%

                                       4                       20%

                                       5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
    设计算法能够计算出读者购买一批书的最低价格。
    要求:将设计思想、代码实现、实现截图、个人总结、以博文的形式发表。
    一、设计思路
          由键盘输入购买图书的数量num,只需考虑num个位数为6,7,8,9的情况,其他情况下,均可直接按照题目中所给的折扣进行计算。假设num的个位数为k,则用循环语句即可,从i=5开始循环,循环一次i--,i<k/2时结束循环,花费的价格为(k-5)*折扣+i*折扣。
    二、源代码
    #include<iostream.h>
    double Discount(int type)
    {
       double k;                          //进行折扣后的值
       switch(type)
       {
       case 1:k=8;break;
       case 2:k=2*8*0.95;break;
       case 3:k=3*8*0.9;break;
       case 4:k=4*8*0.8;break;
       case 5:k=5*8*0.75;break;
       default:break;
       }
       return k;
    }
    int main()
    {
       int n;                                             //图书的数量
       int m=0;                                        //获取整十的数量
       int i;
       double cheap;                                 //最低折扣
       double cost[10]={0};                     //各折扣价格
       double price;                                  //最终的最低价格
       cout<<"请输入购买数量:"<<endl;
       cin>>n;
           if(n>10&&(n%10==3))
       {
         m=n/5-1;
         price=m*5*8*0.75+Discount(4)*2;
                cout<<"购书最低价格为:"<<price<<endl;
                return 0;
       }
       if(n>10)
       {
          m=n/10;
          n=n%10;
       }
       if(n<=5)
       {
          price=m*2*5*8*0.75+Discount(n);
          cout<<"购书最低价格为:"<<price<<endl;
          return 0;
       }
       for(i=5;i>=n/2;i--)
       {
          cost[i]=Discount(i)+Discount(n-i);
       }
       cheap=cost[5];
       for(i=5;i>=n/2;i--)
       {
          if(cheap>cost[i])
             cheap=cost[i];
       }
       price=m*2*5*8*0.75+cheap;
       cout<<"购书最低价格为:"<<price<<endl;
       return 0;
    }
    三、运行结果
     
    四、个人总结
          遇到的问题:在比较各种折扣最小值时,只需比较填充进数组的那些值就可以了,其他值不需要参与比较,甚至有可能会影响最终结果。
          收获:通过这次课堂练习,使我编程更加严谨,思维更加缜密,能够及时发现一些细微的错误。
  • 相关阅读:
    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
    .net-C#代码判断
    ashx-auth-黑色简洁验证码
    ylbtech-权限管理-数据库设计-功能权限管理技术
    ylbtech-Model-Account(通用账户模块设计)
    ADO.NET访问Access(文本数据库)数据操作(CRUD)
    连接数据库的五种不同的方式
    ylbtech-数据库设计与优化-对作为复选框/单选列表的集合表的设计
    ylbtech-cnblogs(博客园)-数据库设计-7,News(新闻)
    ylbtech-cnblogs(博客园)-数据库设计-2,Admin(用户后台)-用户自定义参数设置
  • 原文地址:https://www.cnblogs.com/benboerba/p/4425725.html
Copyright © 2011-2022 走看看