1、二级 JAVA 机试-148 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面程序是关于类的继承的用法。阅读下面程序,根据程序中的注释在每一条横线处填写一个语句,使程序的功能完整,且运行程序后的输出结果为:I am parentclass!I am childclass!I am childclass!注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。class Parent void printMe() System. out. println( “I am parentclass ! “);cl
2、ass Child extends Parent void printMe() System. out. println( “I am childclass! “)void printAll() _. printMe(); /调用父类的方法_. printMe(); /调用本类的方法printMe ( );public class TestJieCheng public static void main(String args) _myC. printAll();(分数:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序。程序的功能是利用迭代法求一个数
3、的平方根(求平方根的迭代公式为:Xn+1=1/2(Xn+a/Xn)注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。public class PingFangGenpublic static void main(String args)System. out. println(Math, sqrt(2.0);static double sqrt(_)double x=1.0do_while( Math. abs(x*x-a)/ale-6)return x;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,
4、其功能是输入 3 个双精度浮点数:a,b,c,构成一个一元二次方程,a*x*x+b*x+c=0,其判别式 d=b*b-4*a*c,若 d 为负数则输出“没有实根”,否则打印出 2 个实根。要求,有 3 个输入框,输入 a,b,c,一个按钮,点击实现求根过程,一个不可编辑的文本区,用作输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。import java. io. *import java. awt. *import java. awt. event. *import java. applet. Applet;/*applet co
5、de=“ex3_1. class“ width=800 height=400/applet*/public class ex3_1 extends Applet implements ActionListenerPanel pane= new Panel();Label 11=new Label(“a: “)TextField tf1 =new TextField(5)Label 12 = new Label (“b: “)TextField tf2=new TextField(5);Label 13=new Label(“c:“)TextField tf3=new TextField(5);
6、Button btn= new Button(“OK“)Label 14=new Label(“答案“)TextField tf4=new TextField(20);ex3_1 obj3_1public void init()pane. setLayout( new FlowLayout (FlowLayout. LEFT, 10,5 ) )pane. add(11)pane. add(tf1)pane. add(12)pane. add(tf2)add( “North“, pane)Panel p2=new Panel();p2. setLayout ( new FlowLayout (
7、FlowLayout. LEFT, 10, 5) )p2. add(13);p2. add(tf3)p2. add(btn)btn. addActionListener(this);add(“Center“,p2)Panel p3=new Panel ()p3. setLayout ( new FlowLayout (FlowLayout. LEFT, 10,5 ) )p3. add(14)tf4. setEditable(false)p3. add(tf4)add(“South“ ,p3)obj3_1 = new ex3_1 ( )public void doReal(double a1,d
8、ouble a2,double a3,TextField tf)double d, x1, x2d=a1 * a1-4.0 * a2 * a3;if(d=0.0)x1=(-a2+Math. sqrt(d)/(2.0 * a1);x2=(-a2+Math. sqrt(d)/(2.0 * a1);tr. setText(“2 个实根:x1=“+x1+“/nx2=“+x2);else tr. setText ( “没有实根!“)public void actionPerformed(ActionEvent ae)double a, b, c;trya= new Double(tf1. getText
9、( ) ). doubleValue( );b= new Double(tf2. getText( ) ). doubleValue( );c= new Double(tf3. getText( ) ). doubleValue( );obj3_1, doReal(a,b,c, 14);catch(NumberFormatException nfe) tf4. setText( “wrong number!“)ex3_l. htmlHTMLHEADTITLE ex3_l /TITLE/HEADBODYapplet code=“ex3_l, class“ width=800 height=400
10、/applet/BODY/HTML(分数:30.00)_二级 JAVA 机试-148 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面程序是关于类的继承的用法。阅读下面程序,根据程序中的注释在每一条横线处填写一个语句,使程序的功能完整,且运行程序后的输出结果为:I am parentclass!I am childclass!I am childclass!注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。class Parent void printMe() System. out. println
11、( “I am parentclass ! “);class Child extends Parent void printMe() System. out. println( “I am childclass! “)void printAll() _. printMe(); /调用父类的方法_. printMe(); /调用本类的方法printMe ( );public class TestJieCheng public static void main(String args) _myC. printAll();(分数:30.00)_正确答案:(superthisChild myC=new
12、 Child();)解析:解析 本题主要考查 super,this 关键字以及如何生成对象。主要是熟练 super,this 的用法、对象的生成。在本题中,superprintMe();浯句的功能是调用父类的 printMe()方法,thisprintMe ();语句的功能是调用本类的 printMe()方法,Child myC=new Child();语句的功能是生成 Child 类的对象 myC。二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为:Xn+1=1/2(Xn+a/Xn)注意:请勿改动 ma
13、in()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。public class PingFangGenpublic static void main(String args)System. out. println(Math, sqrt(2.0);static double sqrt(_)double x=1.0do_while( Math. abs(x*x-a)/ale-6)return x;(分数:40.00)_正确答案:(double ax=(x+a/x);)解析:解析 本题主要考查 do-while 循环语句及 Java 的基本运算。do-while 循环又称“直到型”循环,
14、它的一般格式为:初始化部分do循环体部分;迭代部分;while(判断部分);。说明如下:(1)do-while 结构首先执行循环体,然后计算终止条件,若结果为 true,则循环执行大括号中的语句或代码块,直到布尔表达式的结果为 false。(2)与 while 结构不同的是,do-while 结构的循环至少被执行一次,这是“直到型”循环的特点。在本题中,double a 语句是定义一个 double 型变量 a,x=(x+a/x);语句的功能是迭代求出被开平方的变量。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是输入 3 个双精度浮点数:a,b,c
15、,构成一个一元二次方程,a*x*x+b*x+c=0,其判别式 d=b*b-4*a*c,若 d 为负数则输出“没有实根”,否则打印出 2 个实根。要求,有 3 个输入框,输入 a,b,c,一个按钮,点击实现求根过程,一个不可编辑的文本区,用作输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。import java. io. *import java. awt. *import java. awt. event. *import java. applet. Applet;/*applet code=“ex3_1. class“ widt
16、h=800 height=400/applet*/public class ex3_1 extends Applet implements ActionListenerPanel pane= new Panel();Label 11=new Label(“a: “)TextField tf1 =new TextField(5)Label 12 = new Label (“b: “)TextField tf2=new TextField(5);Label 13=new Label(“c:“)TextField tf3=new TextField(5);Button btn= new Button
17、(“OK“)Label 14=new Label(“答案“)TextField tf4=new TextField(20);ex3_1 obj3_1public void init()pane. setLayout( new FlowLayout (FlowLayout. LEFT, 10,5 ) )pane. add(11)pane. add(tf1)pane. add(12)pane. add(tf2)add( “North“, pane)Panel p2=new Panel();p2. setLayout ( new FlowLayout ( FlowLayout. LEFT, 10,
18、5) )p2. add(13);p2. add(tf3)p2. add(btn)btn. addActionListener(this);add(“Center“,p2)Panel p3=new Panel ()p3. setLayout ( new FlowLayout (FlowLayout. LEFT, 10,5 ) )p3. add(14)tf4. setEditable(false)p3. add(tf4)add(“South“ ,p3)obj3_1 = new ex3_1 ( )public void doReal(double a1,double a2,double a3,Tex
19、tField tf)double d, x1, x2d=a1 * a1-4.0 * a2 * a3;if(d=0.0)x1=(-a2+Math. sqrt(d)/(2.0 * a1);x2=(-a2+Math. sqrt(d)/(2.0 * a1);tr. setText(“2 个实根:x1=“+x1+“/nx2=“+x2);else tr. setText ( “没有实根!“)public void actionPerformed(ActionEvent ae)double a, b, c;trya= new Double(tf1. getText( ) ). doubleValue( );
20、b= new Double(tf2. getText( ) ). doubleValue( );c= new Double(tf3. getText( ) ). doubleValue( );obj3_1, doReal(a,b,c, 14);catch(NumberFormatException nfe) tf4. setText( “wrong number!“)ex3_l. htmlHTMLHEADTITLE ex3_l /TITLE/HEADBODYapplet code=“ex3_l, class“ width=800 height=400/applet/BODY/HTML(分数:3
21、0.00)_正确答案:(d=a2*a2-4.0*a1*a3x2=(-a2-Mathsqrt(d)/(2.0*a1)obj3_1.doReal(a,b,c,tf4)解析:解析 本题主要考查 Applet 窗口编程和 AWT 基本构件的使用和事件处理机制以及一元二次方程组的求根公式。解题关键是熟悉基本组件 Button,Panel,Label 等的用法和事件处理机制,熟悉一元二次方程组的求解,会使用 Math 类中给出的常用方法进行简单的数学计算。本题中,第 1 处,求判别式,注意判别式的公式是 d= b*b-4*a*c,弄清楚 doReal()方法中的参数对应的关系;第 2 处,求根公式的表示,应该- a2-Mathsqrt(d),否则,两个根一样;第 3 处,对象。obj3_1 调用 doReal()方法时,注意,最后 1 个参数是 TextField 类的对象,而不是 Label 类的对象。