自考java语言程序设计一04747试题及答案.docx
- 文档编号:30191777
- 上传时间:2023-08-06
- 格式:DOCX
- 页数:135
- 大小:724.46KB
自考java语言程序设计一04747试题及答案.docx
《自考java语言程序设计一04747试题及答案.docx》由会员分享,可在线阅读,更多相关《自考java语言程序设计一04747试题及答案.docx(135页珍藏版)》请在冰豆网上搜索。
自考java语言程序设计一04747试题及答案
2008年10月全国自考Java语言程序设计
(一)真题及答案
一、单项选择题(本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下述字符组合不能作为Java程序标识符的是( )
A.Aa12B.大xC.y小D.5x
2.以下程序代码的输出的结果是( )
intx=53;System.out.println(1.0+x/2);
A.27.0B.27.5C.1.026D.1.026.5
3.参照以下Java代码,以下四个叙述中最确切的是( )
classA{intx;staticinty;
voidfac(Strings){Syatem.out.println("字符串:
"+s);}
}
A.x、y和s都是成员变量B.x是实例变量、y是类变量、s是局部变量
C.x和y是实例变量、s是参数D.x、y和s都是实例变量
4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使用java.util包中的类是
( )
A.StringB.StringBufferC.StringTokenizerD.stringTokenizer
5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是( )
A.JFrame(s)B.window(s)C.newJFrame(s)D.super(s)
6.以下关于菜单的叙述中,正确的是( )
A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项
B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项
C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项
D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项
7.以下所述内容全部是字型要素的是( )
A.字体、字形和大小B.字体、风格和字号C.字形、风格和字号D.字形、颜色和字号
8.用Thread子类实现多线程的步骤顺序是( )
A.声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法
B.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例
C.创建Thread子类的实例,让线程调用start()方法
D.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法
9.为16位Unicode字符流提供读和写操作支持的类分别是( )
A.FileInputStream类和FileOutputStream类B.InputStream类和OutputStream类
C.FileReader类和FileWriter类D.File_Reader类和File_Writer类
10.能利用对象提供的方法获得流对象和实现网络连接的是( )
A.URLConnection对象B.URL对象C.InetAddress对象D.TCP/IP对象
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
11.一个小应用程序必须定义成一个_________。
12.用条件运算符构造一个表达式:
goal等于10时,表达式的值为“对了!
”,否则,表达式的值为“错了!
”。
这个表达式是_________。
13.类是对一组相同对象的描述,类概括了同类对象的共有性质:
_________。
14.设有数组a和b的定义如下:
int[]a={1,2,3};int[]b={4,5,6}
……
执行以下代码“a=b;”,除了完成赋值操作之外,引起系统额外要做的工作是_________。
15._________布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
16.Java语言为处理鼠标事件提供两个接口:
_________接口和MouseMotionListener接口。
17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。
如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_________。
18.程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:
一是编写线程的_________方法;二是建立线程实例。
19.BufferedWriter类是提供缓冲式输出的类。
程序需要先创建_________对象,再利用这个对象创建BufferedWriter对象。
20.在Java语言中,客户端使用的套接字类是_________。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。
22.如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。
Personp1=newStudent();
Personp2=newUndergraduate();
Students1=newPerson();
Students2=newUndergraduate();
Undergraduateug1=newPerson();
Undergraduateug2=newStudent();
Objectob=newStudent();
23.请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口方法。
24.请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。
设调用的对象是类型为Graphics的g。
25.某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。
26.JDBC是Java程序与数据库连接的API,请写出JDBC能做的三件事情。
四、程序填空题(本大题共5小题,每空2分,共20分)
27.方法intmaxDigit(intn)的功能是找出十进制整数n各位中最大的一位数字。
例如,n=23765,该方法的返回值是7。
staticintmaxDigit(intn){
intc=0,d;
while(n>0){
d=_______;
if(d>c)c=d;
n/=10;
}
________;
}
28.某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。
实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。
这里给出的是其中相应按钮事件的方法。
publicvoidactionPerformed(ActionEvente){
intsum;
if(e.getSource()==button){
Strings=text1.________;//获取text1中的信息
StringTokenizerfenxi=newStringTokenizer(s,",,,\n");
intn=fenxi.countTokens();
doublea[]=newdouble[n];
for(inti=0;i<n;i++){
Stringtemp=fenxi.nextToken();
a[i]=Double.valueOf(temp).doubleValue();
}
sum=0;
for(inti=0;i<n;i++){
__________;
}
text2.setText(""+sum);//刷新显示。
}
}
29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。
要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!
”的字样。
……
singingItem=new________("唱歌");//生成菜单项对象
……
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==singingItem)
text.setText(e.________()+"菜单项被选中!
");
}
30.某小应用程序实现幻灯片放映。
小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。
程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。
这里给出的是其中的paint()方法和mousePressed()方法。
finalintnumber=30;//假定幻灯片有30张
intcount=0;
Image[]pic=newImage[number];
publicvoidpaint(______gc){
if((pic[count])!
=null)
gc.drawImage(pic[count],10,10,pic[count].getWidth(this),
pic[count].getHeight(this),this);
}
publicvoidmousePressed(MouseEvente){
count=(count+1)%number;//循环逐张显示
__________;
}
31.以下定义的类shareDataManager用于管理多个线程共享数据data。
一些线程要减少data,另一些线程要增加data。
由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。
类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。
classShareDataManager{
intdata=0;
________voidmodiData(intdelta){
if(delta>=0){
data+=delta;
}else{
while(data<delta){
try{System.out.println("发生等待!
");
wait();
}catch(InterruptedExceptione){}
}
data-=delta;
}
_________;
}
ShareDataManager(intititData){data=initData;}
}
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的输出结果。
importjava.applet.*;importjava.awt.*;
classPoint{
intx,y;
Point(intxx,intyy){x=xx;y=yy;}
Point(Pointp){x=p.x;y=p.y;}
voidm(intdx,intdy){x+=dx;y+=dy;}
}
classCircleextendsPoint{
intr;
Circle(Pointp,intrr){super(p);r=rr;}
floatc(){return3.14f*2.0f*r;}
floata(){return3.14f*r*r;}
}
publicclasssampleextendsApplet{
Circleyuan;Pointd;
publicvoidinit(){d=newPoint(2,5);yuan=newCircle(d,10);}
publicvoidpaint(Graphicsg){
g.drawString("yuanCircle"+(int)(yuan.c()*100.0)/100.0,5,20);
g.drawString("yuanArea"+(int)(yuan.a()*100.0)/100.0,5,40);
}
}
33.阅读下列程序,请写出该程序的功能。
importjava.util.*;
publicclassClass1{
publicstaticvoidmain(Srtingargs[]){
Datedate1=newDate();
System.out.println(datel);
Stringt=datel.toString();
intendPos=t.indexOf(`C');
t=t.substring(11,endPos);
System.outprintln(t);
}
}
34.阅读下列程序,请写出该程序的功能。
importjava.applet.*;importjavax.swing.*;importjava.awt.event.*;
publicclassClasslextendsAppletimplementsActionListener{
JTextFieldtext1,text2;
publicvoidinit(){
text1=newJTextField(10);text2=newJTextField(10);
setSize(200,100);add(text1);add(text2);
text1.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){
longn;
if(e.getSource()==text1){
n=Long.parseLong(text1.getText());
text2.setText(String.valueOf(n*n));
}
}
}
35.阅读以下程序,请写出该程序的功能。
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;
classMyScrollBarextendsJscrollBar{
publicMyScrollBar(intinit,intlen,intlow,inthigh){
super(JScrollBar.HORIZONTAL,init,len,low,high);
}
}
classMyWindowextendsJFrameimplementsAdjustmentListener{
privateJTextFieldtext;
MyWindow(Strings){
super(s);
MyScrollBarmyBar=newMyScrollBar(10,10,0,255);
Containercon=this.getContentPane();
con.setLayout(newGridLayout(2,1));
this.setSize(200,100);
this.setLocation(100,100);
myBar.addAdjustmentListener(this);
text=newJTextField("",20);
con.add(text);con.add(myBar);
this.setVisible(true);
}
publicvoidadjustmentValueChanged(AdjustmentEvente){
MyScrollBarmyBar=(MyScrollBar)e.getAdjustable();
text.setText(""+myBar.getValue());
}
}
publicclassClass1{
publicstaticvoidmain(String[]args){
MyWindowmyWindow=newMyWindow("text5_4");
}
}
36.小应用程序创建一个线程。
例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。
请写出该程序中这个线程的工作内容。
importjava.applet.*;importjava.awt.*;
publicclassClass1extendsjava.applet.AppletimplementsRunnable{
ThreadredBall;GraphicsredPen;
intrx=0,ry=0;
publicvoidinit(){
setSize(250,200);
redBall=newThread(this);
redPen=getGraphics();
redPen.setColor(Color.red);
setBackground(Color.gray);
}
publicvoidstart(){redBall.start();}
publicvoidrun(){
while(true){
if(Thread.currentThread()==redBall){
rx=(int)(80*Math.random());
ry=(int)(80*Math.random());
redPen.setColor(Color.red);
redPen.fillOval(100+rx,100+ry,10,10);
try{redBall.sleep(500);}
catch(InterruptedExceptione){}
redPen.setColor(Color.gray);
redPen.fillOval(100+rx,100+ry,10,10);
}
}
}
}
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
38.一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。
两个按钮分别表示加和减运算。
当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。
以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。
注:
这里是给定部分的程序,你要编写的是actionPerformed(ActionEvente)方法。
importjava.applet.*;importjavax.swing.*;
importjava.awt.*;importjava.awt.event.*;
classPanel1extendsJPanel{
JTextFieldtext1,text2,text3;JButtonaddButton,subButton;
Panel1(){
text1=newJTextField(10);text2=newJTextField(10);
text3=newJTextField(10);setLayout(newGridLayout(5,1));
addButton=newJButton("加");subButton=newJButton("减");
add(text1);add(text2);
add(text3);add(addButton);add(subButton);
}
}
publicclassClasslextendsAppletimplementsActionListener{
Pane1panel;
publicvoidinit(){
setSize(100,200);panel=newPanel1();add(panel);
(panel.addButton).addActionListener(this);
(panel.subButton).addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){//这里是你要编写的代码
2008年10月全国自考Java语言程序设计
(一)真题答案
一、单项选择题
1:
参考答案:
D
参考解析:
(P8)本题考核知识点是Java语言标识符命名规则。
Java语言标识符可以按以下规则任意命名:
①由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。
②限定标识符的第一个字符不能是数字字符。
选项D答案第一个字符是数字字符。
2:
参考答案:
A
参考解析:
(P14)本题考核知识点是Java算术运算符——“/”。
“/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。
所以当x=53时,x/2=26。
3:
参考答案:
B
参考解析:
(P46)本题考核知识点是实例变量、类变量、局部变量。
类的成员变量分为实例变量和类变量。
在定义成员变量时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。
类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不属于类的某个对象。
引用类变量的途径有两条,或通过类,或通过对象。
类的方法体中定义的变量称为局部变量,方法参数也属于局部变量。
4:
参考答案:
C
参考解析:
(P77)本题考核知识点是StringTokenizer类。
java.util包中的类StringTokenizer用于语言符号(单词)的分析,分析出字符串中的单词。
另外还有命名的习惯约定(行业习惯,不是规定):
一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。
5:
参考答案:
D
参考解析:
(P91)本题考核知识点是JFrame类和关键字super。
在用Swing编写GUI程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容,这时可以使用超类的构造方法完成窗口的标题设置即super(s)。
选项C完整的使用形式可以这样:
JFramemyWin=newJFrame(s)//创建JFrame窗口对象myWin,标题是s但这样不符合本题题干“为程序的子窗口设定标题”的要求。
6:
参考答案:
A
参考解析:
(P118)
7:
参考答案:
B
参考解析:
(P137)本题考核知识点是字型要素。
Java的文字字型有三个要素:
字体、风格和字号。
常用的字体有TimesNew
Roman、Symbol、宋体和楷体等。
常用的风格有正常、粗体和斜体,分别用三个常量表示:
Font.PLAIN、Font.BOLD和Font.ITALIC,风格可以组合使用。
字号是字的大小,单位是磅。
8:
参考答案:
D
参考解析:
(P162)本题考核知识点是多线程。
在Java中实现多线程一般情况下是先声明Thread类的子类,在子类中重载run()方法,然后创建这个子类的实例,让线程调用start()方法。
9:
参考答案:
C
参考解析:
(P175)本题考核知识点是输入输出流。
为Java的8位字节流数据的读和写操作提供支持
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 java 语言程序设计 04747 试题 答案