java 2016.10

Submitted by test on Fri, 02/26/2021 - 17:24

2016年10月高等教育自学考试全国统一命题考试

Java语言程序设计(一)  试卷

(课程代码 04747)

本试卷共9页,满分l00分,考试时间l50分钟。    

考生答题注意事项:

1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。

2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。

3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。

4.合理安排答题空间,超出答题区域无效。

第一部分 选择题(共l0分)

一、单项选择题(本大题共l0小题,每小题l分,共10分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。淘宝店铺 自考赢家 V信1297755429

1.在下述字符串中,不是Java余言关键字的是 C

A.int   B.static   C.java   D.try

2.要作下列数据类型转换,需进行强制类型转换才能实现的是 A

A.从int到char         B.从int到 long

C.从float到 double   D.从byte到 int

3.在以下供选择的概念中,属于面向对象语言重要概念或机制的是 D

A.方法  B.模块   C.线程  D.继承

4.在下述Java程序代码中,能正确创建数组的是 D

A.int myA[5]={1,2,3,4,5);    B.int myA[]=new int(5);

C.int myA[];myA[]=new int[5];   D.int[]myA={1,2,3,4,5,6};

5.某Java程序的类A需要利用Swing创建无边框窗口,则A需要继承的类是 A

A.JWindow  B.JApplet  C.JFrame  D.JDialog

6.在以下供选的鼠标事件中,MouseMotionListener接口能处理的是 B

A.按下鼠标键  B.拖动鼠标  C.鼠标进入  D.鼠标松开

7.在以下代码中,能正确创建Font对象的是 C

A.new Font(″宋体″,斜体,20);   B.new Font(″楷体″,20,正常);

C.new Font(″楷体″,Font.BOLD,l 8);  D.new Font(″楷体″,1 8,Font.BOLD);

8.某线程正处于运行状态,则在以下选项中,不可能是它的后继状态的是 B

A.就绪状态 B.新建状态   C.阻塞状态  D.死亡状态

9.某Java程序用类JFileChooser来实现打开和保存文件对话框。当对话框的返回

值是JFileChooser.APPROVE_OPTION时,程序进一步的工作是 D

A.用方法getName()取得文件名称  B.用方法getPathO()取得文件路径

C.用方法getFile()取得文件内容  D.用方法getSelectedFile()取得文件对象

10.Java语言实现C/S模式时,需要使用网络套接字,套接字的内容包括 A

A.IP地址+端口号        B.IP地址+监控线程名  

C.监控线程名+端口号    D.IP地址+监控线程名+端口号

第二部分 非选择题(共90分)

二、填空题(本大题共l0小题,每空2分,共20分)

11.一个Java小应用程序必须定义成一个子类,它的超类是__Applet___。

12.在Java语言中,左移运算符是__<<__。

13.类A的成员变量x的类型是类B的,则类A和类B之间的关系是__has-a__。

14.以下代码:

StringTokenizer pas=new StringTokenizer(“ public static  void, main”,”  ,”);                              

System.out.println(“有单词”+pas.countTokens()+””);

的输出结果是_有单词4个___。

15.在JFrame子类的构造方法中,代码getContentPane0的作用是___获得JFrame子类对象的内容面板____。

16.用JScrollBar创建一个垂直滚动条对象时,需要指定的常量是___JScrollBar.VERTICAL__。

17.在异或模式下绘图时,实际绘制的颜色是由3种颜色作特定的运算确定的:当前正要绘

制的颜色、原先绘制的颜色以及__模式设定的颜色___。

18.处于运行状态的线程执行yield()方法,该线程将进入___就绪___状态。

19.在Java语言中,客户端使用的套接字类是___Socket____。

20.在Java语言中,DriverManager类的作用是加载驱动程序和___建立与新数据库的连接___。

三、简答题(本大题共6小题,每小题3分,共l8分)

21.已知整型变量n,当n的值为0时,输出“正常”,否则输出“异常”。请写出使用switch

语句实现此功能的代码。

switch(n){

    case 0: System.out.println(“正常”); break;

    default: System.out.println(“异常”);

}

 

22.请写出在类、方法、变量之前加上修饰字final的作用。

用final修饰类,声明该类是不能被再继承的类。

用final修饰方法,声明该方法不能被子类的方法覆盖。

用final修饰变量,声明该变量的值不能被改变。

 

23.请列举出能产生ActionEvent事件类型的3种组件。

JButton、JCheckBox、JComboBox、JMenuItem、JRadioButton

 

24.某程序用以下代码弹出一个对话框:

int answer=JOptionPane.showConfirmDialog(null, “确实要退出吗?”,”退出确认”, OptionPane.YES_NO_CANCEL_OPTION);

如果程序中anwser的值等于CLOSED_OPTION,请写出用户对该对话框的操作内容。

用户直接关闭对话窗口。

 

25.请写出用矩形类Rectangle2D创建对象r的代码,对象r的左上角坐标是(20,30),宽是50,高是70。

Rectangle2D r=new Rectangle2D.Double(20,30,50,70);

 

26.URL对象的格式是:<METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>,请写出其中HOSTNAME的意义。

HOSTNAME是文档和服务器所在的Internet主机名或IP地址。

 

四、程序填空题(本大题共5小题,每空2分,共20分)

27.方法void moveZeroFront(int a[])的功能是将数组中的所有值为0的元素都移到数组的前端,而把非0元素放于所有0的后面。

提示:顺序考察数组元素,当发现是非0时,就让该数留在原来位置,当发现是0时,

就与前面的第一个非0数交换。变量zero表示移动过程中遇到的0的个数。

void moveZeroFront(int a[]){

         for(int i=0,zero=0;i<a.length;i++)

                   if(a[i]==0){

                            a[i]=a[zero]; a[zero]=0; zero++;

                   }

}

 

28.这里给出的是一个播放幻灯片小应用程序的部分代码。设幻灯片已由小应用程序的init()方法装入内存,并存放于mylmage数组中。currentlmage为要显示的幻灯片序号。

int currentImage;         Image[] myImage;

……

public void paint(Graphiics g){

       if((myImage[currentImage])!=null)

              g.drawImage(myImage[currentImage],10,10,

                     myImage[currentImage].getWidth(this),

                     myImage[currentImage].getHeight(this),this);

}

 

29.类ShareData用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。出于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData0供修改data的线程调用,该方法在data修改结束后,还应通知其它等待进入这个方法的线程。

class ShareData{

         int data=0;

         synchronized void modiData(int delta){

                   if(delta+delta>=0)  {data+=delta;

                   }else {

                            while(data+delta<0){

                                     try{wait();

                                     }catch(InterruptedException e){}

                            }

                            data+=delta;

                   }

                            notify();

         }

         ShareData(int initData){data=initData;}

}

 

30.方法void sumByLine(String f)的功能是为已知文件f创建缓冲式输入流,然后从文件逐行输入整数,求各行整数的和,并输出。   

public void sumByLine(String f){

         FileReader file=new FileReader(f);

         BufferedReader in=new BufferedReader(file);

         int n, sum, I;    String s;

         try{

                   while((s=in.readLine())!=null){

                            StringTokenizer tokens=new StringTokenizer(s);

                            n=tokens.countTokens();         sum=0;

                            for(i=0;i<n;i++){

                                     sum+=Integer.parseInt(tokens.nextToken());

                            }

                            System.out.println(“\t”+String.valueOf(sum)+”\n”);

                   }

                   in.close();

         }catch(IOException ie){System.out.println(“\tI/O出错!”);}

}

 

31. 方法readByURL(String urlName, JTextArea showArea)的功能是通过已知网址创建URL对象,获得URLConnection对象,设置网络连接,然后以数据流方式读取网页内容,并在文本区showArea中显示。

public String readByURL(String urlName, JTextArea showArea){

         try{

                   URL url=new URL(urlName);

                   URLConnection tc=url.openConnection();

                   tc.conncet();

/*以下省略的代码完成的工作是:用tc获得网络连接的InputStreamReader类对象,并将该对象转化成为缓冲式输入对象。以后,就能按行读取网络文本数据。*/

……

         }catch(MalformedURLException e){e.printStackTrace();}

         catch(IOException e){e.printStackTrace();}

}

 

五、程序分析题(本大题共5小题,每小题4分,共20分)

32.阅读下列程序,请写出该程序的运行结果。

class SuperClass{

         public int getData() {return 4;}

}

class SubClass extends SuperClass{

         public int getData() {return 5;}

}

public class Test32{

         public static int fac(SuperClass s){

                   int d=s.getData();    return d*(d+1)/2;

         }

         public static void main(String[] args){

                   System.out.println(“超类对象调用方法fac():”+fac(new SuperClass()));

                   System.out.println(“子类对象调用方法fac():”+fac(new SubClass()));

         }

}

超类对象调用方法fac():10

子类对象调用方法fac():15

 

33.阅读下列程序,请写出该程序的运行结果。

public class Test33{

         public static void main(String args[]){

                   System.out.println(makeNewString(“bjZ;”));

         }

         public static String makeNewString(String oldStr){

                   String s=new String(oldStr);

                   char[] repCh={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,

                                               ‘n’,’o’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’z’};

                   s=s.replace(repCh[repCh.length-1],’%’);

                   for(int i=repCh.length-2;i>=0;i--){

                            s=s.replace(repCh[i],repCh[i+1]);

                   }

                   s=s.replace(‘%’,repCh[0]);

                   return s;

         }

}

ckZ

 

34.阅读下列程序,请回答以下问题:

(1)在文本框中输入-18,在文本区中会显示多少行整数,各行有几个数?

在文本区中会显示3行整数,前2行各7个数,第3行4个数。

 

(2)在文本框中输入0,界面又会发生什么?

文本框和文本区的内容被清除。

 

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class MyFrame extends JFrame implements ActionListener{

         JTextField textF;       JTextArea textA;

         MyFrame(){

                   Container con=getContentPane();

                   con.setLayout(new BorderLayout());

                   textF=new JTextField(10);

                   textF.addActionListener(this);

                   textA=new JTextArea(6,10);

                   setSize(240,200);

                   con.add(textF,”North”);

                   con.add(textA,”Center”);

                   setVisible(true);

         }

         public void actionPerformed(ActionEvent e){

                   int n, d;

                   if(e.getSource()==textF){

                            n=Integer.parseInt(textF.getText());

                            if(n!=0){

                                     for(int k=1;k<=Math.abs(n);k++){

                                               d=(int)(Math.random()*1000%1000);

                                               textA.append(“ “+d);

                                               if(k%5==0)        textA.append(“\n”);

                                     }

                            }else{        textF.setText(null);           textA.setText(null);

                            }

                   }

         }

}

public class Test34{

         public static void main(String[] args){

                   new MyFrame();

         }

}

 

 

35.阅读下列程序,请回答以下问题:

(1)应用程序窗口中,有哪几个组件?

应用程序窗口中产生一个水平滚动条,下面是一个标签。

 

(2)当拖动滚动条滑块时,界面会有什么变化?

当拖动滚动条滑块时,标签里的文字的大小随着滑块的移动而变化。

 

import java.awt.*;  import java.awt.event.*;                  import javax.swing.*;

class MyFrame extends JFrame implements AdjustmentListener{

         JScrollBar js;    JLabel label;     int size=20;      String msg;

         MyFrame(String s, int x, int y, int w, int h){

                   super(s);

                   msg=s;

                   Container con=getContentPane();

                   con.setLayout(new BorderLayout());

                   js=new JScrollBar(JScrollBar.HORIZONTAL,20,10,1,210);

                   js.addAdjustmentListener(this);

                   con.add(js,BorderLayout.NORTH);

                   label=new JLabel(msg);

                   con.add(label,BorderLayout.CENTER);

                   setBounds(x,y,w,h);

                   setVisible(true);

         }

         public void adjustmentValueChanged(AdjustmentEvent e){

                   size=e.getValue();

                   Font f=new Font(“Courier”,Font.BOLD,size);

                   label.setFont(f);

         }

}

public class Test35{

         public static void main(String[] args){

                   new MyFrame(“可调组件测试程序”,200,200,500,500);

         }

}

 

36.阅读下列程序,请回答以下问题:

(1)程序是如何实现画面动态显示的?

JPanel子类DrawPanel实现Runnable接口,用线程实现画面动态显示。

 

(2)创建DrawPane对象时,第3个参数的值增大或减小,对画面的显示有何影响?

第3个参数的值增大,使画面更新变慢;减小,使画面更新变快。

 

import java.awt.*;            import javax.swing.*;

public class Test36 extends JFrame{

         public static void main(String args[]){

                   new GraphicsDemo(320,250);

         }

}

class DrawPanel extends JPanel implements Runnable{

         int x,y,w,h,d;

         DrawPanel(int w, int h, int d){

                   this.w=w;                   this.h=h;           this.d=d;

                   new Thread(this).start();

                   setBackground(Color.white);

         }

         public void paintComponent(Graphics g){

                   super.paintComponent(g);

                   g.setColor(Color.red);

                   g.fillOval(x+w/2, y+h/2, 10, 10);

         }

         public void run(){

                   int seta=0;                 double r;

                   int s=w/2;

                   for(int i=1;i<=500;i++){

                            r=s*Math.sin(2.0*seta/180.0*3.1415926);   //r=sin(2seta)

                            x=(int)(r*Math.cos(seta/180.0*3.1415926));

                            y=(int)(r*Math.sin(seta/180.0*3.1415926));

                            repaint();

                            seta=(seta+2)%360;

                            System.out.println(“ “+i+”: “+x+” “+y);

                            try{Thread.sleep(d);}

                            catch(InterruptedExcepiton e){}

                   }

         }

}

class GraphicsDemo extends JFrame{

         GraphicsDemo(int w, int h){

                   getContentPane().add(new DrawPanel(w,h,30));

                   setTitle(“线程演示”);

                   setSize(w+30,h+50);        setVisible(true);

         }

}

 

六、程序设计题(本大题共2小题,每小题6分,共l2分)

37.请编写方法int countOddNum(int[]a),该方法的功能是求已知数组a中奇数的个数。要求根据方法的功能写出方法的代码。

static int countOddNum(int[] a){

       int s=0, i;

       for(int i=0;i<a.length;i++)

              if(a[i]%2==1)  s++;

       return s;

}

 

38.类MenuWindow对象构建如下图所示的框架窗口,窗口有一个菜单条,有“学习”和“工作”两个菜单,其中“学习”菜单含“Java程序设计”菜单项;“工作”菜单含“项目设计”菜单项。窗口只有一个文本框,目的是用于显示菜单选择的结果。

注:以下是要求你编写的类MenuWindow的构造方法的部分代码。

class MenuWindow extends JFrame implements ActionListener{

       public static JTextField text;

       public MenuWindow(){

    //请将编写的代码填入答题卡上。

       super(“学习和工作之窗”);

       JMenuBar menubar=new JMenuBar();

       JMenu menu1=new JMenu(“学习”);

       JMenuItem java=new JMenuItem(“java程序设计”);

       menu1.add(java);        java.addActionListener(this);

       JMenu menu2=new JMenu(“工作”);

       JMenuItem project=new JMenuItem(“项目设计”);

       menu2.add(project);   project.addActionListener(this);

       menubar.add(menu);  menubar.add(menu2);

       setMenuBar(menubar);

//代码结束

              text=new JTextField(25);   getContentPane().add(text);

              setVisible(true);   setSize(200,150);       pack();

       }

}

Article type