浙江大学Java语言程序设计试验答案全集_第1页
浙江大学Java语言程序设计试验答案全集_第2页
浙江大学Java语言程序设计试验答案全集_第3页
浙江大学Java语言程序设计试验答案全集_第4页
浙江大学Java语言程序设计试验答案全集_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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 args) /

2、*/ +-+-+); | | |); | | |); +-+-+); 三、编写程序,在屏幕上显示如下图案。(要求:第 1 行行首无空格,每行行尾无空格) public class Test10003 public static void main(String args) /* * * * *); * * *); * *); 实验 3 运算符和表达式的使用 1、 运行结果: m=2 k=1 x= y= z= ch1=-A ch2=A ch1=-A ch2=a Hello,Welcome to core Java! 思考题: (1)字符 A 的 Unicode 码比字符 a 的 Unicode

3、码小 32。 ;后, ch 中 (2)假设字符型变量 ch 中保存一个大写字母,执行 ch+=(a-A ) 是相应的小写字母。例:若 ch=B ,执行后 ch=b 。 2、 运行结果: m=3 n=2. m大于 n吗true m=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=false b1b2(异或运算 )的结果是:true b1!b2(b2 取反后与

4、 b1异或运算)的结果是 :false n=31,m=15; m与 n的位与运算结果是 :15 m、n的位与后左移 2位的结果: 60 思考题: 转换为 boolean (1)若给b1赋值2,则程序出错。因为类型不匹配:不能从 int (2)n是十六进制数,化为二进制为 0001 1111; m是八进制数,化为二进制为 0000 1111 ; 所以 n temp=(m+n); n+; 所以, temp=2,m=0, n=3,k=3 ( 2)因为是 double 类型,不能赋给 float 类型的变量 x 在后面加 F或 f ,将其转换成 float 类型,就可以赋值了 (3) 此时 m=1,n

5、=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); 球的体积为 +V); 运行结果: 球的半径为 球的体积为 实验 4 顺序结构程序的设计 程序填空,不要改变与输入输出有关的语句。 一、求两个数的和与差。 输入整数 a和 b,计算并输出 a、b的和与差。 例: 输入 2 -8 输出 The sum is -6 Th

6、e difference is 10 import .*; 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); The difference is +diff); 二、求平方根。 输入 1 个实数 x,计算并输出其平方根。 例: 输入 输出 The square root of is import .*; import class T

7、est20002 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). 例:括号内是说明 输入 ( 华氏温度 ) 输出 The temprature is import class Test20003 public static void main(String args) Sca

8、nner 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=(); /*/ /* 计算两个时间之间的小时数和分钟数 */ hours=time2/100-time1/100; mins=time2%100-time1%100; /* 当计算得到的分钟数为负数时进行如下处理 */ hou

9、rs=mins0hours:hours-1; mins=mins0mins:mins+60; The train journey time is +hours+ hrs + mins+ mins.); 五、数字加密。 输入 1 个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然 后除以 10 取余,做为该位上的新数字, 最后将第 1 位和第 3 位上的数字互换, 第 2 位和第 4 位上的数字互换,组成加密后的新数。 例:括号内是说明 输入 1257 输出 The encrypted number is 4601(每一位上的数字加 9除以 10取余后,得0146, 交换后得到 460

10、1) 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 Test20006 public static void main(String args) throws IOException char c

11、h; ch=(char) /*/ ch+=32; ;perimeter=+(int)(perimeter*100+/100.); These sides do not correspond to a valid triangle); 例:括号内是说明 输入 2 (repeat=2) 5 5 3 1 1 4 输出 area=;perimeter= These sides do not correspond to a valid triangle import class Test30003 public static void main(String args) int ri, repeat;

12、float a, b, c, area, perimeter, s; Scanner in=new Scanner; repeat=(); for(ri=1; ric 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 ,最后输出 y。 例:括号内是说明 输入 3 (repeat=3) 2 -8 0 输出 1 (x=2时 y=1) -1 (x=-8

13、 时 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 IOException char ch; ch=(char) while(ch!=) if (A =

14、ch else if (a =ch 说明:对正数 y 保留两位小数的表达式 (int)(y*100+/ 或 (x)*100)/ 九、显示五级记分制成绩对应的百分制区间 输入一个正整数 repeat (0repeat10) ,做 repeat 次下列运算: 输入五级制成绩 (A E) ,输出相应的百分制成绩 (0 100) 区间,要求使用 switch 语句。 五级制成绩对应的百分制成绩区间为: A(90-100) 、B(80-89) 、C(70-79) 、D(60-69) 和 E(0-59), 如果输入不正确的成绩,显示 Invalid input。 输入输出示例:括号内是说明 输入 6 D、

15、 E 和无效的字符 j) A B C D E j(repeat=6 ,输入的五级成绩分别为 A、B、 输出 90-100 80-89 70-79 60-69 0-59 Invalid input import class Test30010 public static void main(String args) int repeat, ri; char ch; Scanner in=new Scanner; repeat=(); 输入 1个字符 */ for(ri = 1; ri = repeat; ri+) ch=().charAt(0); /* /*/ switch (ch) case

