东南大学学年C++下期末考试模拟试题Word文档下载推荐.docx
《东南大学学年C++下期末考试模拟试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《东南大学学年C++下期末考试模拟试题Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
int*p=a[2];
则*(p+1)的值为()。
A.15B.7C.14B.6
6.C++中多态性包括两种:
编译时的和运行时的。
运行时多态性是通过()实现的。
①函数重载②运算符重载③类继承关系④动态链接⑤虚函数
A.①和②B.③和⑤C.④和⑤D.③和④
7.关于动态内存分配,对delete运算符的下列说法中,()是错误的。
A.应与new运算符配合使用。
B.可以在类的成员函数中使用。
C.对同一个指针变量可任意多次使用该运算符。
D.若a是一个二维数组,则delete[]a;
可删除a所占用的存储空间。
8.设intx;
int*p2=&
x,*p1=&
x;
*p1=a;
*p2=*b;
则变量a和b的类型分别是()。
A.int和intB.int*和intC.int和int*D.int*和int*
9.下列关于成员函数的叙述不正确的是()。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
10.以下不属于类的访问权限的是()。
A.publicB.protectedC.staticD.private
11.若要使用ifstream流定义一个流对象并打开一个文件时,应在程序开始使用#include
命令,使之包含()。
A.iostream.hB.fstream.hC.stdio.hD.strstream.h
12.下列叙述不正确的是()。
A.对象之间可以相互赋值B.对象可以用作函数参数
C.对象可以用作数组的元素D.C++中可以有指向对象的指针
13.C++中不能被派生类继承的是()。
A.虚函数B.析构函数
C.静态成员函数D.运算符重载函数
14.不属于构造函数的特点是()。
A.具有与类名相同的函数名B.返回类类型返回值
C.允许重载D.在定义类的对象时自动调用
15.类型相同的两个指针不能进行的运算是()。
A.+B.-C.=D.==
二、填空题(每题2分,共20分)
1.函数参数传递方式有三种,分别为:
值传递、地址传递和()。
2.面向对象的程序设计的三大特征是:
()、继承性和多态性。
3.假定A为一个类,则语句A(A&
x);
是此类()构造函数的原型说明。
4.在类的继承与派生中,缺省的继承方式是()。
5.C++的两种多态性分别是()多态性和()多态性。
6.运算符重载有两种实现方法,一种是通过友元函数来实现,另一种通过()
函数来实现。
7.根据数据的组织形式不同,可将文件分为二进制文件和()文件。
8.若希望类中的成员只能被该类的成员函数及该类的派生类的成员函数访问,则应加
上访问权限:
()。
9.假定类A中有一个公用属性的静态数据成员b,在类外不通过对象名访问该成员b
的写法为()。
三、阅读程序题(每题5分,共30分)
1.下列程序运行结果为()。
#include<
iostream.h>
#include<
string.h>
chars(char*w,inty)
{
chart,*s1,*s2;
s1=w;
s2=w+y+5;
while(s1>
s2)
{
t=*s1++;
*s1=*s2--;
*s2=t;
return*s1;
}
return*s1+2;
}
voidmain(void)
char*p={"
123"
};
cout<
s(p,strlen(p));
2.下列程序的输出结果是()。
classA
public:
intX;
A(intx){X=x*x;
classS
{intx;
Aa;
S(intb,intc):
a(c)
{x=b+a.X;
voidshow(){cout<
"
x="
x<
endl;
{Ss1(2,3);
s1.show();
3.下列程序的运行结果是()。
intn;
A(){cout<
A"
;
classB:
publicA
B(){cout<
B"
classC:
publicB
C():
a(),B(){cout<
C"
{Cc;
4.下列程序的运行结果是()。
classBase
protected:
int*p;
Base(inta=0)
{p=newint(a);
~Base()
{deletep;
virtualvoidprint()
{cout<
p->
*p<
classDerived:
publicBase
staticinty;
Derived(intb=0)
{*p=b;
y++;
voidprint()
'
'
y<
intDerived:
:
y=100;
Derivedd(50);
Base*pb=&
d;
pb->
print();
Derivedd1(20);
d1.print();
5.下列程序的运行结果是()
classB
inta,b;
B(intaa=0,intbb=0){a=aa;
b=bb;
voidoperator++();
voidoperator++(int);
a<
\t'
b;
voidB:
operator++()
a+=2;
b+=5;
operator++(int)
a+=5;
b+=2;
Bx(3,5);
x++;
x.show();
6.下列程序的运行结果是()。
A(intn){num=n;
intcompare(Aa)
if(this->
num==a.num)return1;
elsereturn0;
private:
intnum;
Aaa(5);
Abb(10);
Acc(5);
pare(bb)<
pare(aa)<
四、完善程序(每空2分,供20分)
1.下面的程序中定义了圆类Circle、长方形类Rect、圆角长方形类RoundRect,其中
RoudRect共有继承于Circle和Rect类。
试完成程序。
classCircle
doubleradius;
Circle(doubler):
{}
doublearea(){return3.14*radius*radius;
classRect
doublewidth,height;
Rect(doublew,doubleh){width=w;
height=h;
doublearea(){returnheight*width;
classRoundRect:
publicCircle,Rect
charcolor[5];
RoundRect():
Circle(r),Rect(w,h)
strcpy(color,c);
char*getcolor(){returncolor;
RoundRectrr(0.8,1,0.25,"
白色"
);
rr.getcolor()<
2.下列程序通过重载运算符“*”,直接实现两个一维数组对应元素相乘运算。
设数组a,
b分别为:
inta[10]={1,2,3,4,5,6,7,8,910};
intb[10]={1,2,3,4,5,6,7,8,9,10};
相乘后的结果为{1,4,9,16,25,36,49,64,81,100}。
同时通过重载运算符“=”,直接实现
两个一维数组的赋值运算。
试完善程序。
intx[10];
A(){for(inti=0;
i<
10;
i++)x[i]=0;
A(int*p)
for(inti=0;
i++)
Aoperator*(Aa)
At;
returnt;