• 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;
            }
             
        }
        
    }
    复制代码

    5.个人总结:

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

  • 相关阅读:
    遥感图像增强方法应用
    如何从优秀的程序员成为伟大的程序员(2)
    略论提问的智慧
    从我的一篇技术文章说开去
    《虎胆龙威4》观后感
    Microsoft Platform SDK 选择
    ‘OpenThread”: undeclared identifier 问题的解决之道
    Java Web整合开发读书笔记
    Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
    Getting Started with HTTPClient
  • 原文地址:https://www.cnblogs.com/20193898liufa/p/14161858.html
Copyright © 2020-2023  润新知