1、国家二级( JAVA)机试模拟试卷 53及答案与解析 一、基本操作题( 30分) 1 “角谷猜想 ”指出,将一个自然数按以下的一个简单规则进行运算:若数为偶数,则除以 2:若为奇数,则乘以 3加 1。将得到的数按该规则重复运算,最终可得1。请在下面程序的每条横线处填写一个语句,使程序的功能完整。 (如:输入34,则输出结果为 34 17 52 26 13 40 20 10 5 16 8 4 2 1) 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 源程序文件清单如下: import java.io.*; class JiaoGu public static
2、void main(String args) System.out.print(“n请输入一个数 “); try BufferedReader br= new BufferedReader(new InputStreamReader(System.in); Stirng s=br.readLine(); _ while(a!=1) System.out.print(“ “+a); if(a%2=1) _ else a=a/2; System.out.println(“ “+a); _ 二、简单应用题( 40分) 2 请完成下列 Java程序。程序的功能是对数组进行冒泡排序。冒泡排序算法的基本思
3、路是把当前数据序列中的各相邻数据两两比较,发现任何一对数据间不符合升序或降序关系则立即调换它们的顺序,从而保证相邻数据间符合升序或降序的关系。本题是进行升序排列。例如数组 a=30,1,-9,70,25则排序后为 -9 1 25 30 70。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填 入适当的语句。 源程序文件代码清单如下: public class BubbleSort public static void main(String args) int i, j; int a=30, 1, -9, 70, 25; int n=a.length; System.ou
4、t.print(“排序前数组为: “); for(i=0; i n; i+) System.out.print(ai+“ “); System.out.println(); for(i=1; i n; i+) for(j=0; _j+) if(aj aj+1) int temp=aj; _; aj+1=temp; System.out.print(“排序后数组为: “); for(i=0; i n; i+) System.out.print(ai+“ “); 三、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是有两个按钮,分别为 First和 Second,以及一个 Labe
5、l构件。要求单击 First时能在 Label中显示出 “Command:First“,而单击Second时能显示出 “Command:Second“,要求只能重载一次 actionPerformed()方法,请改正程序中的错误 (有下划线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import java.awt.*; import java.awt.event.*; import java.applet.*; /* applet code=ex04_3.class width=800 height=400 /applet */ P
6、ublic class ex04_3 extends Applet implements ActionListener private String str=“ok“; private Label l; private Button btn; public void init() setLayout(null); l=new Label(str); l.reshape(10, 10, 100, 30); add(l); btn=new Button(“First“); btn.reshape(10, 50, 60, 20); l.addActionListene(this); add(btn)
7、; btn=new Button(“Second“); btn.reshape(10, 100, 60, 20); btn.setActionCommand(“First“); btn.addActionListener(this); add(btn); public void actionPerformed(ActionEvent ae) str=“Command:“+ae.getActionCommand(); btn.setText(str); ex04_3.html HTML HEAD TITLE ex04_3 /TITLE /HEAD BODY applet code=“ex2_3.
8、class“ width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 53答案与解析 一、基本操作 题( 30分) 1 【正确答案】 int a=Integer.parseInt(s); a=a*3+1; catch(Exception e) 【试题解析】 本题主要考查异常的捕获知识、对文件的操作知识。解答本题的关键是熟练掌握异常的捕获知识、对文件的操作知识。在本题中, int a=Integer.parseInt(s)语句的功能是 s这个字符型数据转换成整型数据, a%2=1语句的功能是判断变量 a是否为奇数, try-catch
9、()结构的功能是异常的捕获。 二、简单应用题( 40分) 2 【正确答 案】 j n-i; aj=ai+1; 【试题解析】 本题主要考查 for循环语句的用法及数组的基本知识。解答本题的关键是能够熟练的掌握冒泡排序算法的思想及 for循环语句的用法。排序是数据处理中经常使用的一种重要运算。常见排序分为:插入排序、选择排序、冒泡排序、基数排序等。在本题中, for(j=0; j n-i; j+)循环的功能是对上次排序的结果再进行排序,从中选择最小的数。 aj=aj+1语句的功能是把最小的数放在数组的最前面。 三、综合应用题( 30分) 3 【正确答案】 btn.addActionListener
10、(this) btn.setActionCommand(“second“) l.setText(str) 【试题解析】 本题主要考查 Java语言中高级事件 AcfionEvent和 AWT基本构件Label的常用方法的使用。解题关键是熟练掌握动作事件 ActionEvent和 Label构件的常用方法。在本题中,第 1处,明确注册的事件监听器是监听按钮的,而不是 Label;第 2处,调用 ActionEvent的 setActionCommand()方法改变了ActionCommand,使按下 Second按钮时显示 “Command:second“,而不是“Command:First“;第 3处,调用 Label的 setText()方法,而不是 Button的方法。程序运行结果如下图所示。