1、二级 JAVA 机试 86 及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下面程序执行结果为: 11=1 21=2 22=4 31=3 32=6 33=9 91=9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 99=81 请在每条横线处填写一个语句,使程序的功能完整。注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class ForLoopStatement public static void main(String args) int
2、m,n; for(m=1; m10; _) _ System.out.print(m+“*“+n+“=“+m*n+“ “); _ (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java 程序:计算下列级数之和,直到该项之绝对值小于 0.001 为止。 S=1/1!-1/2!+1/3!-1/4!+ 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下: i=1 s=1.0 i=2 s=0.5 i=3 s=0.6666666666666666 i=4 s=0.625 i=5 s=0.633333333333
3、3333 i=6 s=0.6319444444444444 public class ex1_1 public static void main(String args) double s=0.0,sign=-1.0,t,f=1.0; for (int i=1;i+) f=f*i; _; t=sign/f; if(_) break; s=s+t; System.out.println( “i= “+i+“ s=“+s); (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,程序的功能是用鼠标点击画图。本题是通过点击鼠标后画出一个“Ja
4、va”字。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或减行。 import java. awt.* import java. awt. event.*; import java. applet.* /* applet code= SimpleHitMouse. java width= 800 height= 400 /applet */ public class SimpleHitMouse Uimplements/U Applet private java. util. Vector points= new java. util. Vec
5、tor(); public void init() addMouseListener(new MouseAdapter () public void mousePressed(MouseEvent e) ( points, add (new Point (e. getX( ), e. getY ( ) ) ); Upaint( )/U; ); public void update(Graphics g) Urepaint(g)/U; public void paint(Graphics g) for(int i=0;ipoints, size() ;i+) Point dot= (Point)
6、points. elementAt(i); g. drawString(“x“ ,dot. x,dot, y), public static void main(String args) Frame fram=new Frame(“CelayTree“); SimpleHitMouse dot=new SimpleHitMouse(); dot. init( ); dot. start(); fram. add( “Center“, dot) fram. setSize(400,300); fram. addWindowListener(new WindowAdapter() public v
7、oid windowClosing(WindowEvent e) System. exit(0); ); fram.show() exl_2.html: html head titleA Simple program/title /head body applet code=“SimpleHitMouse, class“ width=800 height=400 /applet /body /html(分数:30.00)_二级 JAVA 机试 86 答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.下面程序执行结果为: 11=1 21
8、=2 22=4 31=3 32=6 33=9 91=9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 99=81 请在每条横线处填写一个语句,使程序的功能完整。注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class ForLoopStatement public static void main(String args) int m,n; for(m=1; m10; _) _ System.out.print(m+“*“+n+“=“+m*n+“ “); _ (分数:30.00)_正确答案:()解析:m+
9、 for(n=1;n=m;n+) Systemoutprintln(); 解析 本题考查 Java 的循环语句。本题中 m+;语句是使循环变量的值递增 1,第一个 for (m=1;m10;m+)循环语句是用来控制乘法表的行输出,那么还要用一个 for 循环语句来实现控制列的输出。这个列的变量 n 要注意,它总是小于等于 m 的,所以应有 for(n=1;n =m;n+);语句 Systemoutprintln();是用来换行输出。二、B2简单应用题/B(总题数:1,分数:40.00)2.请完成下列 Java 程序:计算下列级数之和,直到该项之绝对值小于 0.001 为止。 S=1/1!-1/
10、2!+1/3!-1/4!+ 注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。程序运行结果如下: i=1 s=1.0 i=2 s=0.5 i=3 s=0.6666666666666666 i=4 s=0.625 i=5 s=0.6333333333333333 i=6 s=0.6319444444444444 public class ex1_1 public static void main(String args) double s=0.0,sign=-1.0,t,f=1.0; for (int i=1;i+) f=f*i; _; t=sign/f; if(
11、_) break; s=s+t; System.out.println( “i= “+i+“ s=“+s); (分数:40.00)_正确答案:()解析:sign=-sign Mathabs(t)0.001 解析 本题主要考查 for 循环和条件语句控制程序流程。解题关键是会根据公式写出相应的算法解决问题。本题中,第 1 个空,由于公式里每一项的符号都是交替变化的,所以这里需要改变符号;第 2 个空,判断是否中断循环的条件,需要用 Math.abs()方法来进行绝对值的比较。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,程序的功能是用鼠标点击画图。本题
12、是通过点击鼠标后画出一个“Java”字。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或减行。 import java. awt.* import java. awt. event.*; import java. applet.* /* applet code= SimpleHitMouse. java width= 800 height= 400 /applet */ public class SimpleHitMouse Uimplements/U Applet private java. util. Vector points= new
13、java. util. Vector(); public void init() addMouseListener(new MouseAdapter () public void mousePressed(MouseEvent e) ( points, add (new Point (e. getX( ), e. getY ( ) ) ); Upaint( )/U; ); public void update(Graphics g) Urepaint(g)/U; public void paint(Graphics g) for(int i=0;ipoints, size() ;i+) Poi
14、nt dot= (Point)points. elementAt(i); g. drawString(“x“ ,dot. x,dot, y), public static void main(String args) Frame fram=new Frame(“CelayTree“); SimpleHitMouse dot=new SimpleHitMouse(); dot. init( ); dot. start(); fram. add( “Center“, dot) fram. setSize(400,300); fram. addWindowListener(new WindowAda
15、pter() public void windowClosing(WindowEvent e) System. exit(0); ); fram.show() exl_2.html: html head titleA Simple program/title /head body applet code=“SimpleHitMouse, class“ width=800 height=400 /applet /body /html(分数:30.00)_正确答案:()解析:extends repaint() paint(g) 解析 本题主要考查 Java Applet 程序的编写、Java 程序
16、事件处理机制。编写 Applet 小程序必须要用到 javaappelt 包中的 Applet 类, javaappletAppletjavaawtPanel 的子类。在 Applet 中,Applet 的显示更新是由一个专门的 AWT 线程控制的。与 Applet 显示相关的 3 个方法:(1)paint()方法。Applet 的 paint()方法具体执行Applet 的绘制。该方法的定义如下: public void paint(Graphics g),paint()方法有一个参数 g 是Graphics 类的实例,该实例对象由浏览器生成,它包含了 Applet 的图形上下文信息,通过它
17、向 Applet中显示信息,该对象相当于 Applet 的画笔。(2)update()方法。该方法的定义如下:public void update(Graphics g),update()方法用于更新 Applet 的显示。该方法将首先清除背景,再调用 paint()方法完成 applet 的具体绘制。(3)repaint()方法。repaint()方法的定义如下:public void repaint(),该方法主要用于 Applet 的重新显示,它调用 update()方法实现对 Applet 的更新。在本题中,extends 关键字用于继承父类,repaint(),paint()方法都用于 Applet 的重新显示。