16、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. 求 1 1/2 1/3 1/n 1/n 。 输入一个正整数 repeat (0repeat10) ,做 repeat 次下列运算: 读入 1 个正整数 n( n=100) ,计算并输出 11/2 1/3 例:括号内

17、是说明 输入 2 (repeat=1) 2 10 输出 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 位小

18、数 (不足 4 位时,不必用 0 填满 4 位) 。(该序列从第 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=();

19、 /*/ a=1; ; public class Test40014 public 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=lc

20、m/gcd; the least common multiple:+lcm +, 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

21、ri, repeat; int i,n; float s,t; Scanner in=new Scanner; 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

22、 (repeat=2) 2 (n=2) 10 (n=10) 输出: public class Test50001 public static void 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;

23、 return f; /* 方法 fact(n) 也可以用以下递归算法设计 static double fact(int n) if(n=1) return 1; else return n*fact(n-1); */ 的返回 2. 求 a aaaaaaaa 输入一个正整数 repeat (0repeat10) ,做 repeat 次下列运算: 输入 2 个正整数 a 和 n, 求 a+aa+aaa+aa a(n 个 a) 之和。 要求定义并调用函数 fn(a,n) ,它的功能是返回 aa a(n 个 a) 。例如, fn(3,2) 值是 33。 例:括号内是说明 输入 2 (repeat=2

24、) 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 static 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 in

25、t 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 a,int n) if (n=1) return a; else return fn(a,n-1)*10+a; */ 3. 统计一个整数中数字的个数 输入一个正整数 repeat (0repeat10) ,做 repeat 次下列运算: 读入 1 个整数,统计并输出该数中 2 的个数。 number 中数字 要求定义并调用函数 countdigit(number,digit) ,

26、它的功能是统计整数 digit 的个数。例如, countdigit(10090,0) 的返回值是 3。 例:括号内是说明 输入: 3 (repeat=3) -21902 2 345543 输出: count=2 (-21902 中有 2个 2) count=1 ( 有 1 个 2) count=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(

27、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) 1 10 (m=1, n=10) 20 100 (m=20, n=100) 1000 6000 (m=1000, n=6000) 输出: 1 1 2

28、 3 5 8 (1到 10 之间的 Fibonacci 数 ) 21 34 55 89 (20 到 100 之间的 Fibonacci 数 ) 1597 2584 4181 (1000 到 6000 之间的 Fibonacci 数 ) import class Test50006 public static void main(String args) int ri,repeat; int i, m, n; long f; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) m=(); n=(); /*/ i=1; f=1;

29、 while(f=m) ); i+; f=fib(i); /*/ static long fib(int n) int i; long a=1,b=1,f=1; 副对角线为从矩阵的右上角至左下角的连 for(i=3;i=n;i+) 线) 例:括号内是说明 输入: 1 (repeat=1) 4 (n=4) 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 sum=35 (2+3+4+5+6+7+8=35) import class Test60011 public static void main(String args) int ri, repeat; int a,i,j,n,s

30、um; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); a=new intnn; for(i=0; in; i+) for(j=0;jn;j+) aij=(); sum=0; for(i=0; in-1; i+)加数与被加数都不大于 n, 分列第一行和 第一列 .( 将加数、被加数、和放入一个二维数组中 , 再输出该数组 ) 例:括号内是说明 输入: 1 (repeat=1) 3 (n=3) 输出: + 1 2 3 1 2 2 3 4 3 4 5 6 import class Test60012 public

31、 static void main(String args) int ri, repeat; int i,j,n,a=new int1010; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); for (i=1;i=n;i+) .,n ai0=i; .,n for(i=1;i=n;i+) 例:括号内是说明 输入: 1 (repeat=1) 3 2 (m=3, n=2) 6 3 1 -8 3 12 输出: sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 1

