1、二级 JAVA 机试-221 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.请在下面程序中的每条横线处填写一个语句,使程序的功能完整。程序的输出结果为:TIME=1867b=9i=123注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。源程序文件代码清单如下:import java.io.*;public class DataTypepublic _ void main(String args)byte b;int i;/定义变量 i 为 int 类型_/定义常量 TIME 为整型,且值为 1867i=
2、123;/给变量 i 赋值,该值为十进制的 123_/给变量赋值,改值为八进制的 11,十进制的 9System.out.println(“TIME“+TIME);System.out.println(“b=“+b);System.out.println(“i=“+i);(分数:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:建立一个 Applet 程序,包括创建一个画布构件、一个面板构件,面板构件上包含 3 个按钮,用来设置画布和面板的背景颜色,这 3 个按钮(Red、Green、Blue)分别控制画布和面板背景色改变为 3 原色,即红、绿、蓝。
3、要求画布宽度为 300,高度为 200。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。源程序文件代码清单如下:import java.awt.*;import java.applet.*;/*applet code=“ex10_2.class“ width=800 height=400 /applet*/public class ex10_2 extends Appletprivate Panel pane110_2;private Canvas canvas10_2;private Button btn1, btn2, btn3;public void i
4、nit()canvas10_2=new Canvas();canvas10_2. _;canvas10_2.setBackground(Color.black);add(canvas10_2);pane110_2 = new Panel();pane110_2.setBackground( Color.black );btn1 = new Button( “Red“ );btn2 = new Button( “Green“ );btn3 = new Button( “Blue“ );pane110_2.add( btn1 );pane110_2.add( btn2 );pane110_2.ad
5、d( btn3 );_;public boolean action( Event e, Object o )if( e.target = btn1 )pane110_2.setBackground( Color.red );canvas10_2.setBackground( Color.red );else if( e.target = btn2 )pane110_2.setBackground( Color.green );canvas10_2.setBackground(Color.green);else if( e.target = btn3 )canvas10_2.setBackgro
6、und( Color.blue );pane110_2.setBackground( Color.blue );return true;(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是构造 n 阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如 3 阶魔方阵为8 1 63 5 74 9 2要求用 Applet 实现上述魔方阵。窗口中包括提示栏,提示输入 015 之间的奇数;输入框,输入方阵的阶数;按钮;点击则输出魔方阵;画布用于输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:
7、不改动程序的结构,不得增行或删行。源程序文件代码清单如下:import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.lang.Math.*;/*applet code=“ex10_3.class“ width=800 height=400/applet*/public class ex10_3 extends Applet implements ActionListenerPanel pane=new Panel();drawWnd dw;Label 11 = new Label(“输入(01
8、5 的奇数): “);TextField tf1 = new TextField(5);Button btn = new Button(“OK“);int a=new int16 16;int n=15;public void init()pane.setLayout(new FlowLayout(FlowLayout.CENTER, 25,5);pane.add(11);pane.add(tf1);pane.add(btn);pane.addActionListener(this);add(“North“,pane);dw=new drawWnd();add(“South“,dw);clas
9、s drawWnd extends CanvasdrawWnd ( )setSize(300,300);setBackground(Color.GRAY);public void paint(Graphics g)g.setColor(Color. GREEN);for(int i=1;i=n;i+)for(int j=1;j=n;j+)g.drawString(Integer.toString(ai j),i*20,j*20);public void actionPerformed(ActionEvent ae)tryn=Integer.parseInt (tf1.getText ();in
10、t i=1, j=1;for (i=1;i=n;i+)for (j=1; j=n; j+)ai j=0;j=n/2+1;ai j=1;for (int k=1; k=n*n; k+)i-;j+;if(i1)j-;elseif (i1)i=n;if (jn)j=1;if (ai j=0)ai j=k;elsei=i+2;j-;ai j=k;dw. repaint ( );catch (NumberFormatException nfe)tf1.setText (“error!“);ex10_3.htmlHTMLHEADTITLEex10_3/TITLE/HEADBODYapplet code=“
11、ex10_3.class“ width=800 height=400/applet/BODY/HTML(分数:30.00)_二级 JAVA 机试-221 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.请在下面程序中的每条横线处填写一个语句,使程序的功能完整。程序的输出结果为:TIME=1867b=9i=123注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。源程序文件代码清单如下:import java.io.*;public class DataTypepublic _ void main(String
12、 args)byte b;int i;/定义变量 i 为 int 类型_/定义常量 TIME 为整型,且值为 1867i=123;/给变量 i 赋值,该值为十进制的 123_/给变量赋值,改值为八进制的 11,十进制的 9System.out.println(“TIME“+TIME);System.out.println(“b=“+b);System.out.println(“i=“+i);(分数:30.00)_正确答案:(staticfinal int TIME=1867b=011)解析:解析 本题主要考查 main()主方法的使用以及如何定义常量。static 修饰符是说明 main()方
13、法是静态方法,final int TIME=1867 语句的功能是定义一个整型的常量 TIME,并且其值为 1867,b=011 语句是给变量 b 赋值为八进制的 11,十进制的 9。二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:建立一个 Applet 程序,包括创建一个画布构件、一个面板构件,面板构件上包含 3 个按钮,用来设置画布和面板的背景颜色,这 3 个按钮(Red、Green、Blue)分别控制画布和面板背景色改变为 3 原色,即红、绿、蓝。要求画布宽度为 300,高度为 200。注意:请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入
14、适当的语句。源程序文件代码清单如下:import java.awt.*;import java.applet.*;/*applet code=“ex10_2.class“ width=800 height=400 /applet*/public class ex10_2 extends Appletprivate Panel pane110_2;private Canvas canvas10_2;private Button btn1, btn2, btn3;public void init()canvas10_2=new Canvas();canvas10_2. _;canvas10_2.s
15、etBackground(Color.black);add(canvas10_2);pane110_2 = new Panel();pane110_2.setBackground( Color.black );btn1 = new Button( “Red“ );btn2 = new Button( “Green“ );btn3 = new Button( “Blue“ );pane110_2.add( btn1 );pane110_2.add( btn2 );pane110_2.add( btn3 );_;public boolean action( Event e, Object o )i
16、f( e.target = btn1 )pane110_2.setBackground( Color.red );canvas10_2.setBackground( Color.red );else if( e.target = btn2 )pane110_2.setBackground( Color.green );canvas10_2.setBackground(Color.green);else if( e.target = btn3 )canvas10_2.setBackground( Color.blue );pane110_2.setBackground( Color.blue )
17、;return true;(分数:40.00)_正确答案:(resize(300,200)add(pane110_2)解析:解析 本题主要考查画布构件、面板构件和按钮构件的使用,以及 Applet 程序中的事件处理。解题关键是熟悉上述几种构件的创建和使用,能在 Applet 窗口中控制构件的布局,同时还要熟悉 Java 的事件处理机制。本题中,第 1 个空,要根据题目要求对画布构件的大小进行初始化,调用 resize()方法实现;第 2 个空,此空之前的语句只是把 Button 构件放入了 Panel 构件中,还需要将 Panel 构件放入整个应用程序中。三、3综合应用题(总题数:1,分数:3
18、0.00)3.下面是一个 Applet 程序,其功能是构造 n 阶魔方阵,魔方阵是这样一个方阵,它的每一行,每一列和对角线之和均相等,例如 3 阶魔方阵为8 1 63 5 74 9 2要求用 Applet 实现上述魔方阵。窗口中包括提示栏,提示输入 015 之间的奇数;输入框,输入方阵的阶数;按钮;点击则输出魔方阵;画布用于输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序文件代码清单如下:import java.awt.*;import java.awt.event.*;import java.applet.Applet;i
19、mport java.lang.Math.*;/*applet code=“ex10_3.class“ width=800 height=400/applet*/public class ex10_3 extends Applet implements ActionListenerPanel pane=new Panel();drawWnd dw;Label 11 = new Label(“输入(015 的奇数): “);TextField tf1 = new TextField(5);Button btn = new Button(“OK“);int a=new int16 16;int n
20、=15;public void init()pane.setLayout(new FlowLayout(FlowLayout.CENTER, 25,5);pane.add(11);pane.add(tf1);pane.add(btn);pane.addActionListener(this);add(“North“,pane);dw=new drawWnd();add(“South“,dw);class drawWnd extends CanvasdrawWnd ( )setSize(300,300);setBackground(Color.GRAY);public void paint(Gr
21、aphics g)g.setColor(Color. GREEN);for(int i=1;i=n;i+)for(int j=1;j=n;j+)g.drawString(Integer.toString(ai j),i*20,j*20);public void actionPerformed(ActionEvent ae)tryn=Integer.parseInt (tf1.getText ();int i=1, j=1;for (i=1;i=n;i+)for (j=1; j=n; j+)ai j=0;j=n/2+1;ai j=1;for (int k=1; k=n*n; k+)i-;j+;i
22、f(i1)j-;elseif (i1)i=n;if (jn)j=1;if (ai j=0)ai j=k;elsei=i+2;j-;ai j=k;dw. repaint ( );catch (NumberFormatException nfe)tf1.setText (“error!“);ex10_3.htmlHTMLHEADTITLEex10_3/TITLE/HEADBODYapplet code=“ex10_3.class“ width=800 height=400/applet/BODY/HTML(分数:30.00)_正确答案:(btn.addActionListener(this)a1j
23、=1int k=2;k=n*n;k+)解析:解析 本题主要考查 Applet 图形界面编程和 for 循环语句的使用以及对数组的操作。解题关键是明白魔方阵的基本原理,并能看得懂这个问题的算法,熟悉数组操作,for 循环语句以及 Applet 界面构件及其事件处理机制。魔方阵的排列规律是:首先将 1 放在第一行中间一列;然后从 2 开始直到 n*n 为止。各数依次按如下规则存放:每一个数存放的行比前一个数的行数减 1、列数加 1;如果上一个数的行数为 1,则下一个数的行数为 n;当上一个数的列数为 n 时,下一个数的列数应改为 1,行数减 1;如果按以上规则确定的位置上已有数,或上一个数是第 1 行第 n 列时,则把下一个数放在上一个数的下面。本题中,第 1 处,事件监听器应该是 btn 对象的,不是 pane 对象;第 2 处,应该按照上述规则第一条,将 1放在第一行中间一列:第 2 处,循环变量应该从 2 开始,如果是 1 得不到正确答案。