川大c++期末复习题.docx

上传人:b****5 文档编号:7238626 上传时间:2023-01-22 格式:DOCX 页数:14 大小:19.54KB
下载 相关 举报
川大c++期末复习题.docx_第1页
第1页 / 共14页
川大c++期末复习题.docx_第2页
第2页 / 共14页
川大c++期末复习题.docx_第3页
第3页 / 共14页
川大c++期末复习题.docx_第4页
第4页 / 共14页
川大c++期末复习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

川大c++期末复习题.docx

《川大c++期末复习题.docx》由会员分享,可在线阅读,更多相关《川大c++期末复习题.docx(14页珍藏版)》请在冰豆网上搜索。

川大c++期末复习题.docx

川大c++期末复习题

C++面向对象程序设计模拟试题四

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.下列关于C++函数的说明中,正确的是()。

A)内联函数就是定义在另一个函数体内部的函数

B)函数体的最后一条语句必须是return语句

C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型

D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式

2.假定MyCIass为一个类,那么下列的函数说明中,()为该类的无参构造函数。

A)voidMyClass();B)~MyClass(intn);

C)MyClass();D)~MyClass();

3.下列叙述中,错误的是()。

A)派生类可以使用private派生

B)对基类成员的访问必须是无二义性的

C)基类成员的访问能力在派生类中维持不变

D)赋值兼容规则也适用于多继承的组合

4.当一个类的某个函数被说明为virtual时,与这个函数的原型相同的函数在该类及其所有派生类中()。

A)都是虚函数B)只有被重新说明为vittual时才是虚函数

C)都不是虚函数D)上面都不正确

5.派生类的构造函数的成员初始化表中,不能包含()。

A)基类的构造函数B)派生类中子对象的初始化

C)基类中子对象的初始化D)派生类中一般数据成员的初始化

6.下列是重载加法运算符的函数原型声明,其中错误的是()。

A)MyClassoperator+(double,double);

B)MyClassoperator+(double,MyClass);

C)MyClassoperator+(MyClass,double);

D)MyClassoperator+(MyClass,MyClass);

7.派生类中的成员不能直接访问基类中的()成员。

A)publicB)privateC)virtualD)protected

8.实现运行时的多态性要使用()。

A)重载函数B)析构函数C)构造函数D)虚函数

9.如果在类MyClass外面的非成员函数中使用了函数调用MyClass:

:

f();则函数f()是类MyClass的()。

A)静态成员函数B)非静态成员函数

C)友元函数D)前面都不正确

10.由于常对象不能被更新,因此C++标准中规定()。

A)通过常对象只能调用它的常成员函数

B)通过常对象只能调用静态成员函数

C)常对象的成员都是常成员

D)通过常对象可以调用任何不改变对象值的成员函数

二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。

错填或不填均无分。

1.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:

先执行调用___________的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。

2.声明类模板应使用关键字()。

3.重载下标运算符“[]”的函数名为()。

3.重载运算符使用的关键字是()。

4.在面向对象方法中,类的实例称为()。

5.在类的对象被释放时,()函数会被自动调用。

三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。

1.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classA

