实验5 分支结构程序的设计1.程序填空题,不要改变与输入输出有关的语句。
20004 计算旅途时间输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。
例:括号内是说明输入712 1411(出发时间是7:12,到达时间是14:11)输出The train journey time is 6 hrs 59 mins.import java.util.Scanner;public class Test20004 {public static void main(String[] args) {Scanner in=new Scanner(System.in);int time1, time2, hours, mins;time1=in.nextInt();time2=in.nextInt();/*------------------*//*计算两个时间之间的小时数和分钟数*/hours=time2/100-time1/100;mins=time2%100-time1%100;/*当计算得到的分钟数为负数时进行调整*/hours=mins>0?hours:hours-1;mins=mins>0?mins:mins+60;//或:if(mins<0){hours-=1;mins+=60;}System.out.println("The train journey time is "+hours+" hrs "+ mins+" mins.");}}30001 显示两级成绩输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。
输出使用System.out.println("Pass");及System.out.println("Fail");例:括号内是说明输入2 (repeat=2)60 59输出PassFailimport java.util.Scanner;public class Test30001{public static void main(String[] args){int ri, repeat;int mark;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){mark=in.nextInt();mark=in.nextInt();/*------------------*/if (mark<60)System.out.println("Fail");elseSystem.out.println("Pass");}}}30002 找最小值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入四个整数,输出其中的最小值。
例:括号内是说明输入3 (repeat=3)12 6 1 9010 40 30 20-1 -3 -4 -5输出min is 1 (12 6 1 90 中的最小值是1)min is 10 (10 40 30 20 中的最小值是10)min is -5 (-1 -3 -4 -5中的最小值是-5)import java.util.Scanner;public class Test30002 {public static void main(String[] args){int ri, repeat;int a, b, c, d, min;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){a=in.nextInt();b=in.nextInt();c=in.nextInt();d=in.nextInt();/*------------------*/min=a;if(min>b) min=b;if(min>c) min=c;if(min>d) min=d;System.out.println("min is "+min);}}}30004 判断数的符号输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。
例:括号内是说明输入3 (repeat=3)2 -8 0输出1 (x=2时y=1)-1 (x=-8时y=-1)0 (x=0时y=0)import java.util.Scanner;public class Test30004{public static void main(String[] args){int ri, repeat;int x, y;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){x=in.nextInt();if(x>0)y=1;else if(x==0)y=0;else y=-1;System.out.println(y);}}}30005 计算个人所得税输入一个职工的月薪salary,输出应交的个人所得税tax。
tax = rate * (salary-850)当 salary <= 850 时,rate = 0%;当 850 < salary <= 1350 时,rate = 5%; //写成0.05f当 1350 < salary <= 2850 时,rate = 10%;当 2850 < salary <= 5850 时,rate = 15%;当 5850 < salary 时,rate = 20%;例:括号内是说明输入5 (repeat=5)1010.8732098.7680040102850输出tax=8.04tax=6249.75tax=0.0tax=474.0tax=200.0import java.util.Scanner;public class Test30005 {public static void main(String[] args){int ri, repeat;float rate, salary, tax;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){salary=in.nextFloat();if(salary<=850) //注意:实现分段函数时对条件的简化rate=0;else if(salary<=1350)rate=0.05f;else if(salary<=2850)rate=0.1f;else if(salary<=5850)rate=0.15f;elserate=0.2f;tax=rate*(salary-850);System.out.println("tax="+(int)(tax*100+0.5)/100.0);}}}30006 显示水果的价格输入一个正整数repeat (0<repeat<10),做repeat次下列运算:以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。
[1] apples[2] pears[3] oranges[4] grapes输入水果的编号,输出该水果的单价。
如果输入不正确的编号,显示单价为0。
例:括号内是说明输入1 (repeat=1)3 (oranges的编号)输出[1] apples[2] pears[3] oranges[4] grapesprice=4.1import java.util.Scanner;public class Test30006{public static void main(String[] args){int ri, repeat;int choice;float price;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri<=repeat; ri++){System.out.println("[1] apples");System.out.println("[2] pears");System.out.println("[3] oranges");System.out.println("[4] grapes");choice=in.nextInt();/*------------------*/switch(choice) {case 1:price=3.0f;break;case 2:price=2.5f;break;case 3:price=4.1f;break;case 4:price=10.2f;break;default: price=0; }System.out.println("price="+price);}}}30008 计算函数的值(分支)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入整数 x,计算并输出下列函数 f(x) 的值(保留2位小数,如果答案为3.50,则直接显示为3.5)。
当 x 等于0时,f(x) = 0,当 x 不等于0时, f(x) = 1/x 。
例:括号内是说明输入3 (repeat=3)6 (x=6)10 (x=10)0 (x=0)输出f(6)=0.17f(10)=0.1f(0)=0.0import java.util.Scanner;public class Test30008{public static void main(String args[]){int repeat, ri,x;double y;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri = 1; ri <= repeat; ri++){x=in.nextInt();/*---------*/if(x==0) y=0;else y=(int)((1.0/x)*100+0.5)/100.;//或:y=Math.round((1.0/x)*100)/100.;System.out.println("f("+x+")="+y);}}}30010 显示五级记分制成绩所对应的百分制成绩区间输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。