zoukankan      html  css  js  c++  java
  • 购买图书

    要求:

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

    本数

    折扣

    2

    5%

    3

    10%

    4

    20%

    5

    25%

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

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

    思路:

    找出规律

    注意到小于5本书的时候,套用现有的优惠条件就是最优惠的方案;

      如果书的数目大于10本,此时可以简化成买几个5本和一次6到10本这样的方案来达到最优惠的目的;  

      对6~10本进行简单的计算算出:

      6本:分解成5+1本;总价为:30+8元

        或分解成4+2本;总价为:25.6+15.2元

        或分解成3+3本;总价为:21.6+21.6元

        可以看出5+1本最划算;

      7本:分解成5+2本;总价为:30+15.2元

          或分解成4+3本;总价为:21.6+25.6元

        可以看出5+2本最划算;

      8本:分解成5+3本;总价为:30+21.6元

        或分解成4+4本;总价为:25.6+25.6元

        可以看出4+4本最划算

      9本:分解成5+4本;总价为:30+25.6元

        此时为最划算(只有这一种情况)

      10本:买两个5本就行;

    代码:

    #include <iostream>
    
    int main()
    
    {
    
        int n;
    
        cout<<"请输入要买几本书?"<<endl;
    
        cin>>n;
    
        if(n<6)
    
        {
    
            cout<<"请重新输入大于5的书目:";
    
            cin>>n;
    
        }
    
        int a=n%5;
    
        int b=n/5;
    
        switch(a)
    
        {
    
            case 1:
    
                cout<<"您先买"<<b*5<<"本书,"<<"再买1本书最划算"<<endl;
    
                cout<<"总价为:"<<b*30+8<<"元";
    
                break;
    
            case 2:
    
                cout<<"您先买"<<b*5<<"本书,"<<"再买2本书最划算"<<endl;
    
                cout<<"总价为:"<<b*30+15.2<<"元";
    
                break;
    
            case 3:
    
                cout<<"您先买"<<(b-1)*5<<"本书,"<<"再买两次4本书最划算"<<endl;
    
                cout<<"总价为:"<<(b-1)*30+51.2<<"元";
    
                break;
    
            case 4:
    
                cout<<"您先买"<<b*5<<"本书,"<<"再买4本书最划算"<<endl;
    
                cout<<"总价为:"<<b*30+25.6<<"元";
    
                break;
    
            case 0:
    
                cout<<"您直接买"<<b*5<<"本书最划算"<<endl;
    
                cout<<"总价为:"<<b*30<<"元";
    
                break;
    
             
    
        }
    
     
    
        //继续吗?
    
        int con;
    
        cout<<endl<<"继续吗?是输入1,否输入0:";
    
        cin>>con;
    
        if(con==1)
    
        {
    
            main();
    
        }
    
        else
    
        {
    
            return 0;
    
        }
    
    
        return;
    
    }
    

     结果截图:

  • 相关阅读:
    There was an internal API error
    MD5加密
    CentOS 7 最小化安装简单配置
    Dalvik 虚拟机操作码
    BugkuCTF~Web~WriteUp
    BugkuCTF~代码审计~WriteUp
    Android 个人手机通讯录开发
    Android SQLite 数据库学习
    Android 程序结构
    2018~第三届南宁市网络安全技术大赛~nnctf~write-up
  • 原文地址:https://www.cnblogs.com/zzcs/p/5609138.html
Copyright © 2011-2022 走看看