武汉工程大学级软件工程专业《Java语言程序设计》期末考试副本 71.docx
《武汉工程大学级软件工程专业《Java语言程序设计》期末考试副本 71.docx》由会员分享,可在线阅读,更多相关《武汉工程大学级软件工程专业《Java语言程序设计》期末考试副本 71.docx(42页珍藏版)》请在冰豆网上搜索。
武汉工程大学级软件工程专业《Java语言程序设计》期末考试副本71
武汉工程大学2019-2020学年第一学期
2017级软件工程专业《Java语言程序设计
》期末考试试题
姓名:
_________年级:
_______级专业:
_________学号:
___________
一、单项选择题(本大题共10小题,每小题1分,共10分)在每小题列出的四个备选项中只有一个是符合题目要求
的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.如果发生多个线程形成一个等待环,这样,所有线程都陷入相互等待的状态。
这种循环等待现象称为()(1分)
A:
互斥
B:
同步
C:
死锁
D:
临界
2.下面有关临界段叙述错误的是()(1分)
A:
多线程互斥使用共享资源的程序段被称为临界段
B:
临界段是一种加锁机制,与多线程共享资源有关
C:
临界段的作用是在任何时该一个共享资源只能供一个线程使用
D:
如果一个线程已进入某个共享资源的临界段,且还没有使用结束,其他进程可抢占这个共享的资源
3.以下程序代码的输出结果是()
intx=100;
System.out.println("5.5"+x%8);(1分)
A:
5.512
B:
5.512.5
C:
18
D:
5.54
4.在Java程序中有代码如下:
System.out.println(
(newStringTokenizer("Iamastudent","a")).countTokens());
则输出结果为()(1分)
A:
Iamastudent
B:
2
C:
3
D:
4
5.为8位字节流数据提供读操作支持的类是()(1分)
A:
FileInputStream
B:
FileOutputStrem
C:
FileReader
D:
FileWriter
6.下列有关抽象类及抽象方法的叙述错误的是()(1分)
A:
使用final修饰的类是抽象类
B:
使用abstract修饰的方法是抽象方法
C:
抽象类必须被继承才能使用,抽象类不可能有实例
D:
抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类
7.在编写Java程序访问数据库的过程中,用来处理驱动程序的加载和建立新数据库连接的类是()(1分)
A:
DriverManager类
B:
Statement类
C:
Connection类
D:
ResultSet类
8.在Java语言中执行如下语句后,i和j的值分别为()
inti=10;intj=++i;(1分)
A:
11和11
B:
10和10
C:
10和11
D:
11和10
9.包含当事件发生时从源传递给监视器的特定事件信息的对象是()(1分)
A:
事件对象
B:
源对象
C:
监视器对象
D:
接口
10.在Java程序中有如下设置:
setBackground(Color.blue);g.setXORMode(Color.red);g.setColor(Color.blue);g.drawLine(300,300,500,
500);则线的颜色是()(1分)
A:
蓝色
B:
红色
C:
黄色
D:
绿色
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
1.为选择框(JCheckBox)对象设定监视器的方法是:
。
(2分)
2.使用ResultSet对象的方法可将数据表游针移到插入位置,输入数据后,用方法insertRow()插入记录。
(2分)
3.题中横线处答案为:
(2分)
4.列表的选择模型有单选和多选两种,设置列表选择模型的方法是。
(2分)
5.多线程互斥使用共享资源的程序段,称为,它是一种加锁机制,与多线程共享资源有关,它的作用是在任何时该一个共享资源只能供一个线程使
用。
(2分)
6.流在某些应用中,不希望顺序读写流,而是需要采用随机访问方式,文件随机访问可利用类来实现。
(2分)
7.创建包中URL对象可能会产生异常。
(2分)
8.以下代码的输出结果是。
System.out.println(5>4||3<4);(2分)
9.Java语言中需要采用随机方式对文件进行读写,可利用类来实现。
(2分)
10.在Java语言中,package语句必须出现在程序文件的。
(2分)
三、程序填空题(本大题共5小题,每空2分,共20分)
1.某程序的界面包含了两个按钮button1和button2,一个文本框text。
要求实现当点击button1时,文本框中显示“请认真做题!
”;当点击button2
时,文本框中内容消失。
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassClass2801extendsJFrame
{
JButtonbutt1,butt2;
JTextFieldtext1;
JFramemyWin;
publicClass2801(Strings)
{
myWin=newJFrame(s);
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时,整个应用程序关闭。
若省略,关闭窗口时程序不终止,相当于setVisible
(false)
Containercon=myWin.getContentPane();
con.setLayout(newFlowLayout(FlowLayout.LEFT));
butt1=newJButton("b1");
butt2=newJButton("b2");
butt1.addActionListener(this);
butt2.addActionListener(this);
con.add(butt1);con.add(butt2);
text1=newJTextField(20);
con.add(text1);
myWin.pack();
myWin.setVisible(true);
}
publicstaticvoidmain(String[]args)
{
Class2801my=newClass2801("Class2801");
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==butt1)
text1.setText("请认真做题!
");
else
;
}
}(2分)
2.以下是生成菜单项对象,以及菜单项选择事件处理方法的代码。
要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!
”
的字样。
…………
singingItem=new("唱歌");//生成菜单项对象
…………
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==singingItem)
{
text.setText(e.()+"菜单项被选中!
");
}
}(2分)
3.回文整数是指正读和反读都一样的整数。
方法f2705(intn)的功能是判断十进制整数n是否为回文整数。
例如:
n=123321,该方法返回值为true;
n=123,该方法返回值为false。
booleanf2705(intn)
{
IntegerM=n;
Strings=;
inti=0;
while(i {
Strings1,s2;
s1=s.substring(i,i+1);
s2=s.substring(s.length()-i-1,s.length()-i);
if(!
())break;
i++;
}
if(i elsereturntrue;
}(2分)
4.程序运行结果如下图:
五个按钮按照紧凑方式显示在窗口中。
importjava.awt.*;
importjavax.swing.*;
publicclassClass2805
{
publicstaticvoidmain(String[]args)
{
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myWin.setBounds(100,200,400,200);
Containercon=myWin.getContentPane();
con.setBackground(Color.red);
con.setLayout(newFlowLayout());
JButtonbutton[]=newJButton[5];
for(inti=0;i<5;i++)
{
button[i]=newJButton("第"+(i+1)+"个按钮");
con.add(button[i]);
}
myWin.setVisible(true);
}
}(2分)
5.下面小应用程序实现在一个文本框中输入整数后回车,另一个文本框中显示这个整数的平方。
importjavax.swing.*;
importjava.applet.*;
importjava.awt.event.*;
publicclassC2802extendsApplet
{
staticJTextFieldtext1,text2;
CCc=newCC();
publicvoidinit()
{
text1=newJTextField(10);
text2=newJTextField(20);
add(text1);add(text2);
}
}
classCCimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==C2802.text1)
{
longn=;
C2802.text2.setText(n*n+"");
}
}
}(2分)
四、程序分析题(本大题共5小题,每小题4分,共20分)
1.写出下面程序的运行结果。
publicclassClass34ThreadTest
{
publicstaticvoidmain(Stringargs[])
{
Helloh=newHello();
Threadt=newThread(h);
t.start();
}
}
classHelloimplementsRunnable
{
inti;
publicvoidrun()
{
while(true)
{
System.out.println("Hello"+i++);
if(i==5)break;
}
}
}(4分)
2.阅读程序,画出程序运行后的界面并写出程序的功能。
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassClass3601implementsAdjustmentListener
{
JScrollBarmyBar;
JLabellabel;
publicClass3601(Strings)
{
JFramemyWin=newJFrame(s);
Containercon=myWin.getContentPane();
con.setLayout(newGridLayout(2,1));
myBar=newJScrollBar(JScrollBar.HORIZONTAL,5,20,0,300);
label=newJLabel(""+myBar.getValue(),JLabel.CENTER);
myBar.addAdjustmentListener(this);
con.add(label);
con.add(myBar);
myWin.setSize(300,100);
myWin.setVisible(true);
}
publicvoidadjustmentValueChanged(AdjustmentEvente)
{
label.setText(""+e.getAdjustable().getValue());
}
publicstaticvoidmain(String[]args)
{
newClass3601("Class3601");
}
}(4分)
3.阅读程序,画出程序运行后初始界面并写出程序功能。
importjava.util.*;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassClass3503implementsActionListener
{
JButtonbutton1,button2;
JLabellabel;
JTextAreatextA;
JTextFieldtext;
intn;
publicClass3503()
{
JFramemyWin=newJFrame("Class3503");
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon=myWin.getContentPane();
con.setLayout(newFlowLayout());
textA=newJTextArea("",5,10);
JScrollPanejsp=newJScrollPane(textA);
con.add(jsp);
button1=newJButton("sum");
button2=newJButton("ave");
button1.addActionListener(this);
button2.addActionListener(this);
con.add(button1);con.add(button2);
label=newJLabel("计算结果:
");
con.add(label);
text=newJTextField(10);
con.add(text);
myWin.setBounds(300,300,600,200);
myWin.setVisible(true);
}
intsum()
{
Stringstr=textA.getText();
StringTokenizertokens=newStringTokenizer(str);
n=tokens.countTokens();
ints=0;
for(inti=0;i {
Stringt=tokens.nextToken();
s+=Integer.parseInt(t);
}
returns;
}
floatavg()
{
return(float)sum()/n;
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==button1)
{
label.setText("输入数的和");
text.setText(""+sum());
}
if(e.getSource()==button2)
{
label.setText("输入数的平均值");
text.setText(""+avg());
}
}
publicstaticvoidmain(String[]args)
{
newClass3503();
}
}(4分)
4.阅读下列程序,写出程序运行结果。
publicclassClass3305
{
publicstaticvoidmain(Stringargs[])
{
byteb[]=newbyte[10];
for(intk=0;k<10;k++)
b[k]=(byte)(k+48);
Strings1=newString(b);Strings2=newString(b,3,6);
Strings3=newString("ABC");Strings4=newString("JAVA程序");
bytec[]=s3.getBytes();byted[]=s4.getBytes();
System.out.println(s2);
System.out.println(s3);
System.out.println(c.length);
System.out.println(d.length);
}
}(4分)
5.阅读下列程序,写出程序运行结果。
importjava.util.StringTokenizer;
publicclassC3301
{
publicstaticvoidmain(String[]args)
{
Stringss="publicstaticvoidmain";
StringTokenizerpas=newStringTokenizer(ss,"");
intn=pas.countTokens();
System.out.println(n);
Strings=pas.nextToken();
for(pas.nextToken();pas.hasMoreTokens();s=pas.nextToken())
System.out.println(s);
}
}
(4分)
五、程序设计题(本大题共2小题,每小题6分,共12分)
1.设计一个应用程序,求整数文件intfile1.txt中各行整数的和,并把和存入到另一个文件intfile2.txt中。
设整数文件中全是整数,整数序列被
分成行,各行整数个数不等且用空格分隔。
要求程序将文件中各行整数的和输出在另一个文件中。
(6分)
2.一个Java小应用程序,界面有两个文本框、一个文本区和一个按钮,两个文本框用于输入整数,文本区用于输出结果。
按钮表示求两个整
数之间的素数。
当两个文本框输入整数后,点击相应按钮,程序就将两个整数之间的所有素数用空格隔开每5个一行输出在文本区中。
以下是程序的
大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。
注:
这里是给定部分的程序,你要编写的是actionPerformed(ActionEvente)方法。
importjava.applet.*;
importjavax.swing.*;
importjava.awt.event.*;
classMyPanelextendsJPanel
{
JTextFieldtext1,text2;
JTextAreatextA;
JButtonbutton;
MyPanel()
{
text1=newJTextField(10);
text2=newJTextField(10);
textA=newJTextArea(10,10);
button=newJButton("求两个整数之间的素数");
add(text1);add(text2);add(button);add(textA);
}
}
publicclassC3802extendsAppletimplementsActionListener
{
MyPanelpanel;
publicvoidinit()
{
setSize(600,200);panel=newMyPanel();add(panel);
panel.button.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
//这里是你要编写的代码
}
}(6分)
六、简答题(本大题共6小题,每小题3分,共18分)
1.设有整型变量x和y的值分别为5和110。
请指出执行了下面循环语句后,变量x和y的值分别是多少?
do{x=y/x;y=y-x;}while(y>=1);(3分)
2.能将类同时声明为abstract和final吗?
为什么?
(3分)
3.请写出一条语句,能够绘制一条垂直线段,上端点坐标为(200,300),长为100像素。
设调用的对象是类型为Graphics的g。
(3分)
4.如果类A1是类A0的子类,类A2是类A1的子类,请指出以下代码行中哪些是不合法的?
①A0p1=newA1();
②A0p2=newA2();
③A1p3=newA0();
④A1p4=newA2();
⑤A2p5=newA0();
⑥A2p6=newA1();
⑦Objectob=newA1();(3分)
5.请写出一条J