1、二级 JAVA 机试-222 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面程序的功能是将数组 array 下标为奇数的元素相乘(数组的位置是从 0 开始的),并将乘积存放到变量 total 中。请在程序的每条横线处填写个位运算符,使程序的功能完整。注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。源程序代码文件清单如下:public class JiShuJipublic static void main(String args)int array =1,2,3,5,7,9;long total=
2、for(int i=1;i=_;i+)_;i+;System.out.println(total);(分数:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为: Xn+1=1/2(Xn+a/Xn)。注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。源程序代码文件清单如下:public class PingFangGenpublic static void main(String args )System.out.println(Math.sqrt(2.0);
3、static double sqrt(_)double x=1.0;do_;while(Math.abs(x*x-a)/a1e-6);return x;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,实现实心或者空心矩形的绘制。要求鼠标在 Applet 窗口中拖动实现矩形的绘制,可以选择填充或者空心,按钮用来清空窗口中的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序代码文件清单如下:import java.awt.*;import java.applet.*;/*app
4、let code=“ex16_3.class“ width=800 height=400/applet*/public class ex16_3 extends Appletprivate Button btnClear;private CheckboxGroup cbg;private Checkbox chk1, chk2;private int upX, upY;private int downX, downY;private boolean bDraw, bClear, bStyle;public void init()bDraw = false;bClear = false;bSty
5、le = false;setLayout(null);cbg = new CheckboxGroup();chk1 = new Checkbox(“Hollow“, cbg, true);chk2 = new Checkbox(“Filled“, cbg, false);chk1.reshape(80,getSize().height-80,80,25);chk2.reshape(160,getSize().height-80,80,25);add(chk1);add(chk2);btnClear = new Button(“ctear“);btnClear.reshape(240,getSi
6、ze().height-80,80,25);add(btnClear);public void paint(Graphics g)if (bDraw)if(upXdownX elseg.drawRect(downX, downY, upX-downX, upY-downY);else if(upXdownXelseg.drawRect(downX, upY, upX - downX, downY - upY);else if(upXdownX elseg.drawRect(upX, downY, downX-upX, upY-downY);else if(upXdownX elseg.draw
7、Rect(upX, upY, downX-upX, downY-upY);bDraw = false;if (bClear)g.clearRect(0,0, getSize().height, getSize().width);bClear = false;public void update(Graphics g)paint(g);public boolean mouseUp(Event e, int x, int y)upX=x;upY=y;bDraw=true;repaint();return true;public boolean mouseDown(Event e, int x, i
8、nt y)downX=x;downY=y;return true;public boolean action(Event e, Object o)if(e.target=btnClear)bClear=true;repaint();if(chk1.getState()=true)bStyle=true;if(chk2.getState()=true)bStyle=false;return true;ex9_3.htmlHTMLHEADTITLEex9_3/TITLE/HEADBODYapplet code=“ex9_3.class“ width=800 height=400/applet/BO
9、DY/HTML(分数:30.00)_二级 JAVA 机试-222 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下面程序的功能是将数组 array 下标为奇数的元素相乘(数组的位置是从 0 开始的),并将乘积存放到变量 total 中。请在程序的每条横线处填写个位运算符,使程序的功能完整。注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。源程序代码文件清单如下:public class JiShuJipublic static void main(String args)int array =1,2,3,
10、5,7,9;long total=for(int i=1;i=_;i+)_;i+;System.out.println(total);(分数:30.00)_正确答案:(1array.length-1total*=arrayi)解析:解析 本题主要考查 for 循环语句和数组的知识。解答本题的关键是熟练掌握 for 循环语句和数组的知识。一个 for 循环语句一般应包含 4 部分内容。初始化部分:用来设置循环控制的一些初始条件,如设置计数器等。循环体部分:这是反复执行的一段代码,可以是单一的一条语句,也可以是复合语句(代码块)。迭代部分;用来修改循环控制条件。常常在本次循环结束,下一次循环开始前
11、执行。例如,使计数器递增或递减。判断部分:也称终止部分。是一个关系表达式或逻辑表达式,其值用来判断是否满足循环终止条件。每执行一次循环都要对该表达式求值。解答循环语句时要抓住这 4 个部分。二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序。程序的功能是利用迭代法求一个数的平方根(求平方根的迭代公式为: Xn+1=1/2(Xn+a/Xn)。注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。源程序代码文件清单如下:public class PingFangGenpublic static void main(String args )
12、System.out.println(Math.sqrt(2.0);static double sqrt(_)double x=1.0;do_;while(Math.abs(x*x-a)/a1e-6);return x;(分数:40.00)_正确答案:(double ax=(x+a/x)解析:解析 本题主要考查 do-while 循环语句及 Java 的基本运算。解答本题需要对 do-while 循环语句的用法熟练。do-while 循环又称“直到型”循环,它的一般格式为:初始化部分do循环体部分;迭代部分;while(判断部分)。说明如下:do-while 结构首先执行循环体,然后计算终止条
13、件,若结果为true,则循环执行大括号中的语句或代码块,直到布尔表达式的结果为 false。与 while 结构不同的是,do-while 结构的循环至少被执行 1 次,这是“直到型”循环的特点。在本题中,double a 语句是定义一个 double 型变量 a,x=(x+a/x)的功能是迭代求出被开方的变量。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,实现实心或者空心矩形的绘制。要求鼠标在 Applet 窗口中拖动实现矩形的绘制,可以选择填充或者空心,按钮用来清空窗口中的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动
14、程序的结构,不得增行或删行。源程序代码文件清单如下:import java.awt.*;import java.applet.*;/*applet code=“ex16_3.class“ width=800 height=400/applet*/public class ex16_3 extends Appletprivate Button btnClear;private CheckboxGroup cbg;private Checkbox chk1, chk2;private int upX, upY;private int downX, downY;private boolean bDr
15、aw, bClear, bStyle;public void init()bDraw = false;bClear = false;bStyle = false;setLayout(null);cbg = new CheckboxGroup();chk1 = new Checkbox(“Hollow“, cbg, true);chk2 = new Checkbox(“Filled“, cbg, false);chk1.reshape(80,getSize().height-80,80,25);chk2.reshape(160,getSize().height-80,80,25);add(chk
16、1);add(chk2);btnClear = new Button(“ctear“);btnClear.reshape(240,getSize().height-80,80,25);add(btnClear);public void paint(Graphics g)if (bDraw)if(upXdownX elseg.drawRect(downX, downY, upX-downX, upY-downY);else if(upXdownXelseg.drawRect(downX, upY, upX - downX, downY - upY);else if(upXdownX elseg.
17、drawRect(upX, downY, downX-upX, upY-downY);else if(upXdownX elseg.drawRect(upX, upY, downX-upX, downY-upY);bDraw = false;if (bClear)g.clearRect(0,0, getSize().height, getSize().width);bClear = false;public void update(Graphics g)paint(g);public boolean mouseUp(Event e, int x, int y)upX=x;upY=y;bDraw
18、=true;repaint();return true;public boolean mouseDown(Event e, int x, int y)downX=x;downY=y;return true;public boolean action(Event e, Object o)if(e.target=btnClear)bClear=true;repaint();if(chk1.getState()=true)bStyle=true;if(chk2.getState()=true)bStyle=false;return true;ex9_3.htmlHTMLHEADTITLEex9_3/
19、TITLE/HEADBODYapplet code=“ex9_3.class“ width=800 height=400/applet/BODY/HTML(分数:30.00)_正确答案:(g.clearRect(0,0,getSize()width,gets ize()height)bStyle=falsebStyle=true)解析:解析 本题主要考查 Applet 图形界面编程与鼠标事件相结合进行简单的图形绘制。解题关键是熟悉 Applet 中的事件机制,会利用鼠标事件进行简单的矩形绘制,通过 mouseUp(), mouseDown()来获取鼠标移动的坐标,熟悉 CheckboxGroup 类 Checkbox 的用法,通过 Checkbox 来控制矩形是否填充。本题中,第 1 个空,对象 g 的方法 clearRect()的最后两个参数应该对调,因为第 3 个参数是代表矩形的宽度,第 4 个是高度;第 2 个空,第 1 个 Checkbox 不用填充,这里 bStyle=false 是表示用填充;第 3 个空,和第 2 个空正好相反。