zoukankan      html  css  js  c++  java
  • 个人项目——买书

    用折后最低价买书

    一、程序要求

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

                           本数                    折扣

                            2                       5%

                            3                       10%

                            4                       20%

                            5                       25%

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

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

    二、程序设计思想

        列举出买十本书以内的所有情况,从中找规律:买一本的时候不打折扣,价钱为 8;买两本的时候买最低价为 15.2(1+1);买三本的时候最低价为 21.6(1+1+1);买四本的时候最低价为25.6(1+1+1+1);买五本的时候最低价为30(1+1+1+1+1);买六本的时候最低价为 38(5+1);买七本的时候最低价为 45.2(5+1+1);买八本的时候最低价为 51.2(4+4);买九本的时候最低价为 55.6(5+4);买十本的时候最低价为 60(5+5)。按照上面的情况可以看出:购买8本书时,最低价并不是(5+3),所以每10本书是一个循环。书的总数除以10求余求商:余数部分按10本以内数目计算;商数部分按整套购买计算。按此类推,算出最低价。

    三、源程序

    //李俏  2016,6,2
    //根据折扣,计算买书的最低价
    
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int num;//书的数量
        double money;//折后的钱数
        int i, j;
    
        cout << "请输入要买的书的数量:";
        cin >> num;
        while (num <= 0)
        {
            //exit(1);
            cout << "请重新输入要买的书的数量(数量必须为正数):";
            cin >> num;
        }
    
        i = num % 10;
        j = num / 10;
        switch (i)
        {
        case 0:
            money = j * 40 * 0.75*2 ;
            break;
        case 1:
            money = j * 40 * 0.75 * 2 + 8;
            break;
        case 2:
            money = j * 40 * 0.75 * 2 + 8 * 2 * 0.95;
            break;
        case 3:
            money = j * 40 * 0.75 * 2 + 8 * 3 * 0.9;
            break;
        case 4:
            money = j * 40 * 0.75 * 2 + 8 * 4 * 0.8;
            break;
        case 5:
            money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75;
            break;
        case 6:
            money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8;
            break;
        case 7:
            money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8 * 2 * 0.95;
            break;
        case 8:
            money = j * 40 * 0.75 * 2 + 8 * 4 * 0.8 * 2;
            break;
        case 9:
            money = j * 40 * 0.75 * 2 + 8 * 5 * 0.75 + 8 * 4 * 0.8;
            break;
        }
        cout << "这批书的折后价为:"<<money<<endl;
        
        return 0;
    }

    四、结果截图

     

    五、心得体会  

      课堂上,老师引导我们:根据题设,列举各种情况并且计算各种可能的结果,经过比较得到最低价;再然后从购买10以内数量的书、得到的每个最低价中,找规律,但是由于自己的不自信、计算的结果不正确,没能找到规律;最后,老师给出了思路——书的总数超过10本时,也可按10本以内的计算方法计算,并且指出购买8本书是一个特殊情况。

      就实现来讲,相比前两次的课堂练习,这次的还是比较简单的,关键在于解题的思路和从中发现的规律。这次练习实现后,内心还有点儿小激动,因为题目不太复杂,可以把自己的理解以程序的形式呈现出来,但是激动之余,还是有些担心,担心能力不能提高、以后遇到问题还是解决不了。通过本次实验,我复习了一些常用的基础语法点,以后会更加熟练的。

     

  • 相关阅读:
    fastadmin中curd生成的表单将数字展示为文字
    fastadmin弹窗效果表单
    fastadmin 框架中图片点击放大
    linux vi 编辑文件常用快捷键
    mysql 数据库执行创建索引语句异常 Specified key was too long; max key length is 767 bytes
    eclipse 版本库信息存储错误,导致每次更新提交信息总弹出要输入账号密码问题 解决
    外国域名无法访问 metricbeat.docker.yml 无法下载问题解决
    ELK elasticsearch docker 多台服务器集群
    zipkin 服务跟踪
    多线程 采用spring线程池ThreadPoolTaskExecutor提高程序处理能力 笔记
  • 原文地址:https://www.cnblogs.com/Aliqiao/p/5555039.html
Copyright © 2011-2022 走看看