32、5 import class Test60014 public static void main(String args) int ri, repeat; int i,j,m,n,a,row; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) m=(); n=(); a=new intmn; row=new intm; for (i=0;im;i+) for (j=0;jn;j+) aij=(); for (i=0;im;i+) for (j=0;jn;j+) rowi+=aij; harAt(0)-0; for(ri=1

33、; ri=repeat; ri+) line=(); count=word=0; for (i=0;i();i+) c=(i); oCharArray(); harAt(0)-0; harAt(0)-0; harAt(0); 原字母 对应字母 A Z B Y C X D W X C Y B Z A 例:括号内是说明 输入: 3 ( 输入 3行字符串) A flag of USA IT12 oueiaba 输出: Z flag of FHZ RG12 oueiaba import class Test60024 public static void main(String args) int r

34、i, repeat, i; char ch; String str1,str2; Scanner in=new Scanner; repeat=().charAt(0)-0; for(ri=1; ri=repeat; ri+) str1=(); str2= ; ength ;j+) zij=xij+yij; /* 输出 */ static void prt(String s, int a) for (int i=0; i; i+) for (int j=0;jai. length ;j+) ); 计算该矩 1. 编写函数求矩阵最大值 60032 输入一个正整数 repeat (0repeat1

35、0) ,做 repeat 次下列运算: 读入 2 个正整数 m 和 n(1 m,n6), 再读入 1 个 mn 阶矩阵 a 阵元素的最大值。 要求:编写 max() ,返回矩阵元素的最大值。 例:括号内是说明 输入: 1 (repeat=1) 3 2 (m=3,n=2) 23 465 567 78 89 4 输出: max=567 import class Test60032 public static void main(String args) int ri, repeat; int a,i,j,m,n; Scanner in=new Scanner; repeat=(); for(ri=

36、1; ri=repeat; ri+) m=(); n=(); a=new intmn; for(i=0; im; i+) for(j=0;jn;j+) aij=(); max=+max(a); static int max( int b) int max=b00; for (int i=0;i;i+) for (int j=0;jbi. length ;j+) if (maxbij) max=bij; return max; 实验 13 未做和选做题 1. 求一元二次方程的根 输入一个正整数 repeat (0repeat10) ,做 repeat 次下列运算: 输入参数 a,b,c ,求一元

37、二次方程 a*x*x b*x c0 的根,结果保留 2 位小数 ( 如果答案 为,则直接显示为。 按情况分别输出以下内容(文字中的标点为西文标点,无空格。括号内为说明): 1) a=b=c=0,meaningless 3)x=值 4) x1=值 1 x2= 值 2 5) x1=值 1+值 2i x2= 值 1- 值 2i 2) a=b=0,c!=0,error 值为 -c/b ) (值 1 为 (-b+(d)/(2*a) ) (值 2 为 (d)/(2*a) ) 值 1为-b/(2*a) ,值 2为 (-d)/(2*a) ) 输入输出示例:括号内为说明 输入: 5 (repeat=5) 0 0

38、 0 (a=0,b=0,c=0) 0 0 1 (a=0,b=0,c=1) 0 2 5 (a=0,b=2,c=5) 21 89 35 (a=21,b=89,c=35) 2 2 3 (a=2,b=2,c=3) 输出: a=b=c=0,meaningless a=b=0,c!=0,error x= x1= x2= x1=+ x2= class Test30009 public static void main(String args) int repeat, ri; int a,b,c,d; double x1,x2; Scanner in=new Scanner; repeat=(); for(r

39、i = 1; ri =0) x1=(-b+(d)/(2*a); x2=(d)/(2*a); x1= +(x1*100)/; x2= +(x2*100)/; else x1=-( double )b/(2*a); x2=(-d)/(2*a); x1= +(x1*100)/+ + +(x2*100)/+ i ); x2= +(x1*100)/+ - +(x2*100)/+ i ); 说明:为防止出错,在编程前应考虑周全 当 a=b=c=0 时,方程有无数解; 当 a=b=0, c!=0 时,方程无解; 当 a=0, b!=0 时,方程解为 x=-c/b ; 当 a!=0 时,求: d=b*b-4*

40、a*c 若 d=0,有两个不同实根: x=(-b (d)/(2*a) 若 d=0) x1=(-b+(d)/(2*a); x2=(d)/(2*a); x1= +(x1*100)/; x2= +(x2*100)/; else x1=-( double )b/(2*a); x2=(-d)/(2*a); x1= +(x1*100)/+ + +(x2*100)/+ i ); x2= +(x1*100)/+ - +(x2*100)/+ i ); 2. 输出 mn之间的所有闰年 (未做 ) 输入一个 repeat(1repeat10) ,做 repeat 次下列运算: 输入正整数 m和 n( 1900=m=n=2100),分别代表年份的起止值,输出该范围内所有 的闰年。 判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。 输出使用语句 输入输出示例:括号内是说明 输入: 2 2000 2017 2030 2040 输出 2000 2004 2008 2012 2016 2032 2036 2040 import cla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论