1、- 1 -Java 答案全集实验汇总。实验 2 数据类型和变量的使用一、程序填空,在屏幕上显示一个短句“Programming in Java is fun!”import java.io.*;public class Test10001public static void main(String args)/*-*/System.out.println(“Programming in Java is fun!“);二、程序填空,在屏幕上显示如下网格。+-+-+| | | | |+-+-+import java.io.*;public class Test10002public static
2、void main(String args)/*-*/System.out.println(“+-+-+“);System.out.println(“| | |“);System.out.println(“| | |“);System.out.println(“+-+-+“);三、编写程序,在屏幕上显示如下图案。(要求:第 1 行行首无空格,每行行尾无空格)* * * * * * *public class Test10003public static void main(String args)/*-*/System.out.println(“* * * *“);System.out.pri
3、ntln(“ * * *“);System.out.println(“ * *“);- 2 -System.out.println(“ *“);- 3 -实验 3 运算符和表达式的使用1、运行结果:m=2 k=1x=1.0 y=2.0 z=-3.0ch1=-A ch2=Ach1=-A ch2=aHello,Welcome to core Java!思考题:(1) 字符A的 Unicode 码比字符a的 Unicode 码小 32。(2) 假设字符型变量 ch 中保存一个大写字母,执行 ch+=(a-A );后,ch中是相应的小写字母。例:若 ch=B,执行后 ch=b。2、运行结果:m=3 n
4、=2. m大于n吗?truem=2 n=2. m大于n吗?falsestr1=Hello;str2=Hello!s1 和 s2 相等吗?false思考题:(1)s2 比 s1 多一个字符“!”,所以不相同。(2)s2 比 s1 多一个字符,所以 s2 比 s1 大。3、运行结果:逻辑变量b1=true 、b2=falseb1b2(异或运算) 的结果是 :trueb1!b2(b2取反后与b1异或运算)的结果是:falsen=31,m=15; m与n 的位与运算结果是 :15m、n 的位与后左移 2 位的结果:60思考题:(1)若给 b1 赋值 2,则程序出错。因为类型不匹配:不能从 int 转换
5、为boolean(2)n 是十六进制数,化为二进制为 0001 1111;- 4 -m 是八进制数,化为二进制为 0000 1111;所以 ntemp=(m+n); n+;所以,temp=2,m=0,n=3,k=3(2)因为 3.14 是 double 类型,不能赋给 float 类型的变量 x在 3.14 后面加 F 或 f,将其转换成 float 类型,就可以赋值了(3)此时 m=1,n=3,k=3,所以(m+2*n)/k=7/3=2(4)x=(m+2*n)/(float)k=7/3.0=2.33333335、源程序如下:public class Ball public static vo
6、id main (String args)float r=6.5f, PI=3.14f,V;V=4f/3f*PI*r*r*r;System.out.println(“球的半径为“+r);System.out.println(“球的体积为“+V);运行结果:球的半径为 6.5球的体积为 1149.7634- 5 -实验 4 顺序结构程序的设计程序填空,不要改变与输入输出有关的语句。一、求两个数的和与差。输入整数 a 和 b,计算并输出 a、b 的和与差。例:- 6 -输入2 -8输出The sum is -6The difference is 10import java.io.*;import
7、java.util.Scanner;public class Test20001public static void main(String args)int a, b, sum, diff;Scanner in=new Scanner(System.in);a=in.nextInt();b=in.nextInt();/*-*/sum=a+b;diff=a-b;System.out.println(“The sum is “+sum);System.out.println(“The difference is “+diff);二、求平方根。输入 1 个实数 x,计算并输出其平方根。例:输入1.
8、21输出The square root of 1.21 is 1.1import java.io.*;import java.util.Scanner;public class Test20002public static void main(String args)double x, root;Scanner in=new Scanner(System.in);x=in.nextDouble();/*-*/root=Math.sqrt(x);System.out.println(“The square root of “+x+“ is “+root);- 7 -三、华氏温度转换为摄氏温度。输
9、入华氏温度 f,计算并输出相应的摄氏温度 c。c = 5/9(f-32).例:括号内是说明输入17.2 (华氏温度)输出The temprature is -8.222222222222223import java.util.Scanner;public class Test20003 public static void main(String args) Scanner in=new Scanner(System.in);double f, c;f=in.nextDouble();/*-*/ c=5.0/9*(f-32); /注意:5/9结果是0System.out.println(“Th
10、e temprature is “+c); 四、计算旅途时间。输入 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=n
11、ew Scanner(System.in);int time1, time2, hours, mins;time1=in.nextInt();time2=in.nextInt();/*-*/*计算两个时间之间的小时数和分钟数 */- 8 -hours=time2/100-time1/100;mins=time2%100-time1%100;/*当计算得到的分钟数为负数时进行如下处理*/ hours=mins0?hours:hours-1;mins=mins0?mins:mins+60;System.out.println(“The train journey time is “+hours+“
12、 hrs “+ mins+“ mins.“); 五、数字加密。输入 1 个四位数,将其加密后输出。方法是将该数每一位上的数字加 9,然后除以 10取余,做为该位上的新数字,最后将第 1 位和第 3 位上的数字互换,第 2 位和第 4 位上的数字互换,组成加密后的新数。例:括号内是说明输入1257输出The encrypted number is 4601(每一位上的数字加 9 除以 10 取余后,得 0146,交换后得到 4601)import java.util.Scanner;public class Test20005 public static void main(String arg
13、s) Scanner in=new Scanner(System.in);int number, digit1, digit2, digit3, digit4, newnum;number=in.nextInt();/*-*/*先分离出各位上的数字 */digit1=number/1000;digit2=number/100%10; /或 digit2=(number-digit1*1000)/100;digit3=number/10%10; /或 digit3=(number-digit1*1000-digit2*100)/10;digit4=number%10;/*再调整各位上的数字 */
14、digit1=(digit1+9)%10;digit2=(digit2+9)%10;digit3=(digit3+9)%10;- 9 -digit4=(digit4+9)%10;/*最后组成加密后的新数 */newnum=digit3*1000+digit4*100+digit1*10+digit2;System.out.println(“The encrypted number is “+newnum); 六、大写字母转换成小写字母。输入一个大写英文字母,输出相应的小写字母。例:输入G输出gimport java.io.*;public class Test20006 public stat
15、ic void main(String args) throws IOException char ch;ch=(char)System.in.read();/*-*/ ch+=32; /或 ch=(char)(ch+32);System.out.println(ch); 七、计算三门课程的平均成绩。已知某位学生的数学、英语和计算机课程的成绩分别是 87 分、72 分和 93 分,求该生3 门课程的平均分。本题无输入。输出示例:math = 87, eng = 72, comp = 93average = 84public class Test20007 public static void
16、main(String args) int math, eng, comp, average;/*/math=87;eng=72;comp=93;- 10 -average=(math+eng+comp)/3;System.out.println(“math = “+math+“, eng = “+eng+“, comp = “+comp);System.out.println(“average = “+ average);八、计算存款利息。输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留 2 位小数。inte
17、rest = money(1+rate)year - money输入输出示例:括号内为说明输入1000 3 0.025 (money = 1000, year = 3, rate = 0.025)输出interest = 76.89import java.util.Scanner;public class Test20008 public static void main(String args) int money, year;double interest, rate;Scanner in=new Scanner(System.in); /*使用 in.nextDouble()和 in.n
18、extInt()输入 double 和 int 型数据*/*/money=in.nextInt();year=in.nextInt();rate=in.nextDouble();interest=money*Math.pow(1+rate), year )- money; /注意:指数运算没有运算符,应使用数学类的方法 powSystem.out.println(“interest = “+ (int)(interest*100+0.5)/100.0); /正数保留两位小数九、计算两个数的和、差、积、商与余数。输入 2 个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。输入
19、输出示例:括号内是说明输入5 3 (num1=5,num2=3)输出- 11 -5+3=85-3=25*3=155/3=15%3=2import java.util.Scanner;public class Test20010public static void main(String args)int num1,num2;Scanner in=new Scanner(System.in);num1=in.nextInt();num2=in.nextInt();/*-*/System.out.println(num1+“+“+num2+“=“+(num1+num2);System.out.pr
20、intln(num1+“-“+num2+“=“+(num1-num2);System.out.println(num1+“*“+num2+“=“+(num1*num2);System.out.println(num1+“/“+num2+“=“+(num1/num2);System.out.println(num1+“%“+num2+“=“+(num1%num2);十、计算一个 3 位数的各位数字。输入一个 3 位数 n,分别求出 n 的个位数字(c)、十位数字(b)和百位数字(a)的值。输入输出示例:输入:152输出:number152:digit1=2,digit2=5,digit3=1im
21、port java.util.Scanner;public class Test20011public static void main(String args)int a,b,c,n;Scanner in=new Scanner(System.in);n=in.nextInt();/*-*/c=n%10;b=(n/10)%10;a=(n/100)%10;System.out.println(“number“+n+“:digit1=“+c+“,digit2=“+b+“,digit3=“+a);- 12 -十一、计算 x 的平方。输入 x,计算 x 的平方 y。并分别以“y=x*x“和“x*x=
22、y“的形式输出 x 和 y 的值。输入输出示例:输入:3输出:(输出中不能出现空格)9=3*33*3=9import java.util.Scanner;import java.util.Scanner;public class Test20012 public static void main(String args)int x,y;Scanner in=new Scanner(System.in);x=in.nextInt();/*-*/y=x*x;System.out.println(y+“=“+x+“*“+x);System.out.println(x+“*“+x+“=“+y);- 1
23、3 -实验 5 分支结构程序的设计程序填空,不要改变与输入输出有关的语句。一、显示两级成绩 输入一个正整数 repeat (0b) min=b;if(minc) min=c;if(mind) min=d; - 15 -System.out.println(“min is “+min);三、求三角形的面积和周长输入一个正整数 repeat (0carea=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c);perimeter=a+b+c;- 16 -System.out.println(“area=“+(int)(area*100+0.5)/100.+“;perimeter
24、=“+(int)(perimeter*100+0.5)/100.);else System.out.println(“These sides do not correspond to a valid triangle“);四、判断数的符号输入整数 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 Test30004public static
25、 void main(String args)int ri, repeat;int x, y;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri0) y=1;else if(x=0) y=0; /注意:=是赋值运算符,=才是比较相等的运算符else y=-1; System.out.println(y); - 17 -五、计算个人所得税输入一个正整数 repeat (00)if(x%2!=0)sum+=x;x=in.nextInt();System.out.println(sum);7. 求最大值输入一个正整数
26、repeat (0max)max=x;System.out.println(max);- 28 -8. 求整数的位数以及各位数之和输入一个正整数 repeat (00);/* 如果使用 while语句,输入0时输出 “number=0, sum=0”,其中number的值不正确,应是 1 */System.out.println(“number=“+number+“, sum=“+sum);- 29 -实验 7 循环结构程序的设计(二)程序填空,不要改变与输入输出有关的语句。1. 求 11/2 1/31/4 输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:读
27、入 1 个正整数 n(n=100),计算并输出 11/21/31/4的前 n 项和(四舍五入保留小数 4 位)。例:括号内是说明输入2 (repeat=2)103输出0.64560.8333import java.util.Scanner;public class Test40004 public static void main(String args) int ri, repeat;int i, n, flag;float sum;Scanner in=new Scanner(System.in);- 30 -repeat=in.nextInt();for(ri=1; ri=repeat;
28、 ri+)n=in.nextInt();/*-*/sum=0;flag=1;for(i=1;i=n;i+) sum+=flag*1.0f/i;flag=-flag;System.out.println(long)(sum*10000+0.5)/10000.);2. 求 11/3 1/51/7 输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:读入 1 个正实数 eps,计算并输出 11/31/51/7,直到最后一项的绝对值小于 eps 为止(要求每一项的绝对值均大于等于 eps,并以 float 类型输出数据)。例:括号内是说明输入2 (repeat=2)1E-40.1输出0.78530.8349import java.util.Scanner;public class Test40006 public static void main(String args) int ri, repeat;int temp, flag;double eps, item, sum;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri=1; ri=repeat; ri+)eps=in.nextDouble();/*-*/item=1;sum=0;temp=flag=1;