1、国家二级( JAVA)机试模拟试卷 35及答案与解析 一、基本操作题( 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 void main(
2、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程序:实现打印出自己的源文件的功能。 注意:请勿改动 main()主方法
3、和其他已有语句内容,仅在下划线处填入适当的语句。 import java.io.*; import java.util.StringTokenizer; public class ex27_2 public static void main(String args)throws IOException FileInputStream fis=new FileInputStream(“ex27_2.java“); DataInputStream dis=new DataInputStream(fis); String str=null; while(true) _; if(str=null) _
4、; StringTokenizer st=new StringTokenizer(str); while(st.hasMoreTokens() System.out.print(st.nextToken()+ “ “ ); System.out.println(); 三、综合应用题( 30分) 3 下面是一个 Applet程序,其功能是对输入的字符串进行抽取。要求给出抽取的子串在母串中的起始和终止位置,输出抽取出来的子串。请改正程序中的错误 (有下划线的语句 ),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下: import java.awt.*; imp
5、ort java.applet.*; public class ex26_3 extends Applet TextField tf1; TextField tf2; TextField tf3; Button btn; String strResult; public void init() Label 1 = new Label(“字符串 : “); add(l); tf1 = new TextField(20); add(tf1); l = new Label (“开始位置 : “); add(l); tf2 = new TextField(5); add(tf2); l = new L
6、abel (“结束位置 :“); add(l); tf3 = new TextField(5); add(tf3); btn = new Button(“抽取 “); add(btn); strResult = “ “. resize(250, 200); public void paint(Graphics g) g.drawString(“选中的子串为 :“, 80, 140); g.drawString(strResult, 80, 140); public boolean action(Event e, Object o) if (o = “抽取 “) try String str1
7、= tf1.getText(); String str2 = tf2.getText(); String str3 = tf3.getText(); int from = Integer.parseInt(str2); int to = Integer.parseInt(str1); strResult = str1.substring(from, to-1); catch( StringIndexOutOfBoundsException se) strResult=“字符索引越界 !“; repaint ( ); return true; else return false; ex263,
8、htm1 HTML HEAD TITLE ex26_3 /TITLE /HEAD BODY applet code=“ex26_3.class“ width=800 height=400 /applet /BODY /HTML 国家二级( JAVA)机试模拟试卷 35答案与解析 一、基本操作题( 30分) 1 【正确答案】 int a=Integer parseInt(s); a=a*3+1; catch(Exception e) 【试题解析】 本题主要考查异常的捕获知识、对文件的操作知识。解答本题的关键是熟练掌握异常的捕获知识、对文件的操作知识。在本题中, int a=Integer par
9、seInt(s);语句的功能是 s这个字符型数据转换成整型数据,a%2=1;语句的功能是判断变量 a是否为奇数, try-catch()结构的功能是异常的捕获。 二、简单应用题( 40分) 2 【正确答案】 str=dis readLine() break 【试题解析】 本题主要考查文件 I/O操作和 while语句, if语句的使用。解题关键是熟悉文件 I/O操作的基本方法,以及利用 while语句和 if语句控制程序流程。本题中,第 1个空, DataInputStream的对象 dis调用 readLine()方法,从输入流中读取数据,并写给 String类的 str对象;第二空,如果
10、str为空,则跳出循环体,这里使用 break完成跳转。 三、综合应用题( 30分) 3 【正确答案】 g.drawString(strResult, 80, 160) to=Integer parseInt(str3) strResult=str1 substring(from, to) 【试题解析】 本题主要考查字符串的取子串操作和 Applet图形绘制以及 Applet窗口的设计等。解题关键是熟悉字符串的操作,会使用 awt基本构件 TextField和Button等以及事件处理机制。本题中第 1处,第 3个参数不应该和上一条语句相同,否则输出的字符串和上面语句输出的字符串重叠;第 2处,应该是将 str3所接受的输入作为子串的下界,而不是 str1;第 3处,调用 substring()方法要注意参数的含义,第 1个是子串开始的位置,第 2个是子串结束的位置。