2009年10月全国自考Java语言程序设计(一)真题及答案.doc
更多优质自考资料尽在百度贴吧自考乐园俱乐部(2009年10月全国自考Java语言程序设计(一)真题及答案窗体顶端一、单项选择题(本大题共10小题,每小题1分,共10分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.下面供选字符序列中,不属于Java语言关键字的是() (1分)A:gotoB:nullC:falseD:native2.以下程序代码的输出结果是() int x=73;System.out.println(x>>1); (1分)A:36B:36.5C:37D:true3.Java语言中,在类定义时用final关键字修饰,是指这个类() (1分)A:不能被继承B:在子类的方法中不能被调用C:能被别的程序自由调用D:不能被子类的方法覆盖4.以下是关于字符串运算的代码,执行该代码段的输出结果是() String s=0123456789,s1,s2; s1=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2); (1分)A:0122345B:234567892345C:012234D:234567892345.以下是关于FlowLayout布局组件排列顺序的叙述,正确的是() (1分)A:从上到下排列B:从左到右排列C:从下到上排列D:从右到左排列6.程序执行方法showOpenDialog(),能打开“打开文件对话框”,如果该方法的返回值是JFileChooser.APPROVE_OPTION,则用户执行的动作是() (1分)A:对话框非正常关闭B:按下“打开保存”按钮C:按下“撤销”按钮D:重新输入了一个文件名7.设已经有Graphics2D对象g2d,Rectangle2D对象r,绘制对象r的代码是() (1分)A:g2d.draw(r)B:g2d.drawRect(r)C:r.draw()D:r.drawRect()8.在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是() (1分)A:start()B:init()C:resume()D:run()9.在以下供选择的方法中,不能用于文件随机访问的方法是() (1分)A:readChar()B:readLong()C:readInteger()D:writeChars()10.某程序利用网址参数创建URL对象url,接着希望利用对象url获得URLConnection对象,则这个url对象要调用的方法是() (1分)A:connection()B:URLConnection()C:getConnection()D:openConnection()二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1.一个应用程序必须在某个类中定义的方法是。 (2分)2.import语句的格式是。 (2分)3.在面向对象语言中,对象之间的交互通过实现。 (2分)4.设有两个字符串对象str1和str2,则表达式“str1=str2”的意义是判别字符串str1和str2。 (2分)5.一个基于Swing的应用程序可能在任何平台上都会有相同的。 (2分)6.处理键盘事件的Java程序,要实现的接口是。 (2分)7.Java语言约定,坐标原点位于绘图区域的。 (2分)8.Java程序中,在临界段中使用方法,使执行该方法的线程等待。 (2分)9.BufferedWriter类对象能按行输入文件的内容,按行输入的方法是。 (2分)10.在包中有InetAddress类的定义,Java程序中的InetAddress类对象存储的内容是。 (2分)三、简答题(本大题共6小题,每小题3分,共18分)1.请写出实现计算y=|x|的if语句。 (3分)2.以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释)。 class Test22/1 float u;static float v;/2 static void setUV(boolean f)/3 u=fac1(f);/4 v=fac2(!f);/5 static float fac1(boolean f)return f ?u:v;/6 float fac2(boolean f)return f ?v:u;/7 /8 (3分)3.在java.awt.event中,用来检测并对事件做出反应的模型涉及三种对象。请写出这三种对象。 (3分)4.写出设置Font对象fn的Java语句,要求Courier字体,BOLD风格,18磅字号,设调用对象的类型为Graphics的g。 (3分)5.通过流的构造方法建立文件流对象,请写出创建输入输出文件流对象的两种常用构造方法。 (3分)6.当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接,请写出双方实现通信的两种方式。 (3分)四、程序填空题(本大题共5小题,每空2分,共20分)1.方法int sigmaEvenNum(inta)的功能是求已知数组中偶数的个数。 static int sigmaEvenNum(int a) int s =0; for ( int i=0;i+ ) if() s+; return s; (2分)2.某小应用程序窗口包含有文本区dispArea,以及一个带文字“追加”的按钮。当点击这个按钮时,程序弹出一个输入信息的对话框,并将对话框中输入的内容追加到文本区中。以下是其中相应“追加”按钮事件的方法。 public void actionPerformed(ActionEvent e) if(e.equals("追加") String result=(String)JOptionPane.showInputDialog(null,"请输入信息", "输入对话框",JOptionPane.PLAIN_MESSAGE, null, null,null); dispArea.(result + " "); (2分)3.以下程序段是选择项目事件处理程序的样例,一个由3个单选按钮组成的选择组被定义为一个面板子类Panel,当某个按钮被选中时,按钮监视程序在类MyWindow的一个文本框中输出某个按钮被选中的字样。以下是类Panel的定义。 class Panel extends JPanel implements ItemListener static JRadioButton box; ButtonGroup g; Panel(String radioNameList) box=new JRadioButtonradioNameList.length; setLayout(new GridLayout(1, radioNameList.length); g=new ButtonGroup(); for(int i=0;i<radioNameList.length; i+) boxi = new JRadioButton(,false); g.add(boxi);add(boxi);boxi.addItemListener(this); public void itemStateChanged(ItemEvent e) for(int i = 0; i < box.length; i+) if(boxi.) MyWindow.text.setText(boxi.getLabel()+"被选中!"); (2分)4.用getImage()方法和drawImage()方法能加载和显示图像。以下程序加载的是seattle.jpg文件,并假定该文件与包含这个小应用程序的HTML文件在同一个目录下。 import java.awt.*; import java.applet.*; public class SimpleImageLoad extends Applet Image img; public void init() img = getImage(,"seattle.jpg"); public void paint(Graphics g) g.drawImage(img, 0, 0, ); (2分)5.以下程序段定义的类ShareDataManager用于管理多个线程共享数据data。为了对data的取、存和修改操作保持完整,多线程在data上的操作有互斥要求;另外,限制线程对data的修改不能让data为负数,所以多线程在data上的操作还有同步要求。为此,程序为管理data上的操作定义成类,以下是管理共享数据data的类ShareDataManager的代码。 class ShareDataManager int data; ShareDataManager(int init)data = init; public int getData() return data; private void putData(int newValue) data = newValue; synchronized void modiData(int delta) if (delta >= 0) putData(getData()+ delta); else while (<0) try wait(); catch (InterruptedException e) putData(getData()+ delta); ; (2分)五、程序分析题(本大题共5小题,每小题4分,共20分)1.阅读下列程序,请写出该程序的输出结果。 class Tree private String name;public boolean flower; public int birthYear; Tree(String n, boolean f, int y) name = n; flower = f; birthYear = y; public void setName(String n)name = n; public String getName()return name; public void printTree(String str) System.out.println(str);System.out.println("Name:"+name); System.out.println("Birth Year:"+birthYear); System.out.println("Flower:"+flower); class PineTree extends Tree public boolean coniferous = true; PineTree(String n, boolean f, int y, boolean c)super(n, f, y);coniferous = c; public void printTree(String str) super.printTree(str); System.out.println("Coniferous:" + coniferous); class Test32 public static void main(Stringargs) Tree fOb = new Tree("May Flower", true, 1980); PineTree sOb = new PineTree("Pine", false, 2000, true); fOb.printTree(" fOb:"); sOb.printTree("sOb:"); (4分)2.阅读下列程序,请写出该程序的输出结果。 class Test33 static void s(int b , int k) int i, j, t; for(i = 1;i< k; i+) for(t = bi, j = i-1; j >= 0 && t < bj; j-) bj+1 = bj; bj+1 = t; public static void main(String args) int i, a = 6, 12, 7, 11, 5 ; s(a, 5); for(i = 0;i<a.length; i+) System.out.print(ai+" "); System.out.Println(); (4分)3.阅读下列程序,请写出该程序的功能。 import java.applet.*;import javax.swing.*; import java.awt.*;import java.awt.event.*; public class Test34 extends Applet implements ActionListener JTextField text;int r; JPanel panel; public void paint(Graphics g) Graphics gc = panel.getGraphics(); gc.clearRect(0,0, panel.getWidth(), panel.getHeight(); gc.setColor(Color.red); gc.fillOval(10, 10, r, r); public void init() text = new JTextField(10); panel = new JPanel(); setSize(200, 100); setLayout(new GridLayout(2,1); add(text); add(panel); text.addActionListener(this); public void actionPerformed(ActionEvent e) if (e.getSource() = text) r = Integer.parseInt(text.getText(); repaint(); (4分)4.阅读下列程序,请回答以下问题: (1)该程序的菜单条中共有几个菜单项? (2)单击哪个菜单项,可以打开一个对话框? (3)该对话框是强制型还是非强制型? (4)该对话框中显示的是什么内容? import javax.swing.*;import java.awt.*; import java.awt.event.*; import java.util.*; class MyDialog extends JDialog MyDialog(JFrame F, String s) super(F, s, false); Date date = new Date(); String t = date.toString(); JLabel text = new JLabel(t); add(text); setSize(200,100); setVisible(true); public class MenuDemo extends JFrame implements ActionListener JMenuBar menubar; JMenu action; JMenuItem show, set, quit; public MenuDemo() menubar = new JMenuBar();setJMenuBar(menubar); action = new JMenu("操作");menubar.add(action); show= new JMenuItem("显示");action.add(show); set = new JMenuItem("设置");action.add(set); action.addSeparator();quit = new JMenuItem("退出"); action.add(quit);show.addActionListener(this); set.addActionListener(this);quit.addActionListener(this); setSize(300,300);setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource() = show) MyDialog diag = new MyDialog(this, "信息"); else if(e.getSource()= set) this.setTitle("菜单演示"); else if(e.getSource() = quit) System.exit(0); public static void main(Stringargs) new MenuDemo(); (4分)5.阅读以下程序,请写出该程序的输出结果。 class CurrentThreadDemo public static void main(String args) Thread t = new Thread();System.out.println("Current thread"); t.setName("My Thread");System.out.println("After name change"); try for(int n = 3; n > 0; n-) System.out.println(n); Thread.sleep(1000); catch (InterruptedException e) System.out.println("Main thread interrupted"); (4分)六、程序设计题(本大题共2小题,每小题6分,共12分)1.编写方法int searchMaxNumIndex(inta),寻找已知数组中最大数的下标并返回。 (6分)2.以下程序的界面有一个按钮button、一个文本区textA和一个文本框textF。程序运行时,在文本区中输入数字序列,单击按钮,则在文本框中显示数字序列的和。以下是要求你编写的actionPerformed(ActionEvent e)方法的部分代码。 public void actionPerformed(ActionEvent e) if (e.getSource() = button) String s = textA.getText(); double sum =0; StringTokenizer fenxi = new StringTokenizer(s, " ,n"); /请在以下位置编写代码 (6分)窗体底端参考答案一、单项选择题 (本大题共10小题,每小题1分,共10分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1:参考答案:C参考解析:暂无解析试题内容:下面供选字符序列中,不属于Java语言关键字的是()A:gotoB:nullC:falseD:native2:参考答案:A参考解析:暂无解析试题内容:以下程序代码的输出结果是()int x=73;System.out.println(x>>1);A:36B:36.5C:37D:true3:参考答案:A参考解析:暂无解析试题内容:Java语言中,在类定义时用final关键字修饰,是指这个类()A:不能被继承B:在子类的方法中不能被调用C:能被别的程序自由调用D:不能被子类的方法覆盖4:参考答案:D参考解析:暂无解析试题内容:以下是关于字符串运算的代码,执行该代码段的输出结果是()String s=0123456789,s1,s2;s1=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2);A:0122345B:234567892345C:012234D:234567892345:参考答案:B参考解析:暂无解析试题内容:以下是关于FlowLayout布局组件排列顺序的叙述,正确的是()A:从上到下排列B:从左到右排列C:从下到上排列D:从右到左排列6:参考答案:B参考解析:暂无解析试题内容:程序执行方法showOpenDialog(),能打开“打开文件对话框”,如果该方法的返回值是JFileChooser.APPROVE_OPTION,则用户执行的动作是()A:对话框非正常关闭B:按下“打开保存”按钮C:按下“撤销”按钮D:重新输入了一个文件名7:参考答案:A参考解析:暂无解析试题内容:设已经有Graphics2D对象g2d,Rectangle2D对象r,绘制对象r的代码是()A:g2d.draw(r)B:g2d.drawRect(r)C:r.draw()D:r.drawRect()8:参考答案:C参考解析:暂无解析试题内容:在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是()A:start()B:init()C:resume()D:run()9:参考答案:C参考解析:暂无解析试题内容:在以下供选择的方法中,不能用于文件随机访问的方法是()A:readChar()B:readLong()C:readInteger()D:writeChars()10:参考答案:D参考解析:暂无解析试题内容:某程序利用网址参数创建URL对象url,接着希望利用对象url获得URLConnection对象,则这个url对象要调用的方法是()A:connection()B:URLConnection()C:getConnection()D:openConnection()二、填空题 (本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1:参考答案:main()试题内容:一个应用程序必须在某个类中定义的方法是_。2:参考答案:import包名.类名;试题内容:import语句的格式是_。3:参考答案:相互发送消息试题内容:在面向对象语言中,对象之间的交互通过_实现。4:参考答案:是否引用同一个对象试题内容:设有两个字符串对象str1和str2,则表达式“str1=str2”的意义是判别字符串str1和str2_。5:参考答案:外观与风格试题内容:一个基于Swing的应用程序可能在任何平台上都会有相同的_。6:参考答案:KeyListener试题内容:处理键盘事件的Java程序,要实现的接口是_。7:参考答案:左上角试题内容:Java语言约定,坐标原点位于绘图区域的_。8:参考答案:wait()试题内容:Java程序中,在临界段中使用_方法,使执行该方法的线程等待。9:参考答案:readLine()试题内容:BufferedWriter类对象能按行输入文件的内容,按行输入的方法是_。10:参考答案:IP地址和域名试题内容:在包中有InetAddress类的定义,Java程序中的InetAddress类对象存储的内容是_。三、简答题 (本大题共6小题,每小题3分,共18分)1:参考答案:if(x>=0)y=x; elsey=-x;试题内容:请写出实现计算y=|x|的if语句。2:参考答案:4,5,6行错误试题内容:以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释)。class Test22/1float u;static float v;/2static void setUV(boolean f)/3u=fac1(f);/4v=fac2(!f);/5static float fac1(boolean f)return f ?u:v;/6float fac2(boolean f)return f ?v:u;/7/83:参考答案:源对象、监视器对象、事件对象试题内容:在java.awt.event中,用来检测并对事件做出反应的模型涉及三种对象。请写出这三种对象。4:参考答案:Font fn=new Font("Courier",Font.BOLD,18); g.setFont(fn);试题内容:写出设置Font对象fn的Java语句,要求Courier字体,BOLD风格,18磅字号,设调用对象的类型为Graphics的g。5:参考答案:FileInputStream(String name) FileInputStream(File filename) FileOutputStream(String name) FileOutputStream(File filename)试题内容:通过流的构造方法建立文件流对象,请写出创建输入输出文件流对象的两种常用构造方法。6:参考答案:流式socket和数据报式socket试题内容:当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接,请写出双方实现通信的两种方式。四、程序填空题 (本大题共5小题,每空2分,共20分)1:参考答案:i<a.length ai%2=0,试题内容:方法int sigmaEvenNum(inta)的功能是求已知数组中偶数的个数。static int sigmaEvenNum(int a)int s =0;for ( int i=0;_;i+ ) if(_) s+;return s;2:参考答案:getActionCommand() append,试题内容:某小应用程序窗口包含有文本区dispArea,以及一个带文字“追加”的按钮。当点击这个按钮时,程序弹出一个输入信息的对话框,并将对话框中输入的内容追加到文本区中。以下是其中相应“追加”按钮事件的方法。public void actionPerformed(ActionEvent e)if(e._.equals("追加")String result=(String)JOptionPane.showInputDialog(null,"请输入信息","输入对话框",JOptionPane.PLAIN_MESSAGE, null, null,null);dispArea._(result + " ");3:参考答案:radioNameListi isSelected(),试题内容:以下程序段是选择项目事件处理程序的样例,一个由3个单选按钮组成的选择组被定义为一个面板子类Panel,当某个按钮被选中时,按钮监视程序在类MyWindow的一个文本框中输出某个按钮被选中的字样。以下是类Panel的定义。class Panel extends JPanel implements ItemListenerstatic JRadioButton box;ButtonGroup g;Panel(String radioNameList) box=new JRadioButtonradioNameList.length;setLayout(new GridLayout(1, radioNameList.length);g=new ButtonGroup();for(int i=0;i<radioNameList.length; i+)boxi = new JRadioButton(_,false);g.add(boxi);add(boxi);boxi.addItemListener(this);public void itemStateChanged(ItemEvent e)for(int i = 0; i < box.length; i+)if(boxi._) MyWindow.text.setText(boxi.getLabel()+"被选中!");4:参考答案:getDocumentBase() this,试题内容:用getImage()方法和drawImage()方法能加载和显示图像。以下程序加载的是seattle.jpg文件,并假定该文件与包含这个小应用程序的HTML文件在同一个目录下。import java.awt.*; import java.applet.*;public class SimpleImageLoad extends AppletImage img;public void init() img = getImage(_,"seattle.jpg");public void paint(Graphics g) g.drawImage(img, 0, 0, _);5:参考答案:getData()+delta notify(),试题内容:以下程序段定义的类ShareDataManager用于管理多个线程共享数据data。为了对data的取、存和修改操作保持完整,多线程在data上的操作有互斥要求;另外,限制线程对data的修改不能让data为负数,所以多线程在data上的操作还有同步要求。为此,程序为管理data上的操作定义成类,以下是管理共享数据data的类ShareDataManager的代码。class ShareDataManager int data;ShareDataManager(int init)data = init; public int getData() return data;private void putData(int newValue) data = newValue;synchronized void modiData(int delta)if (delta >= 0) putData(getData()+ delta); else while (_<0) try wait(); catch (InterruptedException e) putData(getData()+ delta);_;五、程序分析题 (本大题共5小题,每小题4分,共20分)1:参考答案:fOb: Name:May Flower Birth Year:1980 Flower:true(2分) sOb: Name:Pine Birth Year:2000 Flower:false Coniferous:true(2分)试题内容:阅读下列程序,请写出该程序的输出结果。class Tree private String name;public boolean flower;public int birthYear;Tree(String n, boolean f, int y) name = n; flower = f; birthYear = y; public void setName(String n)name = n;public String getName()return name; public void printTree(String str)System.out.println(str);System.out.println("Name:"+name);System.out.println("Birth Year:"+birthYear);System.out.println("Flower:"+flower);class PineTree extends Tree public boolean coniferous = true;PineTree(String n, boolean f, int y, boolean c)super(n, f, y);coniferous = c; public void printTree(String str)super.printTree(str);System.out.println("Coniferous:" + coniferous);class Test32 public static void main(Stringargs)Tree fOb = new Tree("May Flower", true, 1980);PineTree sOb = new PineTree("Pine", false, 2000, true);