码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础编程50题(10-12题)详解

时间:2015-03-20 13:01:31      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:java源代码   球下落弹起问题   不同数字排列   不同阶层奖金计算   编程   

一、描述

1、一球从m米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第n次落地时,共经过多少米?第10次反弹多高?

2、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。但是必须满足每一位上的数字各不相同,根据排列组合原理总共有4*3*2=24种。

3、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 

程序分析:根据输入的利润判断该利润所属的提成范围,计算结果。


二、源代码

1、程序1

package tong.yue.hong;


import java.util.Scanner;


/**
 * 一球从m米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第n次落地时,共经过多少米?第10次反弹多高?
 * @author tong
 *
 */


public class BallHeight {


	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入小球落地时的高度:");
		
		double height = scan.nextDouble();
		if (height<0) {
			System.out.print("输入数据有误,请重新输入小球落地时的高度:");
			height = scan.nextDouble();
		}
		System.out.print("请输入小球落地的次数:");
		int times = scan.nextInt();
		if (times<0) {
			System.out.print("输入数据有误,请重新输入小球落地的次数:");
			times = scan.nextInt();
		}
		scan.close();
		ballDistance(height,times);		


	}


	private static void ballDistance(double height, int times) {
		
		System.out.println("start height:"+height);
		//开始落下之前的高度,以后每次弹起和落下记为一次
		double sum = height;
		for(int i=1;i<=times;i++){
			height /=2.0;
			System.out.println("第"+i+"次,球的弹起高度为:"+height);
			//每次落地后反跳回原高度的一半,经过的路程为原高度的一半乘以2,因为有弹起和落下
			sum +=2*height;
		}
		System.out.println("第"+times+"次,落地后经过的总距离为:"+sum+"米。");
	}
	
}

运行结果:

技术分享


2、程序2

package tong.yue.hong;
/**
 * 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
	程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
	但是必须满足每一位上的数字各不相同,根据排列组合原理总共有4*3*2=24种。
 * @author tong
 *
 */


public class PailieZuhe {


	public static void main(String[] args) {
		int count = 0;
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= 4; j++) {
				//个位和十位不能相同
				if (j==i) {
					continue;
				}
				for (int k = 1; k <= 4; k++) {
					//个位和百位,十位和百位不能相同
					if (i!=k&&j!=k) {
						int num = i+j*10+k*100;
						System.out.print(num+" ");
						count++;
						if (count%10==0) {
							System.out.println();
						}
					}					
				}
			}
		}
		System.out.println("\n总计:"+count+"个");
	
	}


}

运行结果:

技术分享


3、程序3

package tong.yue.hong;


import java.util.Scanner;


/**
 * 企业发放的奖金根据利润提成。
 * 利润(I)低于或等于10万元时,奖金可提10%;
 * 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
 * 20万到40万之间时,高于20万元的部分,可提成5%;
 * 40万到60万之间时高于40万元的部分,可提成3%;
 * 60万到100万之间时,高于60万元的部分,可提成1.5%;
 * 高于100万元时,超过100万元的部分按1%提成
 * 从键盘输入当月利润I,求应发放奖金总数? 
	程序分析:根据输入的利润判断该利润所属的提成范围,计算结果
 * @author tong
 *
 */
public class Salary {


	public static void main(String[] args) {
		System.out.println("请输入当月利润,单位为万元:");
		Scanner scanner = new Scanner(System.in);
		double I = scanner.nextDouble();
		while (I<0) {
			System.out.println("输入数据有误,请重新输入当月利润,单位为万元:");
			I = scanner.nextDouble();
		}
		scanner.close();
		computeBonus(I);		


	}


	private static void computeBonus(double i) {
		double bonus = 0;
//		利润(I)低于或等于10万元时,奖金可提10%;
//		 利润高于10万元,低于或等于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
//		20万到40万之间时,高于20万元的部分,可提成5%;
//		40万到60万之间时高于40万元的部分,可提成3%;
//		60万到100万之间时,高于60万元的部分,可提成1.5%;
//		高于100万元时,超过100万元的部分按1%提成
		if (i<=10) {
			bonus = i*0.1;
		}else if (i<=20) {
			bonus = 10*0.1+(i-10)*0.075;
		} else if (i<=40) {
			bonus = 10*0.1+10*0.075+(i-20)*0.05;
		} else if (i<=60) {
			bonus = 10*0.1+10*0.075+20*0.05+(i-40)*0.03;
		}else if (i<=100) {
			bonus = 10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015;
		}else {
			bonus = 10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01;
		}
		
		System.out.println("您本月利润为:"+i+"万元,所得奖金为:"+bonus+"万元。");
	}
	
	
}
运行结果:

技术分享

JAVA基础编程50题(10-12题)详解

标签:java源代码   球下落弹起问题   不同数字排列   不同阶层奖金计算   编程   

原文地址:http://blog.csdn.net/tongyuehong137/article/details/44488525

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!