1、浙江大学Java语言程序设计实验答案全集Java答案全集实验汇总。实验2 数据类型和变量的使用一、程序填空,在屏幕上显示一个短句“Programming in Java is fun!”import .*;public class Test10001 public static void main(String args) /*-*/Programming in Java is fun!); 二、程序填空,在屏幕上显示如下网格。+-+-+| | | | |+-+-+import .*;public class Test10002 public static void main(String a
2、rgs) /*-*/ +-+-+); | | |); | | |); +-+-+); 三、编写程序,在屏幕上显示如下图案。(要求:第1行行首无空格,每行行尾无空格)* * * * * * * * * *public class Test10003 public static void main(String args) /*-*/ * * * *); * * *); * *); *); 实验3 运算符和表达式的使用1、运行结果:m=2 k=1x= y= z=ch1=-A ch2=Ach1=-A ch2=aHello,Welcome to core Java!思考题:(1) 字符A的Unicod
3、e码比字符a的Unicode码小32。(2) 假设字符型变量ch中保存一个大写字母,执行ch+=(a-A );后,ch中是相应的小写字母。例:若ch=B,执行后ch=b。2、运行结果:m=3 n=2. m大于n吗?truem=2 n=2. m大于n吗?false str1=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
4、=15; m与n的位与运算结果是:15m、n的位与后左移2位的结果:60思考题:(1)若给b1赋值2,则程序出错。因为类型不匹配:不能从int转换为boolean(2)n是十六进制数,化为二进制为0001 1111;m是八进制数,化为二进制为0000 1111;所以n&m为0000 1111(二进制),就是十进制数15。(3)120(4)左移运算就是乘法运算,左移n位就相当于乘以2n4、运行结果:(m+nk)?(m+):(-m+n+)的运算结果:2float型变量强制转换为int型的结果是:3int型变量运算:(m+2*n)/k的结果是:2(m+2*n)/k的结果赋值给float型变量后x=思
5、考题:(1)因为temp=(-m+n+),等价于依次执行以下命令:-m;temp=(m+n); n+;所以,temp=2,m=0,n=3,k=3(2)因为是double类型,不能赋给float类型的变量x在后面加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/=5、源程序如下:public class Ball public static void main (String args) float r=, PI=,V; V=4f/3f*PI*r*r*r; 球的半径为+r); 球的体
6、积为+V); 运行结果:球的半径为球的体积为实验4 顺序结构程序的设计程序填空,不要改变与输入输出有关的语句。一、求两个数的和与差。输入整数a和b,计算并输出a、b的和与差。例:输入2 -8输出The sum is -6The difference is 10import .*;import class Test20001 public static void main(String args) int a, b, sum, diff; Scanner in=new Scanner; a=(); b=(); /*-*/ sum=a+b; diff=a-b; The sum is +sum);
7、The difference is +diff); 二、求平方根。输入1个实数x,计算并输出其平方根。例:输入输出The square root of is import .*;import class Test20002 public static void main(String args) double x, root; Scanner in=new Scanner; x=(); /*-*/ root=(x); The square root of +x+ is +root); 三、华氏温度转换为摄氏温度。输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).例:括号内
8、是说明输入 (华氏温度)输出The temprature is import class Test20003 public static void main(String args) Scanner in=new Scanner; double f, c; f=(); /*-*/ c=9*(f-32); import class Test20004 public static void main(String args) Scanner in=new Scanner; int time1, time2, hours, mins; time1=(); time2=(); /*-*/ /*计算两个
9、时间之间的小时数和分钟数*/ hours=time2/100-time1/100; mins=time2%100-time1%100; /*当计算得到的分钟数为负数时进行如下处理*/ hours=mins0?hours:hours-1; mins=mins0?mins:mins+60; The train journey time is +hours+ hrs + mins+ mins.); 五、数字加密。输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。例:括号
10、内是说明输入1257输出The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)import class Test20005 public static void main(String args) Scanner in=new Scanner; int number, digit1, digit2, digit3, digit4, newnum; number=(); /*-*/ /*先分离出各位上的数字*/ digit1=number/1000; digit2=number/100%10; ;public class Te
11、st20006 public static void main(String args) throws IOException char ch; ch=(char) /*-*/ ch+=32; ;perimeter=+(int)(perimeter*100+/100.);These sides do not correspond to a valid triangle); 例:括号内是说明输入2 (repeat=2) 5 5 31 1 4输出area=;perimeter=These sides do not correspond to a valid triangleimport class
12、 Test30003 public static void main(String args) int ri, repeat; float a, b, c, area, perimeter, s; Scanner in=new Scanner; repeat=(); for(ri=1; ric&a+cb&b+ca) ;perimeter=+(int)(perimeter*100+/100.); else These sides do not correspond to a valid triangle); 四、判断数的符号输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后
13、输出y。例:括号内是说明输入3 (repeat=3) 2 -8 0输出1 (x=2时y=1)-1 (x=-8时y=-1)0 (x=0时y=0)import class Test30004 public static void main(String args) int ri, repeat; int x, y; Scanner in=new Scanner; repeat=(); for(ri=1; ri0) y=1; else if(x=0) y=0; ;public class Test30007 public static void main(String args)throws IOE
14、xception char ch; ch=(char) while(ch!=?) /*-*/ if(A=ch&ch=Z) ch+=32; else if(a=ch&ch=z) f(+x+)=+y); 说明:对正数y保留两位小数的表达式(int)(y*100+/ 或 (x)*100)/九、显示五级记分制成绩对应的百分制区间输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入五级制成绩(AE),输出相应的百分制成绩(0100)区间,要求使用switch语句。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)
15、和E(0-59),如果输入不正确的成绩,显示Invalid input。输入输出示例:括号内是说明输入6A B C D E j (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j) 输出90-10080-8970-7960-690-59Invalid inputimport class Test30010 public static void main(String args) int repeat, ri; char ch; Scanner in=new Scanner; repeat=(); for(ri = 1; ri = repeat; ri+) ch=().ch
16、arAt(0); /*输入1个字符*/ /*-*/ switch(ch) case A:90-100);break; case B:80-89);break; case C:70-79);break; case D:60-69);break; case E:0-59);break; default: Invalid input); 实验6 循环结构程序的设计(一)程序填空,不要改变与输入输出有关的语句。1. 求11/21/31/n 输入一个正整数repeat (0repeat10),做repeat次下列运算:读入1 个正整数 n(n=100),计算并输出11/21/31/n 。例:括号内是说明
17、输入2 (repeat=1)210输出 import class Test40001 public static void main(String args) int ri, repeat; int i, n; float sum; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); /*-*/1. sum=0;. 输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数n,输出 2/1+3/2+5/3+8/5 +.的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。(
18、该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)例:括号内是说明输入3 (repeat=3) 1 5 20输出 (第1项是 (前5项的和是 (前20项的和是import class Test40011 public static void main(String args) int ri, repeat; int i,n; float a,b,s,t; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); /*-*/ a=1; ;public class Test40014 public
19、static void main(String args) Scanner in=new Scanner; int gcd, lcm, m, n,r; int repeat, ri; repeat=(); for(ri=1; ri=repeat; ri+) m=(); n=(); if(m= 0|n= 0) m = 0 or n = 0); else /*-*/ lcm=m*n; if(mn)r=m;m=n;n=r; r=m%n; while(r!=0) m=n; n=r; r=m%n; gcd=n; lcm=lcm/gcd; the least common multiple:+lcm +,
20、 the greatest common divisor:+gcd); 2. 求1 + 1/2! +.+ 1/n! 输入一个正整数repeat (0repeat10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和。 s = 1 + 1/2! +.+ 1/n! 例:括号内是说明输入:2 (repeat=2)2 (n=2)10 (n=10)输出:import class Test40021 public static void main(String args) int ri, repeat; int i,n; float s,t; Scanner in=new Scann
21、er; repeat=(); for(ri=1; ri=repeat; ri+) n=(); /*-*/ s=0; t=1; for(i=1;i=n;i+) t*=i;1. s+=1/t; .+ 1/n!输入一个正整数repeat (0repeat10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。 s = 1 + 1/2! +.+ 1/n! 要求定义并调用函数fact(n)计算n的阶乘。例:括号内是说明输入:2 (repeat=2)2 (n=2)10 (n=10)输出:public class Test50001 public static vo
22、id main(String args) int ri,repeat; int i,n; double s; Scanner in=new Scanner; repeat=(); for(ri=1;ri=repeat;ri+) n=(); /*-*/ s=0; for(i=1;i=n;i+) s+=fact(i); /*-*/ static double fact(int n) int i; double f=1; for(i=1;i=n;i+) f*=i; return f; /* 方法fact(n)也可以用以下递归算法设计 static double fact(int n) if(n=1)
23、 return 1; else return n*fact(n-1); */2. 求aaaaaaaaa输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aaa(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aaa(n个a)。例如,fn(3,2)的返回值是33。例:括号内是说明输入2 (repeat=2)2 3 (a=2, n=3)8 5 (a=8, n=5)输出246 (2+22+222)98760 (8+88+888+8888+88888) import class Test50002 public st
24、atic void main(String args) int ri, repeat; int i, n,a; long sn; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) a=(); n=(); /*-*/ sn=0; for(i=1;i=n;i+) sn+=fn(a,i); /*-*/ static int fn(int a,int n) int s=0; for(int i=1;i=n;i+) s=s*10+a; return s; /* 方法fn()也可以用以下递归算法设计 static int fn(int
25、 a,int n) if (n=1) return a; else return fn(a,n-1)*10+a; */3. 统计一个整数中数字的个数输入一个正整数repeat (0repeat10),做repeat次下列运算:读入1 个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。例:括号内是说明输入:3 (repeat=3)-219022345543输出:count=2 (-21902中有2个2)count=1 (有1个2)co
26、unt=0 (345543中没有2)import class Test50003 public static void main(String args) int ri, repeat; int count; long n; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); /*-*/ n=(n); count=countdigit(n,2); count=+count); /*-*/static int countdigit(long number,int digit) .要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。输出语句: );例:括号内是说明输入:3 (repeat=3)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1