c++模拟试题一Word文档下载推荐.docx
《c++模拟试题一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c++模拟试题一Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
C.可以改变运算符的结合性
D.可以改变运算符的功能
8.要将类A说明是类B的虚基类,正确的描述是()
A.classvirtualB:
publicA
B.classB:
virtualpublicA
C.virtualclassB:
D.classB:
publicAvirtual
9.下面关于静态成员的描述中,正确的是()
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象访问
10.假设Sample是个类,则语句"
Samplea[2],*p[3];
调用构造函数的次数为()
A.0B.2C.3D.5
二,填空题(本大题共10小题,每小题2分,共20分)
11.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成___类______.
12.在C++中要创建一个文件输入流对象fin,同时该对象打开文件"
Test.txt"
用于输入,则正确的声明语句是.__________________答案:
ifstreamfin(“test.txt”,ios:
:
in);
13.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句________________.答案:
friendvoidB:
fun();
14.是一个类,已有语句A"
A*p;
p=newA[10].;
要释放由p指向的动态空间,正确的语句应该是_________________.答案:
delete[]p;
15.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行______________.答案:
赋初值
16.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是______________.答案:
constdoublePI=3.14159;
17.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的_____________.答案:
形参的类型
18.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是______________.答案:
Aoperator++(A);
19.动态联编是通过基类类型的指针或引用调用_______________函数来完成.答案:
虚
20.基类的保护成员通过私有派生其在派生类中的访问权限是_____________.private或者私有的
三,改错题(本大题共5小题,每小题2分,共10分)
21.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见.
classSample{
private:
intdata;
Sample(){data=10;
public:
Sample(intd){data=d;
intoperatorint(){returndata;
}//intoperator+(){returndata;
};
22.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见.#include<
iostream.h>
classPoint{
intX,Y;
Point(){X=0;
Y=0;
Point(intx=0,inty=0){X=x;
Y=y;
voiddisplay(){cout<
x<
"
Y<
endl;
}//x改为大写的X
23.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include<
template<
classT>
voidSwap(T&
a,T&
b)
{Tt;
t=a,a=b,b=t;
voidmain()
{
inta=3,b=4;
charstr1[5]="
abcd"
str2[5]="
hijk"
;
Swap(a,b);
Swap(str1,str2);
//需要特定模板
a="
a<
b="
b<
cout<
str1="
str1<
str2="
str2<
24.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include<
classBase{
virtualvoidfun(){cout<
Basefunction"
classDerived:
publicBase
{public:
voidfun(){cout<
Derivedfunction"
}};
Baseb;
Derived*p=&
b;
//不能把基类指针赋给派生类指针
b.fun();
p->
fun();
}
25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include<
classA{
intx;
protected:
inty;
A(intxx,intyy){x=xx;
y=yy;
classB:
B(inta,intb):
A(a,b){}
′,′<
y<
}//x是不可访问的
voidmain(){Bb(5,10);
b.display();
}
四,完成程序题(本大题共5小题,每小题4分,共20分)
26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
2,14,3
#include<
inta;
A(inti=0){a=i;
intGeta(){returna;
classB{
Aa;
intb;
B(inti=0,intj=0):
①a(j){b=i;
}
voiddisplay(){cout<
a.Geta()<
voidmain()
{
Bb[2]={B(1,2),B(3,4)};
for(inti=0;
i<
2;
i++)
②b[i].display();
27.下面程序中A是抽象类.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
B1calledB2called
classA
{
①virtualvoiddisplay()=0;
classB1:
B1called"
classB2:
B2called"
voidshow(②A*p){p->
display();
B1b1;
B2b2;
A*p[2]={&
b1,&
b2};
show(p[i]);
28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
Name:
王小明Grade:
90
#include<
string.h>
classPerson
charname[20];
public:
Person(char*s){strcpy(name,s);
Name:
name<
classStudent:
publicPerson
intgrade;
Student(char*s,intg):
①Person(s){grade=g;
voiddisplay(){②display();
Grade:
grade<
Students("
王小明"
90);
s.display();
29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5.
classInteger
{intx;
Integer(inta=0){x=a;
①intget(){returnx;
IntegerMax(Integera,Integerb){if(②a.get()>
b.get())returna;
returnb;
voidmain()
Integera(3),b(5),c;
c=Max(a,b);
c.display();
30.请在下面的横线处填上适当内容,以使类的定义完整.
classArray
int*ptr;
intsize;
Array(){size=0;
ptr=0;
Array(intn){size=n;
ptr=newint[size];
Array(①Array&
a)//复制初始化构造函数
{size=a.size;
ptr=newint[size];
for(inti=0;
size;
i++)②ptr[i]=a.ptr[i];
//将源对象的动态数组内容复制到目标对象}
五,程序分析题(本大题共6小题,每小题5分,共30分)阅读下面的程序,写出程序运行的结果.
31.
classTest
{private:
intnum;
Test(intn=0){num=n;
num++;
~Test(){cout<
Destructorisactive,number="
num<
voidmain(){Testx[2];
Exitingmain"
Exitingmain
Destructorisactive,number=1
Destructorisactive,number==1
32.
#include<
classA
virtualvoidfun(intdata){cout<
classA:
data<
voidfun(char*str){cout<
str<
classB:
publicA
voidfun(){cout<
classB"
voidfun(intdata){cout<
A*pA;
Bb;
pA=&
pA->
fun
(1);
fun("
Hello"
);
1
Hello
33.
cout.fill('
*'
cout.width(10);
123.45"
cout.width(8);
cout.width(4);
****123.45
**123.45
123.45
34.
classNum{
intX,Y;
Num(intx,inty=0){X=x;
voidvalue(intx,inty=0){X=x;
voidvalue()
X;
if(Y!
=0)cout<
(Y>
0?
'
+'
-'
)<
Y:
-Y)<
i'
Numn
(1);
n.value();
n.value(2,3);
Numm(3,-4);
m.value();
2+3i
3-4i
35.
classSample
inti;
staticintcount;
Sample();
voiddisplay();
Sample:
Sample(){i=0;
count++;
voidSample:
display(){cout<
i="
i++<
count="
count<
intSample:
count=0;
Samplea,b;
a.display();
b.display();
i=0,cout=2
36.
A(intaa=0){a=aa;
classB
B(intbb=0){b=bb;
b="
classC:
publicB
C(){cout<
Cdefaultconstructor"
C(inti,intj):
a(i),B(j){cout<
Cconstructor"
Cc1,c2(5,6);
b=0
a=0
Cdefaultconstructor
b=6
a=5
Cconstructor
参考答案
(一)
一,单项选择题(本大题共lO小题,每小题2分:
共20分)
1.D2.B3.C4.C5.B6.D7.D8.B9.A10.B
11.类
12.ifstreamfin("
13.friendvoidB:
14.deletep;
15.赋初值
16.constdoublePI=3.14159;
17.形参的类型18.Aoperator++(A);
19.虚
20.私有的
三,改错题(本大题共5小题:
每小题2分,共lO分)说明:
各小题中,指出错误得l分,说明出错原因或改正正确得l分.
21.错误:
}修改:
intoperator+(){returndata;
22.错误:
X<
23.错误:
原因:
需要特定模板
24.错误:
amp;
b;
不能把基类指针赋给派生类指针
25.错误:
}原因:
x是不可访问的
四,完成程序题(本大题共5小题,每小题4分,共20分)
26.①.a(j){b=i;
②.b[i].display
27.①.virtualdisplay(){}②.A*p
28.①.Person(s)②.display()
29.①.intget(){returnx;
}②.a.get>
b.get()
30.①.Array&
a②.ptr[i]=a.ptr[i]
五,程序分析题(本大题共6小题,每小题5分,共30分)
31.ExitingmainDestructorisactive,number=1Destructorisactive,number=1
32.classB:
1classA:
Hello
33.****123.45**123.45123.45
34.12+3i3-4i
35.i=0,count=2i=0,count=2
36.b=0a=0Cdefaultconstructorb=6a=5CconstructorCconstructor