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、若购买的图书不超过5本,那么分一次购买且购买不同的书籍最便宜。
    2、若购买的图书本书大于5本,少于10本,我将买6,7,8,9本书的情况都列举出来,发现:
    买6本:分两次购买,5本1本最便宜
    买7本:分两次购买,5本2本最便宜
    买8本:分两次购买,4本4本最便宜
    买9本:分两次购买,5本4本最便宜
    3、当购买的图书大于10本时,由于买5本时折扣最高,所以用购买数量模5,余数+5就会对应6,7,8,9本的情况,买(商-1)次5本,这样可是价格最低。

    二、源程序

    package com.java.lianxi;
    
    import java.util.Scanner;
    
    public class lianxi5 
    {
        public static void main(String[] args)
        {
            System.out.print("请输入购买图书的数量:(大于10)");
            Scanner in=new Scanner(System.in);
            int count=in.nextInt();
            double sum = 0;
            double array[]={38,45.2,51.2,55.6};
            if(count>10)
            {
                sum=(count/5-1)*40*0.75+array[count%5-1];
            }
            else
            {
                System.out.print("请重新输入购买数量:(大于10)");
                count=in.nextInt();
                sum=(count/5-1)*40*0.75+array[count%5-1];
            }
            System.out.print("最低价格为:"+sum);
            
        }
    
    }

    三、结果截图

    四、心得体会

      刚刚拿到这道题目,老师就给了部分思路,于是我就顺着老师的思路想,由于买5本时折扣最大,买5本以下,一次性全部购买最便宜,买6-9本,我列举出了各个情况,选出了最低价格的情况,10以上可以分解成几个5本和6,7,8,9的情况,起初考虑到买书的重复性,以为买那些书是由买主决定的,后来发现我想多了,不用考虑这种情况,为了实现最优惠,保证每次买书都没有重复的就行了。设计算法时,一定要学会用已经实现的去估计没有实现的,将新的问题转化为旧的问题。

  • 相关阅读:
    swift textfiled 输入完毕 return 隐藏键盘 方法
    第一篇,仅是为了纪念
    ASP.NET MVC之验证终结者篇
    ASP.NET MVC扩展之HtmlHelper辅助方法
    Java历程-初学篇 Day04选择结构(1)
    Java历程-初学篇 Day03扫描仪与类型转换
    Java历程-初学篇 Day02变量,数据类型和运算符
    Java历程-初学篇 Day01初识java
    简单工厂模式和策略模式理解
    工厂模式和策略模式的区别
  • 原文地址:https://www.cnblogs.com/maximumminimum/p/4428257.html
Copyright © 2011-2022 走看看