zoukankan      html  css  js  c++  java
  • 哈利波特课后练习

    题目要求:

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

                                   本数                  折扣

                                       2                       5%

                                       3                       10%

                                       4                       20%

                                       5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

    设计算法能够计算出读者购买一批书的最低价格。

    要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

    1设计思路:

    0,1,2,3,4共五本。一本八块钱

     

    本数折扣

    2   5%

    3   10%

    4   20%

    5  25%

       

     

    本,价钱           原价         降价

    1    8             8           

    2    16-16*%5 =15.2     16      0.8

    3    3*8-3*8*%10  =21.6  24    2.4

    4    32-32*%20 =25.8    32      6.4

    5    40-40*%25 =30     40       10

     

     

     

    6本 3+3  1+5  2+4  

    43.2  38   41

     

    7本  1+6  2+5   3+4

    46     45.2   47.4

     

     

    8本 1+7  2+6  3+5    4+4

    53.2 53.2   51.6      51.6

     

    9本  1+8   2+7    3+6    4+5 

          59.6   60.4   59.6   55.8

    10 本 5+5 

    通过以上对购买1到10本的购买分析,可以分别得到1到10本的最佳购买方式。 大多时候选择五本书为一个整体来购买。余下的就随机购买五本书中不相同的卷就可以价格最低。但在数量为8的情况有所不同,这时候选择4+4组合价格更低。

    当购买数量大于十时,采用除以10取余的方法,余数部分使用前面分析的购买方式,其余使用5本整体的购买方式。注意在余数为8时的不同。

    2源程序代码:

    #include<iostream>
    using namespace std;
    
    void  main()
    {
        int Book=0;
        double money;
        double a[5]={0,0.05,0.1,0.2,0.25};
    
        while(Book<1)
        {
            cout<<"请输入你想要买的书的本数:";
            cin>>Book;
        }
        if(Book%10==8)
        {
            money=(Book/10)*10*8*(1-a[4])+(Book%10)*8*(1-a[3]);
        }
        else
        {
            money=(Book/5)*5*8*(1-a[4])+(Book%5)*8*(1-a[Book%5-1]);
        }
    
        cout<<"读者购买这批书的最低价格为:"<<money<<endl;
        cout<<"购买方式如下:"<<endl;
        if(Book%10==8)
        {
            cout<<"五本中有四本书每本买"<< (Book/10)*2+2<<"本,";
            cout<<"剩下的一本买"<< (Book/10)*2<<"本,"<<endl;
        }
        else
        { 
            if(Book%5!=0)
            {
                cout<<"五本中有"<<Book%5<<"本书每本买"<< Book/5+1<<"本,";
                cout<<"剩下的"<<5-Book%5<<"本每本买"<< Book/5<<"本,"<<endl;
            }
            else
            {
                cout<<"五本书每本买"<< Book/5<<"本 "<<endl;
            }
            
        }
       
    }
    

     3 结果截图:

    4个人总结:

    在遇到问题的时候,要是没有思路就自己多列举一下,从中找到规律。

  • 相关阅读:
    今天开始用 VSU 2010
    Visual Studio 2010 模型设计工具 基本应用
    Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
    Enterprise Library 4.1 Security Block 快速使用图文笔记
    解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”(图)
    一个Oracle存储过程示例
    Enterprise Library 4.1 Application Settings 快速使用图文笔记
    Oracle 10g for Windows 简体中文版的安装过程
    Oracle 11g for Windows 简体中文版的安装过程
    Oracle 9i 数据库 创建数据库 Net 配置 创建表 SQL查询 创建存储过程 (图)
  • 原文地址:https://www.cnblogs.com/sunmei20142925/p/5554362.html
Copyright © 2011-2022 走看看