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.个人总结:

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

原文地址:https://www.cnblogs.com/20193898liufa/p/14161858.html