《java程序设计》考试试卷A及答案_第1页
《java程序设计》考试试卷A及答案_第2页
《java程序设计》考试试卷A及答案_第3页
《java程序设计》考试试卷A及答案_第4页
《java程序设计》考试试卷A及答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXXXXXXXXX学院

学年第一学期期末考试a卷

课程Java程序设计考试时间:120分钟

班级:姓名学号

题号—二三四五总分

得分

阅卷入

一、单选择题(每小题1分,共17分)

1.下列Java程序是一个()。

publicclassSimpleCircle{

doubleradius;

SimpleCircleO{

radius=1.0;

)

SimplcCirclc(doublcncvvRadius){

radius=newRadius;

1

doublefindArca(){

returnradius*radius*3.14159;

)

publicstaticvoidmain(String[]args){

SimpleCirclemyCircle;

myCircle=newSimpleCircle(5);

System.out.println("半径"+myCircle.radius)

System.out.println(+”的圆面积为"+myCircle.findArea());

A.java应用程序B.javaapplet程序

C.java插件D.java应用程序也是javaapplet程序

2.下列Java程序是一个()o

importjavax.swing.*;

publicclassMyAppletextendsJApplet{

publicvoidinit(){

add(newJLabel(44WelcometoJava”,JLabel.CENTER));

)

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame(t4Applet在框架中");

MyAppletapplet=ncwMyApplct();

frame.add(appIet,BorcerLayout.CENTER);

applet.init();

frame.sctLocationRclativcTo(null);

frame.selDefaultCloseOpeialion(JFrame.EXIT_ON_CLOSE);

frame.setSize(300,300);

frame.setVisible(true);

A.java应用程序B.javaapplet程序

C.java插件D.java应用程序也是javaapplet程序

3.编译Javaapplet源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为

()。

A.javaB..classC..htmlD..exe

4.在Javaapplel程序用户自定义的Applel子类中,一般需要重载父类的()方法来

完成创建用户界面。

A.start()B.slop()C.init()D.pain1()

5.设x=I,y=2,z=3,则表达式y+=z-----/++x的值是()o

A.3B.3.5C.4D.5

6.在java中,对于完成相对独立功能的模块一般使用()来实现。

A.过程B.子程序C.方法D.函数

7.设有数组定义如下:

int[]db={{2,9,-12,56,-87},{-18,6,17,-23},{31,43,-1},{-8,51},(100))

则db[2].lenglh等于()o

A.5B.4C.3D.2

8.已知一个类CC,其中定义了方法mm,mm的语法格式如下:

mm(〈表达式表〉)

其中〈表达式表,由1个、2个、3个或者4个〈表达式〉构成,〈表达式〉与〈表达式〉用逗

号(,)分隔,各〈表达式〉类型可以是double、float、int和long中的类型,相互间可以

不同,但只能是double、float、int和long中的类型。如此,我们可以说()。

A.mm是重载方法B.mm是静态方法C.mm是抽象方法D.mm的定义有错

9.已知一个类E和F的定义如下:

publicabstractclassF{publicclassEextendsF

intdl=12;intd2=18;

publicabstractiniml();publicintml(){

returndl;

)

publicintm2(){

returnd2;

)

)

Eo=newE();

则下列语句正确的是()o

A.Fo=newF();o.ml();B.Eo=newE();ints=o.ml()+o.m2;

C.ints=Em1()+E.m2();D.ints=E.ml()+E.m2();

10.已知一个类E和F的定义与第9题相同,则可以说()o

A.F是抽象类B.ml不是抽象方法C.E是F的父类D.m2是抽象方法

11.一个类的数据成员作为该类所有对象共享访问,则其应使用的修饰符是()。

A.publicB.privateC.staticD.protected

12.为某一个类的一个无参数无返回值的方法method书写方法头,以便使得该方法可以

通过该类类名来进行访问,则该方法头的签名为()。

A.staticvoidmethod()B.publicvoidmethod()

C.finalvoidmcthod()D.abstractvo:dmcthod()

13.为了创建图形用户界面,我们在创建的一个新框架中要添加若干组件。如果添加的

组件要按照上、下、左、右、中等五个方位来安排,则布局管理器要使用()o

A.FlowLayoutB.Gridl^ayout

C.BorderLiiyoutD.默认布局管理器

14.Graphics类是提供设备无关图形界面的抽象类,它可以在不同平台的屏幕上显示图形

和图像。当要显示组件时,()在本地平台上为组件创建一个Graphics对象,通过

该对象可以在GUI组件上绘画。

A.程序员事先编写的程序B.本地操作系统

C.Java编译器主动D.JVM自动地

15.当我们绘图时,为了保证在框架(或窗口)大小改变时,所绘制的图仍然不变,则

绘图的程序段应放置在()中。

A.框架的构造方法B.用户专门设计的方法

C.任何一个用户自定义方法D.重写的paintComponent方法

16.如果某源对象触发的事件类型一种,它就是ItemEvent,则成为该源对象的监听器应

实现的监听器接口为()。

A.ActionListenerB.IteniListener

C.KeyListenerD.actionPerfomied(ItemEvent)

17.下述关于接口的描述,不正确的是()°

A.有构造方法B.允许接口多重继承

C.所有的变量必须是publicstaticfinalD.接口不能用new操作符实例化

二、简答题(每小题5分,共15分)

1.比较一般类、抽象类和接口之间的异同。

2.supcr的作用有哪些?

3.类的实例变量与类变量(即静态变量)之间的差别。

三、程序阅读理解题(共36分)

1.(1()分)阅读下列程序,然后回答问题。

publicclassSum

{publicstaticvoidmain(Stringargs[])

{doublesum=0.0;

inti=1,num=2;

while(i<=100){

sum+=1.0/(double)num;

i=i+1;

num+=2

I

System.oul.prinUn("sum="+sum);

问:该程序完成什么功能?

2.(8分)阅读下列程序,然后回答问题。

importjava.awt.*;

publicclassabc{

publicstaticvoidmain(S(ringargs[]){

newFrameOutO;

classFrameOutextendsJFrame{

Buttonbtn;

FiamcOut(){

super(”计算机科学与技术专业)

selLayout(newBorderLayoul());

add(btn=newJButton("开始)BordcrLayout.SOUTH);

add(newJLabel("班级”),BorderLayout.NORTH);

setSize(300,200);

setVisble(true);

问:该程序完成什么功能?

3.(12分)阅读下列程序1和程序2,然后回答问题。

程序1:

publicclassTestAverage1{

publicstaticvoidmain(String[]args){

System.out.prinlln("3和5的平均值为"+average(3,5));

System.out.println("3.0和6.0的平均值为"+average());

System.out.println("3.0x6.0和9.9的平均值为"+average(3.0,6.0,9.9));

1

publicstaticintaverage(intx,inty){

return(x+y)/2;

publicstaticdoubleaverage(doublex,doubley){

return(x+y)/2;

)

publicstaticdoubleaverage(doublex,doubley,doublez){

return(x+y+z)/3;

)

)

程序2:

classAverage2{

publicdoubleavcragc(intx,inty){

return(x+y)/2;

}

)

publicclassTestAverage2extendsAverage2{

publicstaticvoidmain(String[]args){

TestAverage2av=newTestAverage2();

System.out.prinUn("3和6的平均值为"+av.average(3,6));

I

publicdoubleaverage(intx,inty){

return(x+y)/2.0;

)

)

问:(I)(6分)上述程序中有多个average实现方法,程序1中的这种现象称为什

么?程序2中的这种现象又称为什么?(2)(3分)运行程序1后屏幕上输出的结果是

什么?(3)(3分)运行程序2后屏幕上输出的结果是什么?

4.(6分)分析下列程序,说出运行类C时其输出结果是什么?

classA(

publicA(){

Sysylem.out.prinlln(“这是一个无参构造方法A”);

classBextendsA(

publicB()(

Sysytem.cut.println(“这是一个无参构造方法B");

classCextendsB{

publicstaticvoidmain(String[]args){

Bb=newB();

解答:

四、程序改错题(每小题4分,共4分)

1、下列程序定义了圆类CCircle,请指出错误之处,并进行修改(注意:修改时不能改

动任何方法的首部):

1/**定义一个圆类*/

2classCCircle

3

4/**定义数据域*/

5doubleradius=6.0;〃定义属性变量,且初始化为6.0

6/**定义构造方法*/

7/**定义一个不带参数的构造方法*/

8publicCCircle(){

9}

1()/**定义一个带参数的方法*/

11publicCCirclc(doublcradius){

12radius=radius;//对属性变量radius初始化为参数radius

13)

14/**定义方法*/

15/**定义一个设置半径值的方法*/

16voidsetRadius(doublenewRadius){

17radius=ncwRadius;

181

19/**定义一个计算面积的方法*/

20doublegetArea(){

21returnradius*radius*MATH.PI;

22

23

五、设计题(28分)

I、(8分)已知一个类Loan,其包含一个构造方法如下:

publicLoan(doubleannualInterestRate,intnumberOfYears,

doubleloanAmount);

其中annualInterestRate是贷款利率,numberOfYears是贷款期限(单位为年),

loanAmount:是贷款额(单位为元)。

该类还包含2个方法如下:

publicdoublegetMonthlyPayment();〃返回月还款数,单位元

publicdoublegctTotalPaymcntf);〃返回还款总数,单位元

现使用Loan类完成如下要求:

编写一个程序,用户界面为:

点击【计算还款】按钮时,可以显示月还款数和总计还款数。

完成上述功能的部分程序如下所示,请在空白处补全相应程序:

importjava.awt.*;

importjavax.swing.*;

importjavax.swing.*;

publicclassLoanMain(

privateJTextFieldjtfAnnua11nterestRate=newJTextField();

privateJTextFieldjtfNumberOfYears=newJTextField();

privateJTextFieldjtfLoanAmount=newJTextField();

privateJTextFieldjtfMonthlyPayment=newJTextField();

privateJTextFieldjtfTotaiPayment-newJTextField();

privateJButtonjbtComputeLoan=newJButton("计算还款”);

privateJPanelpl==newJPanel(newGridLayout(5,2));

privateJPanelp2=newJPanel(newFlowLayout());

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

frame.setTitle("贷款计算窗口;

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(330,200);

frame.setvisible(true);

)

publicLoanMain(){

jtfMonthlyPayment.setEditable(false);

jtfTotalPayment.setEditable(false);

jtfAnnuaIInterestRate.setHorizontaiAlignment(JTextField.RIG

HT);

jtfNumberOfYears.setHorizontalAlignment(JTextField.RIGHT);

jtfLoanAmount.setHorizontaiAlignment(JTextField.RIGHT);

jtfMonthlyPayment.setHorizontaiAlignment(JTextField.RIGHT);

jtfTotalPayment.setHorizontalAlignment(JTextField.RIGHT);

pl.add(newJLabml(“利率”));

pl.add(jtfAnnualInterestRate);

pl.add(newJLabel("贷款年限”));

pl.add(jtfNumberOfYears);

pl.add(newJLabel("贷款总额”));

pl.add(jtfLoanAmount);

pl.add(newJLabml(“月还款数”));

pl.add(jtfMonthlyPayment);

pl.add(newJLabel("还款总数”));

pl.add(jtfTotalPayment);

pl.setBorder(newTitledBorder("输入贷款利率、年份和总额”));

p2.add(jbtComputeLoan);

setLayout(newBorderLayout());

add(pl,BorderLayout.CENTER);

add(p2,BorderLayout.SOUTH);

)

privateclassButtonListenerimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

doubleinterest=

Double.parseDouble(jtfAnnuaIInterestRate.getText());

intyear=Integer.parselnt(jtfNumberOfYears.getText());

doubleloanAmount=

Double.parseL>ou£)le(jttLoanAmount.getText());

//显示月付款和总付款

jtfMonthlyPayment.setText(String,format(.2f,loan.getMont

hlyPayment()));

jtfTotaiPayment.setText(String.

Hn

format(%.2fzloan.getTotalPayment()));

)

)

2、(20分)已知三个类:Man、Student、Teacher,其中Man类是Student类和Teacher

类的父类,它们的属性变量和方法如下类图所示,同时还有一个接口,用于描述学生

和教师的主要职业,其提供的方法theMainPurpose。应返回其相应的耿业,教师的职业是

“教书”,学生的职业是“学习二类图中号表示私有的,“+”号表示公共的。请给

出上述三个类以及接口的定义。

(保留本页,作为试卷一部分)

参考答案

一、单选择题(每小题1分,共17分)

1.A2.D3.B4.C5.A6.C7.C8.A9.B10.A11.C12.A13.C

14.D

15.D16.B17.A

二、简答题(每小题5分,共15分)

I.解答:

相同之处:

1)常规类、抽象类和接口都是对事物的相同性质进行描述;

2)常规类、抽象类和接口都可以用于数据类型。

不同之处:

1)类中的方法必须在该类中实现,而抽象类中的方法可以不在该类中实现,接口中

的方法都是抽象方法;

2)接口中的数据只能是常量,而常规类和抽象类没有此限制;

3)接口不能有构造方法,而常规类和抽象类没有此限制;

4)常规类能使用new创建实例,而抽象类和接口不能使用new创建实例

2.解答:

super的作用有两个,一是调用父类的构造方法,一是调用父类的方法。

3.解答:

类的实例变量与类变量(即静态变量)之间的差别在于:类的实例变量是每一个该

类的实例都具有的。不同实例互不相干;而类变量是该类所有实例共享的一个变量,只

有一个备份。

三、阅读理解题(共36分)

1、解答:

其功能为:”算前100个偶数倒数之和

2、解答:

其功能为:定义一个窗口,其标题为“计算机科学与技术专业”,其中在下面有一个

“开始”按钮,上面显示有“班级”。

3.解答:

(1)程序1中的这种现象称为重载;程序2中的这种现象称为方法复盖(方法重写);

(2)运行程序1后屏幕上输出的结果是:

3和5的平均值为4

3.0和6.0的平均值为4.5

3.0、6.0和9.9的平均值为6.3

(3)运行程序2后屏幕上输出的结果是:

3和6的平均值为4.5

4.解答:

输出结果是:

这是一个无参构造方法A

这是一个无参构造方法B

四、改错题(共4分)

1、第12行有错了属性变量mdius和方法中参数radius同名,需要区分,应改为:

this.radius=radius;

评分:能正确指出错误,得2分;能正确改正错误得4分。

五、设计题(共28分)

1、解答(8分):

importjava.awt.*;

importjavax.swing.*;

importjavax.swing.*;

publicclassLoanMaicextendsJFrame{

privateJTextFieldjtfAnnuaIInterestRate=newJTextField();

privateJTextFieldjtfNumberOfYears=newJTextField();

privateJTextFieldjtfLoanAmount=newJTextField();

privateJTextFieldjtfMonthlyPayment=newJTextField();

privateJTexLFieldjtfTotdlPayment=newJTexLField();

privateJButtonjbtComputeLoan=newJButton("计算还款”);

privateJPanelpl=newJPanel(newGridLayout(5,2));

privateJPanelp2=newJPanel(newFlowLayout());

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

LoanMainframe=newLoanMain();

frame.setTitle("贷款计算窗口”);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(330,200);

frame.setVisible(true);

)

publicLoanMain(){

jtfMonthlyPayment.setEditable(false);

jtfTotalPayment.setEditable(false);

jtfAnnuallnterestRate.setHorizontalAlignment(JTextField.

HT);

jtfNumberOfYears.setHorizonta1Alignment(JTextField.RIGHT);

jtfLoanAmount.setHorizontalAlignment(JTextField.RIGHT);

jtfMonthlyPayment.setHorizontalAlignment(JTextField.RIGHT);

jtfTotalPayment.setHorizontalAlignment(JTextField.RIGHT);

pl.add(newJLabel("利率”));

pl.add(jtfAnnuallnterestRate);

pl.add(newJLab21("贷款年限”));

pl.add(jtfNumberOfYears);

pl.add(newJLab^l("贷款总额”));

pl.add(jtfLoanAmount);

pl.add(newJLabel("月还款数”));

pl.add(jtfMonthlyPayment);

pl.add(newJLabel("还款总数”));

pl.add(jtfTotalPayment);

pl.setBorder(newTitledBorder("输入贷款利率、年份和总额”));

p2.add(jbtComputeLoan);

setLayout(newBorderLayout());

add(pl,BorderLayout.CENTER);

add(p2,BorderLayout.SOUTH);

jbtComputeLoan.addActionListener(newButtonListener());

)

privateclassButtonListenerimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

doubleinterest=

Double.parseDouble(jtfAnnuaIInterestRate.getText());

intyear=Integer.parseint(jtfNumberOfYears.getText());

doubleloanAmount=

Double.parseDouble(jtfLoanAmount.getText());

Loanloan=newL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论