一、描述
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+"万元。"); } }
运行结果:
时间: 2024-11-05 18:58:03