1、二级 JAVA 机试-230 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下列程序中,分别计算 1,2,3,10 的阶乘,并输出计算结果,请将程序补充完整。程序运行结果如下:1!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=3628800源程序文件代码清单如下:public class ex01 1public static void main(String args)long 1Factorial;for(int i=1;i=10;i+)_;for(int j=2;_
2、;j+)_;System.out.println(i+“!=“+lFactorial);(分数:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:用 AWT 实现一个图形用户界面,包含一个 List 构件和一个 TextField 构件,List 中包含 5 个项目。要求选择不用的项目时,能在 TextField 构件中显示出相关的信息,包括事件的名称、选择的项目编号和项目的状态。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。源程序文件代码清单如下:import java.awt.*;import iava.awt
3、.event*;public class ex01_2 extends Frame implements ItemListenerprivate TextField tf;private List 1;public static void main(String arg)ex01_2 obj01_2=new ex01_2();public ex01 2()setBackgrcund(Color.GRAY);setTitle(“ex01_2“);l=new List(5);l.addItemListener(this);l.addItem(“Item1“);l.addItem(“Item2“);
4、l.addItem(“Item3“);l.addItem(“Item4“);l.addItem(“Item5“);add(“Center“,1);tf=new TextField(50);add(“South“,tf);_;show();public void itemStateChanged(ItemEvent event)tf.setText(_);(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改
5、动程序的结构,不得增行或删行。源程序文件代码清单如下:import java.awt.*;import java.applet.*;import java.awt.image.*;import java.util.*;import .*;/*applet code=“ex01_3.class“width=800 height=400/applet*/public class ex01_3 extends Appletprivate Image img;public void init()URL url=getCodeBase();img=getImage(url,“ex01_3.gif“);M
6、ediaTracker mt=new MediaTracker();mt.addImage(img,1);trymt.waitForAll();catch(Exception e)e.printStackTrace();setBackground(Color.black);public void paint(Graphics g)int thick=3,x=10,y=10;g.drawImage(img,x,y);g.setColor(Color.lightGray);int w = img.getWidth(this);int h = img.getHeight(this);for(int
7、i=0;ithick;i+)g.draw3DRect(x,y,w+(a*i),true);ex01_3.htmlHTMLHEADTITLEex01_3/TITLE/HEADBODYapplet code=“ex01_3.class“width=800 height=400/applet/BODY/HTML(分数:30.00)_二级 JAVA 机试-230 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下列程序中,分别计算 1,2,3,10 的阶乘,并输出计算结果,请将程序补充完整。程序运行结果如下:1!=12!=23!=64!=245!
8、=1206!=7207!=50408!=403209!=36288010!=3628800源程序文件代码清单如下:public class ex01 1public static void main(String args)long 1Factorial;for(int i=1;i=10;i+)_;for(int j=2;_;j+)_;System.out.println(i+“!=“+lFactorial);(分数:30.00)_正确答案:(lFactorial=1j=ilFactorial*=j)解析:解析 本题主要考查 for 循环语句和简单的数学计算。解题要点是熟练掌握 for 循环语
9、句,会解决一些简单的数学问题,熟悉求阶乘的算法,并用程序实现这一算法。本题中,第 1 个空,要对lFadorial 变量进行初始化,因为需要计算 110 一共 10 个数的阶乘,所以最外层循环共执行 10 次,每次都需要将 lFactorial 重新初始化为 1;第 2 个空,内层循环实现某个数的阶乘,因此循环变量的上界应该是 j=i;第 3 个空,阶乘算法的公式,做累乘运算。二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:用 AWT 实现一个图形用户界面,包含一个 List 构件和一个 TextField 构件,List 中包含 5 个项目。要求选择不用的项目
10、时,能在 TextField 构件中显示出相关的信息,包括事件的名称、选择的项目编号和项目的状态。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。源程序文件代码清单如下:import java.awt.*;import iava.awt.event*;public class ex01_2 extends Frame implements ItemListenerprivate TextField tf;private List 1;public static void main(String arg)ex01_2 obj01_2=new ex01_2();p
11、ublic ex01 2()setBackgrcund(Color.GRAY);setTitle(“ex01_2“);l=new List(5);l.addItemListener(this);l.addItem(“Item1“);l.addItem(“Item2“);l.addItem(“Item3“);l.addItem(“Item4“);l.addItem(“Item5“);add(“Center“,1);tf=new TextField(50);add(“South“,tf);_;show();public void itemStateChanged(ItemEvent event)t
12、f.setText(_);(分数:40.00)_正确答案:(pack()event.paramString()解析:解析 本题主要考查 AWT 的 List 和 TextField 构件的简单应用。解题关键是熟悉上述构件的基本使用方法,熟悉 Frame 构件的基本方法,会使用 ItemEvent 的 paramString()方法获得事件的基本信息。本题中,第 1 个空需要填入 pack(),否则图形用户界面无法正常显示;第 2 个空,调用 event 对象的paramString()方法来实现显示事件基本信息的功能。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet
13、 程序,其功能是绘制三维矩形以使该矩形面凹下,并将图像放入凹下的矩形面中。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序文件代码清单如下:import java.awt.*;import java.applet.*;import java.awt.image.*;import java.util.*;import .*;/*applet code=“ex01_3.class“width=800 height=400/applet*/public class ex01_3 extends Appletprivate Image img
14、;public void init()URL url=getCodeBase();img=getImage(url,“ex01_3.gif“);MediaTracker mt=new MediaTracker();mt.addImage(img,1);trymt.waitForAll();catch(Exception e)e.printStackTrace();setBackground(Color.black);public void paint(Graphics g)int thick=3,x=10,y=10;g.drawImage(img,x,y);g.setColor(Color.l
15、ightGray);int w = img.getWidth(this);int h = img.getHeight(this);for(int i=0;ithick;i+)g.draw3DRect(x,y,w+(a*i),true);ex01_3.htmlHTMLHEADTITLEex01_3/TITLE/HEADBODYapplet code=“ex01_3.class“width=800 height=400/applet/BODY/HTML(分数:30.00)_正确答案:(new MediaTracker(this)g.drawImage(img,x,y,this)g.draw3DRe
16、ct(-x,-y,w+(2*i),h+(2*i),false)解析:解析 本题主要考查 Applet 图形绘制和图像显示。解题的关键是掌握绘制三维矩形的基本方法,掌握 MediaTracker 的基本用法,熟悉图形界面的坐标分布以及通过简单的方法来获得坐标。本题中,第1 处,MediaTracker 类的对象初始化需要将 this 指针作为参数传递给该类的构造函数;第 2 处,Graphics 类的对象 g 调用 drawImage()方法显示从磁盘文件中读取的 Image 对象,第 4 个参数需要将this 作为参数传递给该方法;第 3 处,g 调用 draw3DRect()方法绘制三维矩形,最后一个参数为 false表示矩形是凹下的,相反为凸起,第 1 个和第 2 个参数做递减是为了让显示效果看起来是矩形的左上方和图像的左上方有一定的距离,让人感觉矩形将图像包含在内。程序运行结果如下。