zoukankan      html  css  js  c++  java
  • java-每位顾客付款后给出找零钱的最佳组合

      假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50(N50)10(N10) 5(N5)1(N1) 四种。

      下面为程序的代码:

    /************************************************************   
    Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.   
    FileName: test.cpp 
      
    Author:  Light      
    Version : 1.0     
    Date:   2018/4/17
    Description:     
    假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,
    现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。
    假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种
     // 模块描述         
    Version: 
     仅用于软件测试,完成作业
    // 版本信息 
      
    Function List: // 主要函数及其功能     
    1.
     History: 
      // 历史修改记录 
          
    	<author>  <time>   <version >   <desc>       
         Light    18/4/17     1.0        建立函数 
    
    ***********************************************************/
    package demo;
    
    import java.util.Scanner;
    
    public class main {
    
    	/**
    	 * 主函数
    	 * @param args
    	 */
    	public static void main (String[] args) {
    		// TODO Auto-generated method stub
    		
    		int pay = 0;//付款金额
    		int cost = 0;//商品花费
    		int change = 0;//找钱
    		
    		@SuppressWarnings("resource")
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("请输入顾客付款金额:");
    		//对输入的内容进行检测,是否符合规则
    		try
    		{
    			pay = scanner.nextInt();
    			if (pay > 100 || pay < 0)
    			{
    				System.out.println("请输入正确的金额");
    				return;
    			}
    			
    		}catch (Exception e)
    		{
    			System.out.println("请输入合法数字");
    			return;
    		}
    		
    		
    		System.out.println("请输入商店货品价格:");
    		//对输入的内容进行检测,是否符合规则
    		try
    		{
    			cost = scanner.nextInt();
    			if (cost > 100 || cost < 0)
    			{
    				System.out.println("请输入正确的金额");
    				return;
    			}
    			else if (cost > pay)
    			{
    				System.out.println("您的消费金额超出支付金额");
    				return;
    			}
    		}catch (Exception e)
    		{
    			System.out.println("请输入合法数字");
    			return;
    		}
    		
    		change = pay-cost;
    		
    		//输出此时的付款金额,商品价格,应找金额
    		System.out.println("付款金额" + pay +"   货品价格" + cost + "     应找总金额:" + change);
    		
    		//获得结果,进行输出
    		String end = giveChange(change);
    		System.out.println("此次消费应找金额  " + change + " 元,其中应找  " + end);
    		
    	}
    	
    	/**
    	 * 以找钱规则找钱
    	 * @param change
    	 * @return String//返回最终的找钱结果
    	 */
    	public static String giveChange(int change)
    	{
    		String str="";
    		int qianshu;//应该找钱的张数
    		int leftmoney = change;//还剩下多少钱,初始值为change
    		
    		if (leftmoney / 50 != 0)
    		{
    			qianshu = leftmoney / 50;
    			str = str + qianshu + "张50元 ";
    			leftmoney = leftmoney - qianshu * 50;
    		}
    		if (leftmoney / 10 != 0)
    		{
    			qianshu = leftmoney / 10;
    			str = str + qianshu + "张10元 ";
    			leftmoney = leftmoney - qianshu * 10;
    		}
    		if (leftmoney / 5 != 0)
    		{
    			qianshu = leftmoney / 5;
    			str = str + qianshu + "张5元 ";
    			leftmoney = leftmoney - qianshu * 5;
    		}
    		if (leftmoney / 1 != 0)
    		{
    			qianshu = leftmoney / 1;
    			str = str + qianshu + "张1元 ";
    			leftmoney = leftmoney - qianshu * 1;
    		}
    		
    		//检验是否完全找完
    		System.out.println("剩余没有找完的钱数为:"+leftmoney);
    		return str;
    	}
    }
    

      

  • 相关阅读:
    谁把天才变成了魔兽
    NetBeans 时事通讯(刊号 # 35 Nov 20, 2008)
    Java Annotation 手册
    《程序设计实践》读书笔记一
    5分钟让你明白金融危机爆发原因
    NetBeans 6.5 正式版可以下载了!
    Java Annotation 入门
    有关睡觉的学问
    oracle sql日期比较:
    C++编写安全OCX,IE不弹出安全提示
  • 原文地址:https://www.cnblogs.com/suifengye/p/8868345.html
Copyright © 2011-2022 走看看