计算机专业《Java程序设计方案》B卷.docx
《计算机专业《Java程序设计方案》B卷.docx》由会员分享,可在线阅读,更多相关《计算机专业《Java程序设计方案》B卷.docx(10页珍藏版)》请在冰点文库上搜索。
计算机专业《Java程序设计方案》B卷
2003级计算机专业《Java程序设计》B卷
<注意:
考试时间100分钟,将答案写在答题纸上)
班级:
________学号:
_________姓名:
___________
一、判断正误,如果错误请说明理由<4×4’=16’分)
1、Java只有通过实现Runnable接口的方式实现多线程操作。
2、Java中引入LayoutManager纯粹是为了程序界面美观。
3、Java中的线程是按照协作式多任务方式工作的,且线程可以共享数据和代码。
4、swing组件一般使用自己的事件处理模型。
二、问答题<4×6’=24’分)
1、简述Java通过JDBC进行数据库操作的步骤。
2、简述Java中的error和exception的区别。
3、简述Java的application和applet的区别。
4、怎样用数据输入流和输出流读写数据?
三、改错题<2×6’=12’分)
1、classAmIWrong
{
intdata1,data2。
AmIWrong(>
{data1=-1。
}
AmIWrong(intd>
{super(>。
//调用构造方法
data2=d。
}
}
2、publicstaticvoidmain(Stringargs[]>
{
try{
charch=(char>System.in.read(>。
...//其他语句
}
catch(Exceptionee>
{System.out.println(ee.toString(>>。
}
catch(IOExceptione>
{System.out.println(e.toString(>>。
}
}
四、程序填空题<2×8’=’16’分)
1、下面程序实现矩阵A和矩阵B相乘,结果存放在矩阵C中。
publicclassMatrixMultiply{
publicstaticvoidmain(Stringargs[]>{
intm,n,k。
inta[][]=newint[2][3]。
intb[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}}。
intc[][]=newint[2][4]。
for(m=0。
m<2。
m++>
for(n=0。
n<3。
n++>
(1>//初始化A的值,要求每个数组
//元素的值等于其下标值的乘积。
for(m=0。
m<2。
m++>{
for(n=0。
n<4。
n++>{
c[m][n]=0。
for(k=0。
k<3。
k++>
(2>//矩阵乘法运算
}
}
}
2、使用文件字节流对象读取文件并在屏幕上显示出来
importjava.io.*。
publicclassOpenFile
{
publicstaticvoidmain(Stringargs[]>(3>
//抛出输入输出异常
{
try
{//创建文件字节输入流对象rf,文件名为File.txt
(4>。
intn=512。
bytebuffer[]=newbyte[n]。
while((rf.read(buffer,0,n>!
=-1>&&(n>0>>//读取输入流
{
System.out.print(newString(buffer>>。
}
System.out.println(>。
(5>。
//关闭输入流
}
catch(IOExceptionioe>
{
System.out.println(ioe>。
}
catch(Exceptione>
{
System.out.println(e>。
}
}
}
3、继承Thread类创建两个线程分别奇数和偶数
publicclassThread1extendsThread
{
intk=0。
publicThread1(Stringname,intk>
{
super(name>。
this.k=k。
}
publicvoidrun(>//覆盖run方法的线程体
{
inti=k。
System.out.println(>。
System.out.print(getName(>+":
">。
(6>//实现同步
{
while(i<50>
{
System.out.print(i+"">。
i+=2。
}
System.out.println(getName(>+"end!
">。
}
}
publicstaticvoidmain(Stringargs[]>
{
Thread1t1=newThread1("Thread1",1>。
//创建线程对象t1,线程名为"Thread1",输出奇数
(7>。
//创建线程对象t2,线程名为"Thread2",输出偶数
t2.start(>。
//启动执行线程
(8>。
//启动执行线程"Thread1"
System.out.println("activeCount="+t2.activeCount(>>。
}
}
五、程序分析题<5’×3=15’分)
1、下面的Java程序是否可以正常编译运行?
为什么?
classFirst{
privateinta=1。
intb=2。
}
classSecondextendsFirst{
publicvoidmethod(>{
System.out.println(a+b>。
}
}
2、如果用参数a=4、b=2调用下面方法,执行结果是多少?
给出得到该结果的理由。
publicvoiddivide(inta,intb>{
try{
intc=a/b。
System.out.print("结果是"+c>。
}
catch(Exceptione>{
System.out.print("除操作异常">。
}
finally{
System.out.println("结束操作">。
}
}
3、下列程序能否正常运行,为什么?
classEllipse
{publicvoiddraw(>{System.out.println("Ellipse">。
}。
}
classCircleextendsEllipse
{publicvoiddraw(>{System.out.println("Circle">。
}。
}
publicclassOOTest2
{publicstaticvoidmain(String[]args>
{Circlec=newEllipse(>。
c.draw(>。
}
}
六、编程题<8’+9’=17’分)
1、编程统计100~1000间素数的个数。
2、编写一个由GeometicObject扩展的Triangle类,其定义如下:
PublicclassTriangleextendsGeometicObject
{
Privatedoubleside1,side2,side3。
PublicTriangle(doubleside1,doubleside2,doubleside3>
{//实现该构造方法
}
PublicdoublefindArea(>
{//实现求三角形面积的方法
}
PublicdoublefindPerimete(>
{//实现求三角形周长的方法
}
2003级计算机专业《Java程序设计》B卷答案
出题人:
满君丰考核性质:
闭卷考试
一、判断正误,如果错误请说明理由<4×4’=16’分)
1、答:
错误。
Java有两种方式实现多线程操作:
实现Runnable接口和继承Thead类。
2、答:
错误。
java为了实现跨平台的特性并且获得动态的布局效果而引入了LayoutManager,java将容器内的所有组件安排给Layoutmanager负责管理,如:
排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理。
3、答:
错误。
为尽量避免死锁等内存管理问题的发生,Java中的线程是按照抢占式多任务方式工作的,且线程可以共享数据和代码。
4、错误。
Swing有自己一套功能强大、界面友好的组件,但它依然沿用AWT事件处理模型。
二、问答题<4×6’=24’分)
1、答:
(1>打开一个数据库连接;(2>创建一个Statement对象;(3>执行一个查询并且返回一个结果集;(4>处理结果集;(5>关闭结果集和Statement对象;(6>关闭连接。
2、答:
错误。
error表示系统产生了很难恢复难的严重问题,比如说内存溢出等,不可能指望程序能处理这样的情况。
exception表示一种设计或实现问题,也就是说,它表示如果程序运行正常,从不会发生的情况,即便是发生exception情况,系统也可以做出相应处理。
3、、错误。
(1>Applet不是完整独立运行程序,需要嵌在浏览器中作为浏览器软件的一部分;(2>Applet程序中不需要有main方法,但是Applet程序的主类必须是类库中已定义好的类Applet或JApplet的子类。
(3>JavaApplication程序则必须另外书写专用代码来营建自己的图形界面。
4、答:
数据流DataInputStream和DataOutputStream用机器独立形式分别读和写Java的原始数据类型,允许使用者在一机器上写数据文件,以及从其他装有不同操作系统或文件结构的机器上读取文件。
他们常用于输入和输出数据。
三、改错题<2×6’=12’分)
1、答:
super(>改为使用this(>
2、答:
两个catch语句交换位置
catch(IOExceptione>
{System.out.println(e.toString(>>。
}
catch(Exceptionee>
{System.out.println(ee.toString(>>。
}
四、程序填空题<2×8’=’16’分)
1、(1>a[m][n]=m*n。
(2>c[m][n]+=a[m][k]*b[k][n]。
2、(3>throwsIOException
(4>FileInputStreamrf=newFileInputStream("File.txt">。
(5>rf.close(>。
3、(6>Synchronized(this>
(7>Thread1t2=newThread1("Thread2",2>
(8>t1.start(>。
五、程序分析题<5’×3=15’分)
1、不能运行,因为First类中变量a是private类型,所以在其他类中不能访问a。
2、结果是2结束操作。
因为计算4/2,先运行try{}中的语句,然后再运行finally{}中的语句
3、编译错误,因为子类型的引用不能指向父类型的对象。
六、编程题<8’+9’=17’分)
1、publicclassTotalPrime{
inti,j,k,primeCount=0。
booleanisSuShu。
for(i=100。
i<=1000。
i++>
{
isSuShu=true。
k=i/2。
for(j=2。
j<=k。
j++>
if(i%j==0>
{
isSuShu=false。
break。
}
if(isSuShu>
primeCount++。
}
System.out.println(”100~1000间素数的个数为:
”+primeCount>。
}
2、(1>this.side1=side1。
this.side2=side2。
this.side3=side3。
(2>doubles=(side1+side2+side3>/2。
Returnmath.sqrt(s*(s-side1>*(s-side2>*(s-side3>>。
(3>returnside1+side2+side3。