1、计算机二级 JAVA-35 及答案解析(总分:30.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:-1.00)1.下列程序中,给出两个整数 2 和 3,分别求 2 除以 3 和 2 乘以 3 的结果,要求调用类 ex1_1 的方法method()来输出相应的结果,请将程序补充完整。程序运行结果如下: 0.6666666666666666 6 public class ex1_1 public static void main(Stringargs) int n1=2,n2=3; ex1_1 obj1_1=new ex1_1(); obj1_1. _; public vo
2、id method(int x,int y) System.out.println(_); System.out.println(_); (分数:-1.00)_二、B2简单应用题/B(总题数:1,分数:1.00)2.请完成下列 Java 程序:假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分 3 次,每次 50 元将钱汇入。编写一个程序,模拟实际作业。要求实现 2 个类,一个是银行类,一个是顾客类。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下: Customer2 :sum= 50 Custo
3、mer1 :sum= 50 Customer1 :sum= 100 Customer2 :sum= 100 Customer1 :sum= 150 Customer2 :sum= 150 class bank private static int sum=0; public static void add(int.n,char c) int tmp=sum; _; try Thread.sleep(int) (2000-500+1)*(Math.random()+500); catch(InterruptedException e) sum=tmp; System.out.println(“C
4、ustomer“+c+“ :sum= “+sum); class customer extends Thread static char flag17_2 = 1; public void run() char myflag17_2; synchronized(this) myflag17_2 = flag17_2+; for(int i=1;i=3;i+) _; public class ex17_2 public static void main(String args) customer c1=new customer(); customer c2=new customer(); c1.
5、start(); c2.start(); (分数:1.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是从 3100 之间(包括 3 和 100)每隔 0.5 秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.awt.*; import java.applet.Applet; /* applet code=ex15_3.class width=800 height=400
6、/applet */ public class ex15_3 extends Applet public Color color15_3 = Color.black; private int n15_3 = 3; public myPrime thPrime15_3; public void init() thPrime15_3 = new myPrime(this); thPrime15_3.start(); public void paint(Graphics g) g.setColor(color15_3); g.UdrawString(n15_3, 50, 50)/U; public
7、int getInt() return n15_3; public void setInt(int i) n15_3=i; class myPrime extends Thread ex15_3 obj15_3; myPrime (ex15_3 o) this.obj15_3 = o; public boolean isPrime(int n) boolean bPrime = true; int i=2; if(n3|n100) return false; while(in-1 i+; return bPrime; public void run() int i; for (i=3;Ui10
8、0/U; i+) if (isPrime(i)obj15_3.color15_3 = Color.gray; else obj15_3.color15_3 = Color.green; Uobj15_3.n15_3;/U obj15_3.repaint(); try sleep(500); catch (InterruptedException ie) U /U B ex15_3.html/B HTML HEAD TITLEex15_3/TITLE /HEAD BODY applet code=“ex15_3.class“ width=800 height=400 /applet /BODY
9、/HTML(分数:30.00)_计算机二级 JAVA-35 答案解析(总分:30.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:-1.00)1.下列程序中,给出两个整数 2 和 3,分别求 2 除以 3 和 2 乘以 3 的结果,要求调用类 ex1_1 的方法method()来输出相应的结果,请将程序补充完整。程序运行结果如下: 0.6666666666666666 6 public class ex1_1 public static void main(Stringargs) int n1=2,n2=3; ex1_1 obj1_1=new ex1_1(); obj1_
10、1. _; public void method(int x,int y) System.out.println(_); System.out.println(_); (分数:-1.00)_正确答案:(method(n1,n2) (double)x/y x*y)解析:解析 本题主要考查 Java 语言的数据类型和结构以及不同数据类型之间的转换,和对象调用方法以及基本的运算操作。解题关键是熟悉 Java 语言的基本数据类型和类型之间的转换,用类的对象来调用方法,以及熟悉 Java 语言的基本运算。在本题中,第一空通过类 ex1_1 的对象 obj1_1 调用类 ex1_1 的方法 method(
11、),将变量 n1 和 n2 作为参数传递给方法。第二空由于 x, y 都是 int,则 x/y 的结果为0.666,这会转换为 int,其值为 0。所以要对数据进行类型转换,将 x 转换为 double 型则 y 也转换为 double 型,因此结果为 double,值为 0.666.。第三空无需做类型转换,直接输出 x*y 的值 6 即可。二、B2简单应用题/B(总题数:1,分数:1.00)2.请完成下列 Java 程序:假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分 3 次,每次 50 元将钱汇入。编写一个程序,模拟实际作业。要求实现 2 个类
12、,一个是银行类,一个是顾客类。 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下: Customer2 :sum= 50 Customer1 :sum= 50 Customer1 :sum= 100 Customer2 :sum= 100 Customer1 :sum= 150 Customer2 :sum= 150 class bank private static int sum=0; public static void add(int.n,char c) int tmp=sum; _; try Thread.sleep(int) (2
13、000-500+1)*(Math.random()+500); catch(InterruptedException e) sum=tmp; System.out.println(“Customer“+c+“ :sum= “+sum); class customer extends Thread static char flag17_2 = 1; public void run() char myflag17_2; synchronized(this) myflag17_2 = flag17_2+; for(int i=1;i=3;i+) _; public class ex17_2 publ
14、ic static void main(String args) customer c1=new customer(); customer c2=new customer(); c1.start(); c2.start(); (分数:1.00)_正确答案:(tmp=tmp+n bank.add(50,myflag17_2)解析:解析 本题主要考查线程的同步和设计简单的类来模拟现实问题的简单应用。解题关键是熟练掌握面向对象的编程思想,熟悉 Java 线程的同步编程,会使用 Math 类的随机数方法。本题中,第 1 个空,银行类对客户的存款进行累加;第 2 个空,在客户类中,通过使用银行类的对象
15、bank 调用 add()方法实现 3 次汇款的操作,将钱数和客户标志作为参数传递给 add()方法。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是从 3100 之间(包括 3 和 100)每隔 0.5 秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.awt.*; import java.applet.Applet; /* applet code=ex15_3.class w
16、idth=800 height=400 /applet */ public class ex15_3 extends Applet public Color color15_3 = Color.black; private int n15_3 = 3; public myPrime thPrime15_3; public void init() thPrime15_3 = new myPrime(this); thPrime15_3.start(); public void paint(Graphics g) g.setColor(color15_3); g.UdrawString(n15_3
17、, 50, 50)/U; public int getInt() return n15_3; public void setInt(int i) n15_3=i; class myPrime extends Thread ex15_3 obj15_3; myPrime (ex15_3 o) this.obj15_3 = o; public boolean isPrime(int n) boolean bPrime = true; int i=2; if(n3|n100) return false; while(in-1 i+; return bPrime; public void run()
18、int i; for (i=3;Ui100/U; i+) if (isPrime(i)obj15_3.color15_3 = Color.gray; else obj15_3.color15_3 = Color.green; Uobj15_3.n15_3;/U obj15_3.repaint(); try sleep(500); catch (InterruptedException ie) U /U B ex15_3.html/B HTML HEAD TITLEex15_3/TITLE /HEAD BODY applet code=“ex15_3.class“ width=800 heigh
19、t=400 /applet /BODY /HTML(分数:30.00)_正确答案:(String.valueOf(n15_3) i101 或者 i=100 obj15_3.setInt(i)解析:解析 本题主要考查线程的概念和使用, Applet 的执行过程和窗口,for 循环语句,以及字符串和 int 型的数据转换,及面向对象编程的基本思想。解题关键是熟练地将 Applet 的执行和线程的基本思想结合完成一定的综合性的应用;熟练掌握线程的建立、运行以及线程类与封装类之间的信息传递方式,即通过对象调用封装的方法来进行,如语句 obi15_3.repaint()。本题中,第 1 处,不可以直接填入n15_3,会导致参数类型不符合的错误,应该用 String 类的 valueOf()方法对 int 型数据进行转换得到String 类型数据:第 2 处,注意题目要求,需要包括 3 和 100,因此循环变量的上界应该是 i101 或者 i100;第 3 处,由于 n15_3 是类 ex15_3 的私有成员变量,因此不可以直接用对象 obj15_3 来调用这个成员变量,需要通过类 ex15_3 的方法 setInt()来实现对私有成员的修改。