1、国家二级(JAVA)机试-试卷 31 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.下列程序中,定义了一个 3 行 4 列的数组 A,并将 A 的内容转换为 ASCII 码值,并复制到数组 B 中,然后打印出来。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 public class Example1_4 private char A = a, b, c, d, e, f, g, h, i, j, k, l; public int _; /生成一个空的 3 行 4 列的
2、数组 B public void copy() for(int i = 0; i 3; i+) for(int j = 0; j 4; j+) _; public static void main(_ argv) Example1_4 example = new Example1_4(); example.copy(); for(int i = 0; i 3; i +) for(int j = 0; j 4; j+) System.out.print(example. Bi j *+“ “); System.out.println (); (分数:2.00)_二、简单应用题(总题数:2,分数:
3、4.00)3.简单应用题()(分数:2.00)_4.请完成下列 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.6333333333333333 i=6 s=0.6319444444444444 public class ex1_1 public static void main(String
4、 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); (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.以下程序是一个简单文本处理器,菜单项可以打开、编辑、保存一个文件。文件内容显示在下面的文本区域中(提示,打开文件通过文件选择器来完成)。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。运行结果如下图所示。 (分数
5、:2.00)_国家二级(JAVA)机试-试卷 31 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.下列程序中,定义了一个 3 行 4 列的数组 A,并将 A 的内容转换为 ASCII 码值,并复制到数组 B 中,然后打印出来。 注意:请勿改动 main()主方法和其他已有语句内容,仅在横线处填入适当语句。 public class Example1_4 private char A = a, b, c, d, e, f, g, h, i, j, k, l; public int _; /生成一个空的
6、 3 行 4 列的数组 B public void copy() for(int i = 0; i 3; i+) for(int j = 0; j 4; j+) _; public static void main(_ argv) Example1_4 example = new Example1_4(); example.copy(); for(int i = 0; i 3; i +) for(int j = 0; j 4; j+) System.out.print(example. Bi j *+“ “); System.out.println (); (分数:2.00)_正确答案:(正确
7、答案:B=new int34 Bij=Aij String)解析:解析:本题主要考查考生对数组的掌握情况,以及数据类型之间的转换。 Java 语言中,数组必须使用“new”关键字对其分配存储空间,因此第一个空需要填写“new int34”。 main 函数的参数列表必须是字符串数组,但是作为参数,是动态获取的,所以没有数组长度,而仅仅写成 Stringargv,由此得到了第 3 个空。第 2 空是考查数据自动转换。 Java 的基本数据类型可以按照一定的规则自动转换,而不需要特殊处理。故第 2 个空可以直接用等号赋值。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.0
8、0)_解析:4.请完成下列 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.6333333333333333 i=6 s=0.6319444444444444 public class ex1_1 public static void main(String args) double s=0.
9、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); (分数:2.00)_正确答案:(正确答案:sign=-sign Mathabs(t)0.001)解析:解析:本题主要考查 for 循环和条件语句控制程序流程。解题关键是会根据公式写出相应的算法解决问题。本题中,第 1 个空,由于公式里每一项的符号都是交替变化的,所以这里需要改变符号;第 2 个空,判断是否中断循环的条件,需要用 Math.abs()方法来进行绝对值的
10、比较。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.以下程序是一个简单文本处理器,菜单项可以打开、编辑、保存一个文件。文件内容显示在下面的文本区域中(提示,打开文件通过文件选择器来完成)。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。运行结果如下图所示。 (分数:2.00)_正确答案:(正确答案:setJMenuBar(mb) file=chooser.getSelectedFile() out.write(textpane.getText()解析:解析:构造方法 FileFrame()中初始化了程序界面,菜单“fileM”中添加了
11、 3 个菜单项“打开”、“保存”和“退出”,并为这 3 个菜单项添加了相应的事件。“textpane”是一个文本编辑面板,其上可以显示和修改文本。openAction 类定义了用户选择“打开”菜单的事件。用户选择“打开”,程序向用户显示文件选择器“chooser”,使用户通过图形化的方式选择文件。根据用户选择的结果,生成 File 类的实例“file”。语句“textpane.read(readStream,this)”读取文件内容并显示在“textpane”中。 SaveAction 定义了用户选择“保存”菜单的事件。在 SaveAction 类中,程序调用 FileWriter 的写文件方法将“textpane”中的内容输出到文件中。 玻璃面板(glassPane)、内容面板(contentPane)、菜单条(JMenuBar)共同组成根面板。getContentPane()获得的是顶层容器的内容面板而不是根面板,所以不能在其中添加菜单条。因此第 1 条下划线处应该改为 setJMenuBar(mb),将“mb”设置为根面板的菜单条。 第 2 处和第 3 处改错,主要考查对文件选择和文件输出的基本操作的掌握情况。这些常用的类和常用的方法只有在多次练习之后才能熟练掌握。