{

public:

virtualvoidShow()const

{cout<<"ClassA"<

};

classB:

publicA

{

public:

voidShow()const

{cout<<"ClassB"<

};

voidShow(constA&obj){obj.Show();}

intmain()

{

Aa;Bb;

Show(a);Show(b);

A*p;

p=&a;p->Show();

p=&b;p->Show();

B*q;

q=&b;q->Show();

return0;

}

上面程序的输出结果为:

2.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

template

voidShow(ElemTypea[],intn)

{

for(inti=0;i

{cout<

}

intmain()

{

inta[]={1,6,9};

Show(a,sizeof(a)/sizeof(int));

Show(a,2);

cout<

return0;

}

上面程序的输出结果为:

3.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classMyClass

{

public:

MyClass(){count++;}

~MyClass(){count--;}

staticintGetCount(){returncount;}

private:

staticintcount;

};

intMyClass:

:

count=0;

intmain()

{

MyClassobj1;

cout<

:

GetCount()<

MyClassobj2;

cout<

:

GetCount()<

MyClassobj3;

cout<

MyClass*p=newMyClass;

cout<

:

GetCount()<

deletep;

cout<

:

GetCount()<

return0;

}

上面程序的输出结果为:

4.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classA

{

public:

A(){cout<<"A()"<

~A(){cout<<"~A()"<

virtualvoidf()const{cout<<"A:

:

f()"<

};

classB:

publicA

{

public:

B(){cout<<"B()"<

~B(){cout<<"~B()"<

voidf()const{cout<<"B:

:

f()"<

};

intmain()

{

Bobj;

A*p=&obj;

p->f();

return0;

}

上面程序的输出结果为:

5.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classSample

{

inti;

public:

Sample();

voidDisplay();

~Sample();

};

Sample:

:

Sample()

{

cout<<"constructor"<<",";

i=0;

}

voidSample:

:

Display(){cout<<"i="<

Sample:

:

~Sample(){cout<<"destructor"<

intmain()

{

Samplea;

a.Display();

return0;

}

上面程序的输出结果为:

6.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classA

{

inta,b;

public:

A():

a(0),b(0){cout<

A(intaa,intbb):

a(aa),b(bb){cout<

};

intmain()

{

Ax,y(2,3);

return0;

}

上面程序的输出结果为:

四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。

1.请完成下面的程序

#include

usingnamespacestd;

classTest

{

private:

inta;

public:

Test(intx=0):

[1]{}//将a初始化为x

voidShow()const{cout<<"a:

"<

};

intmain()

{

Testobj(168);

obj.Show();

return0;

}

2.请完成下面的程序

#include

usingnamespacestd;

classInteger

{

private:

inta;

public:

Integer(intx=0){a=x;}

[2](){returna;}//类型转换函数(将类类型转换为整型)

};

intmain()

{

Integera=6;

cout<

return0;

}

3.请完成下面的程序

#include

usingnamespacestd;

classComplex

{

private:

doublerealPart;

doubleimagePart;

public:

Complex(doublereal=0,doubleimage=0):

realPart(real),imagePart(image){}

doubleGetRealPart()const{returnrealPart;}

doubleGetImagePart()const{returnimagePart;}

Complexoperator+(constComplex&a)const

{

returnComplex([3]);//返回和

}

};

intmain()

{

Complexa(1,2),b(2,6),c;

c=a+b;

cout<<"a="<

cout<<"b="<

cout<<"c="<

return0;

}

4.将如下程序补充完整。

#include

usingnamespacestd;

classTest

{

private:

staticintcount;

public:

Test(){count++;}

staticvoidShow(){cout<<"共有"<

"<

};

[4]0;//为静态数据成员赋初值

intmain()

{

Testobj1,obj2,obj3;

Test:

:

Show();

return0;

}

五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)

1.试使用函数模板实现求一个数组各元素的最小值,要求编写测试程序。

函数模板声明如下:

template

TypeMin(Typea[],intn);//求数组a各元素的最小值

2.编写程序,定义抽象基类Shape(形状),由它派生出3个派生类:

Circle(圆形)、Rectangle(矩形)和Square(正方形),用函数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。

C++面向对象程序设计模拟试题四参考答巡查

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.C)2.C)3.C)4.A)5.C)

6.A)7.B)8.D)9.A)10.A)

二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。

错填或不填均无分。

1.参考答案:

基类

2.参考答案:

template

3.参考答案:

operator[]

4.参考答案:

对象

5.参考答案:

析构函数

三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。

1.参考答案:

ClassA

ClassB

ClassA

ClassB

ClassB

2.参考答案:

16916

3.参考答案:

1

2

3

4

3

4.参考答案:

A()

B()

B:

:

f()

~B()

~A()

5.参考答案:

constructor,i=0,destructor

6.参考答案:

00

23

四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。

1.参考答案:

[1]a(x)

2.参考答案:

[2]operatorint

3.参考答案:

[3]realPart+a.realPart,imagePart+a.imagePart或this->realPart+a.realPart,this->imagePart+a.imagePart

4.参考答案:

intTest:

:

count=

五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)

1.参考程序:

#include

usingnamespacestd;

template

TypeMin(Typea[],intn)

{

Typem=a[0];

for(inti=1;i

if(a[i]

returnm;

}

intmain()

{

inta[]={1,2,3,4,5,6,7,8,9};

cout<

return0;

}

2.参考程序:

#include

usingnamespacestd;

constdoublePI=3.1415926;

classShape

{

public:

Shape(){}

virtual~Shape(){}

virtualvoidShowArea()const=0;

staticdoubletotalArea;

staticvoidShowTotalArea(){cout<<"总面积:

"<

};

classCircle:

publicShape

{

private:

doubleradius;

public:

Circle(doubler):

radius(r){totalArea+=PI*r*r;}

~Circle(){}

virtualvoidShowArea()const{cout<<"圆面积:

"<

};

classRectangle:

publicShape

{

private:

doublelength;

doublewidth;

public:

Rectangle(doublel,doublew):

length(l),width(w){totalArea+=l*w;}

~Rectangle(){}

virtualvoidShowArea()const{cout<<"矩形面积:

"<

};

classSquare:

publicShape

{

private:

doublelength;

public:

Square(doublel):

length(l){totalArea+=l*l;}

~Square(){}

virtualvoidShowArea()const{cout<<"正方形面积:

"<

};

doubleShape:

:

totalArea=0;

intmain()

{

Circlec

(1);

c.ShowArea();

Rectangler(1,2);

r.ShowArea();

Squarez(3);

z.ShowArea();

Shape:

:

ShowTotalArea();

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1