1、国家二级( JAVA)机试模拟试卷 108及答案与解析 一、基本操作题( 30分) 1 下列程序中,给出两个整数 2和 3,分别求 2除以 3和 2乘以 3的结果,要求调用类 ex19_1的方法 method()来输出相应的结果,请将程序补充完整。程序运行结果如下。 0.6666666666666666 6 源程序文件代码清单如下: public class exl9 1 public static void main(String args) int n1=2,n2=3; ex19_1 obj19_1=new ex19_1(); obj19_1. public void method(int
2、 x,int y) System.out.println(_); System.out.println(_); 二、简单应用题( 40分) 2 请完成下列 Java程序。程序的功能 是复制文件并显示文件,将每个字符读入,并写入另一个文件,同时显示出来。 (注意:在本题中,是将 D盘的 JDK目录下的README.txt文件打印在屏幕上,并写入另一个文件 temp.txt中 ) 注童:请勿改动 main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。 import java.io.*; public class FileCopyBy public static void main(S
3、tring args) try FileReader input=new FileReader(“FileCopyBy.java“); FileWriter output=new FileWriter(“temp.txt“); int c=input.read(); while(_) _ System.out.print(charc); c=input.read(); input.close(); output, close(); catch(IOException e) System.out.println(e); 三、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是统计输
4、入字符串中的每个字符在该串中出现的次数。要求,窗口中有一个文本框作为输入,一个按 钮,点击则进行统计,统计结果以图形方式输出。请改正程序中的错误 (有下画线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 import java.awt.*; import java.applet.*; import java.1ang*; public class exl3_3 extends Applet private TextField tf; private Button btn; public void init() tf=new TextField(25); add(
5、tf); btn=new Bunon(“统计 “); add(btn); resize(250, 200); pubhc void paint(Graphics g) Stling str=tf.genText(); shon cnt=new shon65536; int i; int n = 50; for(i=0;i 65536;i+) cati=0; for(i=0;i str.length(); i+) cnti+; for(i=0;i 65536;i+)/对数组 Cnt进行初始化 if(cnti =0) g.drawString(i+“出现 “+cnti+“次 “,50,n); n+
6、=20; public boolean action(Eyent e, Object o) if(o=“统计 “) repaint(); return true; else return false; ex13_3.html HTML HEAD TITLE ex13_3 /TITLE /HEAD BODY applet code=“ex13_3.class“width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 108答案与解析 一、基本操作题( 30分) 1 【正确答案】 method(n1, n2) (double)x/y x*
7、y 【试题解析】 本题主要考查 Java语言的数据类型和结构以及不同数据类型之间的转换,和对象调用方法以及基本的运算操作。解题关键是熟悉 Java语言的基本数据类型和类型之间的转换,用类的对象来调用方法,以及熟悉 Java语言的基本运算。在本题中,第 1空通过类 ex19_1的对象 obj19_1调用类 ex19_1的方法 method(),将变量 n1和 n2作为参数传递给方法。第 2空由于 x、 y都是 int型,则 x/y的结果为 0.666 ,这会转换为 int型,其值为 0。所以要对数据进行类型转换,将 x转换为 double型则 y也转换为 double型,因此结果为 double
8、型,值为0.666 。第 3空无须做类型转换,直接输出 x*y的值 6即可。 二、简单应用题( 40分) 2 【正确答案】 c!=-1 output.write(c); 【试题解析】 本题主要考查对文本文件的操作及 while循环语句的使用。解答本题的关键是掌握对 文本文件的操作。 Reader类与 InputStream类相似,都是输入流,但差别在于 Readr类读入的是字符 (char),而不是字节。不带参数的 read()方法功能是将读入的字符转为整数返回。若不能读到字符,返回 -1 Writer类与outputStream类相似,都是输出流,但差别在于 Writer类写出的是字符 (char),而不是字节。在本题中, while循环语句的功能是循环对字符进行读入和写出操作。c!=-1条件是判断 read()方法能否读入字符, output.write(c);语句的功能是写入一个 字符 c。 三、综合应用题( 30分) 3 【正确答案】 cntstr.charAt(i)+ cnti 0 g.drawString(char)i+“出现 “+cnti+“次 “,50,n)