电大面向对象程序设计期末复习题Word文件下载.docx
《电大面向对象程序设计期末复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《电大面向对象程序设计期末复习题Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
25.如果在派生类的构造方法的定义中没有明确调用父类的构造方法,则系统在执行派生类的构造方法时将隐含调用父类的元参构造方法。
()
三、填空题,在横线上填写正确的内容(每空1分,共15分}
26.Java语言中的逻辑类型的关键字为,它的两种取值分别为关键宇true和false。
27.用于修饰类的成员具有公有访问属性的关键字为
28.假定整数变量x的值为10,则执行y=2*x++赋值后,y的值为。
29.类中的方法不需要给定返回值类型。
30.当类中的成员定义采用static关键宇修饰时,则称该成员为类的(静态/实例)成员。
31.类中的成员方法也可以使用关键字进行修饰,表示该方法不能被子类所重新定义。
32.在方法调用的参数传递中,若为(按值/引用)传递,方法体中对形参内容的修改不影响实参的值。
33.定义一个终结类时需要在类首部的关键字class前使用修饰符。
34.假定一个字符串对象x的值为"
abc"
,则x.concat("
def勺的值为。
35.假定要访问→维数组X中的第k个元素,则对应的元素(下标变量)表示为。
36.基本数据类型boolean对应的包装类为。
37.在Java语言中,程序运行时发生的运行错误又分为致命性的严重错误和非致命性的-般错误两种,异常属于错误。
38.Java语言中的System.out表示标准(输入/输出)流。
39.对于原子组件,根据功能的不同,可以被分为类。
40.每个线程具有四种基本状态:
就绪状态、、死亡状态和阻塞状态。
四、写出下列每个程序编译和运行后的输出结果
41.publicclassXXK{
publicstaticvoidmain(String[]args){
intx,y=O;
for(x=l;
x<
lO;
x+十)
ifCx%2==0)y+=x祷x;
System.out.println("
y="
+y);
42.publicclassXXK2{
privatefinalinta;
publicXXK2(inta){this.a=a;
)
publicintf1(intx){
if(x%2==1)returna+x;
elsereturna-x;
publicstaticvoidmain(String[]args){
XXK2x=newXXK2(3);
inty=x.f1(l();
y="
+y);
43.classRectangle{
privateinta,b;
publicRectangleCintaa,intbb){a=aa;
b=bb;
}
publicintareaO{returna势b;
publicintgirthO{return2券(a十b)
;
publicclassXXK3extendsRectangle{
private
Intc;
publicXXK3(intaa,intbb,intcc){super(aa,bb);
c=cc;
publicintvolumeO{returnareaO赞c;
public
intarrisLengthO{return2替girthO+4祷c;
publicstaticvoidmain(Stri吨口args)
{
XXK3
x=newXXK3(l,3,5);
intyl=
x.volumeO;
inty2=
x.arrisLength();
System.
Olit.println(y1+"
"
+y2);
44.publicclassXXK4{
int口[丁a={凹,
5,剖,{3,6,9},
{4,5,6}};
int8=0;
{orCinti=O;
i<
a.length;
i十十
{or(intj=O;
j<
a[i].length;
j+十
)
自+
=a[i][jJ;
System.out.printirk"
5="
十s)
45.
classABC{
inta,b;
publicABCCinta,intb){this.a=的this.
b=b;
publicintcompareToCABCx){returna祷b-x.
a祷x.
b;
}
publicclassXXK5{
publicstaticvoidmainCString[Jargs){
int[J[Jd={{3,肘,饨,6},{5,6},{2,9},饵,
7}
};
ABC口arznew
ABC[5j;
inti,k=O;
for(i=O;
d.length;
i++)
ar[iJ=newABCCd[iJ[OJ,d[
i丁[
lJ
forCi=l;
ar.length;
if(ar[i].compareToCar[k].O)k=i;
System.out.printlnC"
k="
+k);
一、单选题,在括号内填写正确的选项编号
1.B2.B3.D4.C5.D6.A7.A8.B9.C10.B
二、是非判断题,在每小题后面括号内打上对号J表示叙述正确,打上叉号×
11.X(错)12..J(对)13.X(错)14..J(对)15.X(错)16..J(对)17.X(错)18.X(错)19..J(对)20.X(错)21.X(错)22..J(对)
23.X(错)24.、J(对)25..J(对)
三、填空题,在横线上填写正确的内容
26.boolean27.public28.2029.构造30.静态31.final32.按值33.final34."
abcdef"
35.x[k一lJ36.Boolean
37.一般38.输出39.340.运行状态
41.y=12042.y=一743.15,3644.s=4845.k=2
一、单项选题
1.设x和y均为bool量,则x&
&
y为真的条件是()。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
2.在下面循环语句中循环体执行的次数为()。
inti=0,s=0;
while(s<
20){i++;
s+=i;
}
A.4B.5C.6D.7
3.假定p是具有int**类型的指针变量,则给p赋值的正确语句为()。
A.p=newint;
B.p=newint*;
C.p=newint**;
D.p=newint[10];
4.以下关于函数模板叙述正确的是()。
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
5.在多文件结构的程序中,通常把类的声明单独存放于()中。
A.主文件B.实现文件C.库文件D.头文件
6.假定有定义“intb[10];
int*pb;
”,则不正确的赋值语句为()。
A.pb=b;
B.pb=&
b[0];
C.pb=newint;
D.pb=b[5];
7.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;
}”,则执行“Ax(0);
”语句后,x.a和x.b的值分别为()。
A.0和0B.0和1C.1和0D.1和1
8.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为()。
A.x.aB.x.a()C.x->
GetValue()D.x.GetValue()
9.C++的继承性允许派生类继承基类的()。
A.部分特性,并允许增加新的特性或重定义基类的特性
B.部分特性,但不允许增加新的特性或重定义基类的特性
C.所有特性,并允许增加新的特性或重定义基类的特性
D.所有特性,但不允许增加新的特性或重定义基类的特性
10.假定AB为一个类,则执行“ABx;
”语句时将自动调用该类的()。
A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数
11.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A.int*p=newint[30];
B.int*p=newint(30);
C.int*p=new[30];
D.*p=newint[30];
12.假定有“structBOOK{chartitle[40];
floatprice;
BOOK*book=newBOOK;
”,则正确的语句为()。
A.strcpy(book->
title,”WangTao”);
B.strcpy(book.title,”WangTao”);
C.strcpy(*book.title,”WangTao”);
D.strcpy((*book)->
13.假定有定义“intb[10];
D.pb=b[5];
14.假定指针变量p定义为“int*p=newint(100);
”,要释放p所指向的动态内存,应使用语句()。
A.deletep;
B.delete*p;
C.delete&
p;
D.delete[]p;
15.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。
A.可维护性B.可复用性C.兼容性D.正确性
16.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。
A.inB.inlineC.inLineD.InLiner
17.在关键字public后面定义的成员为类的()成员。
A.私有B.公用C.保护D.任何
18.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。
aD.x->
a()
19.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A.intAA:
:
a()B.intAA:
a()C.AA:
a()D.AA:
inta()
20.在多文件结构的程序中,通常把类的定义单独存放于()中。
二、填空题
1.假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为__________和__________。
2.执行char*p=newchar(’a’)操作后,p所指向的数据对象的值为________。
3.变量v定义为“doublev=23.4;
”,要使指针pv指向v,则定义pv的语句为______________。
4.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。
5.假定用户只为类AB定义了一个构造函数"
AB(intaa,intbb=0){a=aa;
}"
,则定义该类的对象时,其实参表中至少带有_________个实参。
6.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为__________。
7.一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。
8.重载一个函数的条件是:
该函数必须在参数的个数或参数对应的__________上与其它同名函数不相同。
9.一个指针类型的对象占用内存的________个字节的存储空间。
10.假定一个数据对象为int*类型,则指向该对象的指针类型为_______。
11.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为________。
12.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。
13.一个数组的数组名实际上是指向该数组________元素的指针,并且在任何时候都不允许________它。
14.重载一个函数的条件是:
该函数必须在参数的________或参数对应的__________上与其它同名函数不相同。
15.指针变量pv和pc定义为“void*pv=”Hello,word!
”;
char*pc;
”,要将pv值赋给pc,则正确的赋值语句是pc=___________pv。
16.若p指向x,则________与x的表示是等价的。
17.假定p为指向二维数组intd[4][6]的指针,则p的类型为________。
18.若y是x的引用,则对y的操作就是对_______的操作。
19.执行char*p=newchar(’a’)操作后,p所指向的数据对象的值为________。
20.执行________操作将释放由p所指向的动态分配的数据空间。
三、程序填充题,根据题意在横线上填写合适的内容。
2、已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:
其重载的运算符[]要对下标是否越界进行检查。
classARRAY{
int*v;
//指向存放数组数据的空间
ints;
//数组大小
public:
ARRAY(inta[],intn);
~ARRAY(){delete[]v;
intsize(){returns;
int&
operator[](intn);
___
(1)___operator[](intn)//[]的运算符成员函数定义
{
if(n<
0||___
(2)___){cerr<
<
"
下标越界!
exit
(1);
return___(3)___;
(1)
(2)(3)
3.类A的定义
classA{
char*a;
public:
A(){a=NULL;
A(char*aa){
a=___
(1)____char[strlen(aa)+1];
strcpy(a,aa);
}
___
(2)______//定义析构函数,删除a所指向的动态存储空间
};
(1)
(2)
4.已知一个类的定义如下:
#include<
iostream.h>
classAA{
inta[10];
intn;
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,
//用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素
//进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int____
(1)_____
intx=a[0];
for(inti=1;
n;
if(a[i]>
x)___
(2)___;
___(3)___;
(1)
(2)(3)
四、理解问答题,写出程序运行结果或程序(或函数)所能实现的功能。
1.#include<
voidmain()
{
inti,s=0;
for(i=2;
i<
=30;
i+=2)s+=i*i;
cout<
s="
s<
endl;
函数功能:
2.#include<
doublef1(intn){
doublesign=1,s=1;
for(inti=2;
=n;
i++){
s+=sign/(i*i);
sign*=-1;
returns;
inta;
cin>
>
a;
f1(a)<
函数功能:
3.#include<
classA{
inta,b;
A(){a=b=0;
A(intaa,intbb){a=aa;
intSum(){returna+b;
int*Mult(){
int*p=newint(a*b);
returnp;
voidmain(){
Ax(4,5),*p;
p=newA(2,3);
x.Sum()<
’’<
*(x.Mult())<
p->
Sum()<
*(p->
Mult())<
运行结果:
4.#include<
inta[10]={76,83,54,62,40,75,90,92,77,84};
intb[4]={60,70,90,101};
intc[4]={0};
for(inti=0;
10;
i++){
intj=0;
while(a[i]>
=b[j])j++;
c[j]++;
for(i=0;
4;
i++)cout<
c[i]<
’’;
运行结果:
五、编程题
根据下面类中拷贝构造函数的原型写出它的类外定义。
classArray{
int*a;
//指向动态分配的整型数组空间
//记录数组长度
Array(intaa[],intnn);
//构造函数,利用aa数组长度nn初始化n,//利用aa数组初始化a所指向的数组空间
Array(Array&
aa);
//拷贝构造函数
参考答案
一、单选题
1.A2.C3.B4.C5.D6.D7.A8.D9.C10.B11.A12.A13.D14.A15.B16.B17.B18.B19.A20.D
1.4112.‘a’3.double*pv=&
v;
4.类名5.16.~AB(){}7.101