计算机专业面向对象程序设计试1Word格式.docx
《计算机专业面向对象程序设计试1Word格式.docx》由会员分享,可在线阅读,更多相关《计算机专业面向对象程序设计试1Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
D.chara[10]=’5’;
4.以下正确的函数原型语句是(A)。
A.doublefun(intx,inty);
B.doublefun(intx;
inty);
C.doublefun(intx=5,inty);
D.doublefun(intx,y);
5.软件产品可被全部或部分重用于新的应用的能力叫做软件的(B)。
A.可维护性
B.可复用性
C.兼容性
D.正确性;
6.在多文件结构的程序中,通常把含有main()函数的文件称为(A)。
A.主文件
B.实现文件
C.程序文件
D.头文件
7.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新的地址赋给(C)。
A.elemHead
B.elemTail
C.elemHead和elemTail
D.elemHead或elemTail
8.假定AB为一个类,则执行“ABa,b
(2),c[3],*p=&
a;
”语句时共调用该类无参构造函数的次数为(4)次。
A.5
B.6
C.3
D.4
9.引入友元的主要目的是为了(C)。
A.增强数据的安全性
B.提高程序的可靠性
C.提高程序的效率的灵活性
D.保证类的封装性
10.假定类B是在类A的基础上扩充而得到的,那么就称(B)。
A.类A为基类或父类,类B为超类或子类
B.类A为基类、父类或超类,类B为派生类或子类
C.类A为派生类,类B为基类
D.类A为派生类或子类,类B为基类、父类或超类
二、填空题(每空2分,共20分)
1.由函数原型语句“intfun1(void);
”可知,该函数的返回类型为整型,该函数带有0个参数。
2.假定x是一个逻辑量,则x||false的值与x的值
相同
。
3.作为语句桔标号使用的C++保留字case和default只能用于switch
语句的定义体中。
4.对一个二维字符数组a进行初始化的数据表为{“123”,”456”,”789”},则a[1]元素对应的字符串为456。
5.NULL是一个符号常量,通常作为空指针值,它的具体值为‘\0’。
6.内联函数的定义模块与所属的类模块必须放在同一个文件中。
7.一个类的构造函数实现对该类对象进行初始化的功能。
8.假定为类AB定义了一个构造函数“AB(intaa=0):
a(aa){}”,则定义该类的对象时,可以有2种不同的定义格式。
9.重载抽取运算符>
>
时,其运算符函数的返回值类型应当是istream&
10.若多个基类及其派生类中都定义了同名的函数成员,要访问一个类中该成员函数时,就需要在函数名前加上类名和类区分符:
:
三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。
(每小题5分,共20分)
1.下面程序算出
的值。
#include<
iostream.h>
voidmain()
{
doublex,p1=1,p2=1,s=0;
inti,j=1;
cout<
<
"
输入x的值:
;
cin>
x;
for(i=1;
⑴ ;
i++){
p1*=x;
p2*= ⑵ ;
s+=j*p1/p2;
j= ⑶;
}
s<
endl;
}
⑴i<
=10
⑵i
⑶-j
2.假定结点类型的定义为“structNODE{intdata;
NODE*next;
};
”,下面算法是依次输出以L为表头指针的单链表中各结点的值。
voidff(NODE*L)
for(⑴;
p!
=NULL;
⑵)
⑶<
'
'
⑴NODE*p=L
⑵p=p->
next
⑶p->
data
3.一个带类的程序如下:
classA{
inta,b;
public:
A(intaa=0,intbb=0):
⑴{}//分别用bb和bb初始化a和b
voidmain(){
⑵;
//定义类A的对象x并用5初始化,定义y并用x初始化
⑶;
//定义p指针,指向对象x
⑴a(aa),b(bb)
⑵Ax(5),y(x)
⑶A*p=&
x
4.一个带类的程序如下:
⑴
//定义构造函数,使参数aa和bb的默认值为0,
//在函数体中用aa初始化a,用bb初始化b
A*p1,*p2;
⑵
;
//调用无参构造函数生成由p1指向的动态对象
⑶
//调用带参构造函数生成由p2指向的动态对象,
//使a和b成员分别被初始化为4和5
⑴A(intaa=0,intbb=0){a=aa;
b=bb;
⑵p1=newA
⑶p2=newA(4,5)
四、理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。
(每小题6分,共30分)
1.#include<
iomanip.h>
constintM=20;
intc2,c3,c5;
c2=c3=c5=0;
for(inti=1;
i<
M;
if(i%2==0)c2++;
if(i%3==0)c3++;
if(i%5==0)c5++;
c2<
c3<
c5<
运行结果:
963
2.#include<
string.h>
classCD{
char*a;
intb;
voidInit(char*aa,intbb)
{
a=newchar[strlen(aa)+1];
strcpy(a,aa);
b=bb;
char*Geta(){returna;
intGetb(){returnb;
voidOutput(){cout<
a<
b<
CDdx,dy;
dx.Init("
abcdef"
30);
dy.Init("
shenyafen"
3*dx.Getb()+5);
dx.Output();
dy.Output();
abcdef30
Shenyafen95
3.#include<
classBase
Base(inti,intj){x0=i;
y0=j;
voidMove(intx,inty){x0+=x;
y0+=y;
voidShow(){cout<
Base("
x0<
"
y0<
)"
private:
[w1]
intx0,y0;
classDerived:
publicBase
Derived(inti,intj,intm,intn):
Base(i,j){x=m,y=n;
NEXT("
x+x0<
y+y0<
intx,y;
Baseb(1,2);
b.Show();
Derivedd(3,4,10,15);
d.Move(5,6);
d.Show();
Base(1,2)
NEXT(18,25)
4.#include<
inti,s=0;
intN;
输入一个整数:
N;
=N;
i++)s+=i*i;
程序功能:
由键盘输入一个正整数N,计算并输出从1到N的各整数平方之和。
5.intf(constchar*s)
inti=0;
while(*s++)i++;
returni;
统计字符串中所包含的字符个数。
五、编程题(每小题5分,共10分)
1.根据下面函数原型编写一个函数,求出并返回由字符指针s所指向的字符串中包含的字符’a’和’A’的总个数。
intvoid[w2]
fun(char*a);
int
fun(char*a)
for(;
*a;
*a++)if(*a=='
a'
||*a=='
A'
)i++;
}或
do{if(*a=='
}while(*a++);
2.根据下面类中拷贝构造函数的原型写出它的类外定义。
classArray{
int*a;
//指向动态分配的整型数组空间
intn;
//数组长度
Array(intaa[],intnn){
//构造函数
n=nn;
a=newint[n];
for(inti=0;
n;
i++)a[i]=aa[i];
Array(Array&
bb);
//拷贝构造函数
Array&
Give(Array&
cc);
//实现cc赋值给*thia的功能并返回*this
intLenth(){returnn;
}
//返回数组长度
Array:
Array(Array&
bb)
n=bb.n;
i++)a[i]=bb.a[i];