C++期末考试复习范围doc.docx

上传人:b****4 文档编号:11725963 上传时间:2023-03-31 格式:DOCX 页数:20 大小:35.37KB
下载 相关 举报
C++期末考试复习范围doc.docx_第1页
第1页 / 共20页
C++期末考试复习范围doc.docx_第2页
第2页 / 共20页
C++期末考试复习范围doc.docx_第3页
第3页 / 共20页
C++期末考试复习范围doc.docx_第4页
第4页 / 共20页
C++期末考试复习范围doc.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C++期末考试复习范围doc.docx

《C++期末考试复习范围doc.docx》由会员分享,可在线阅读,更多相关《C++期末考试复习范围doc.docx(20页珍藏版)》请在冰豆网上搜索。

C++期末考试复习范围doc.docx

C++期末考试复习范围doc

1考试题型为选择、判断、填空、程序阅读、简答、程序设计题。

2认真复习下面练习。

一、程序阅读题

1阅读下列程序

#include

#defineF(X,Y)(X)*(Y)

voidmain()

{

inta=3,b=4;cout«F(++a,b++)«endl;

}

程序运行结果是16_0

2阅读下列程序

Winclude

SdefineF(X,Y)(X)*(Y)

classLocation

{

intX,Y;

public:

voidinit(int二0,int二0);

voidvalucX(intveil){X=val;};

intvalueX0{returnX;};

voidvalueY(intval){Y=val;};

intvalueY(){returnY;};

voidLocation:

:

init(intinitX,intinitY)

{

X=initX;

Y=initY;

}

voidmain()

{

LocationA,B;

A.init();

cout«A.valueX()«endl;

A.valueX(5);

cout«A.valueX()«endl«A.valueY()«endl;

B.init(6,2);B.valueY(4);

cout«B.valueX()«endI«B.valueY()«endl;

}

程序运行结果为—05064,并且显示为—-列(选填一行或一列)

3阅读下列程序

#include

#defineSQR(X)X*X

voidmain()

{

inta=6,k=12,m=3;a/=k-SQR(m);cout«a«endl;

}

程序运行结果是a=2o4阅读下列程序

#inciude

classA

{

private:

constinta;

staticintb;

public:

A(inti):

a(i),r(a){b++;}voidprint(){cout«a«H,H«b«,t/t«r«endl;}constint&r;

};

intA:

:

b=0;

voidmain()

{

Aal(33);

al.print();

Aa2(44);

a2.print();

 

};

classBipublicA

voidpr(){cout«"2n«endl;}

};

voidpl(A&a)

{

a.pr();

}

voidp2(Aa)

{

a.pr();

}

voidmain()

{

Bb;

pl(b);

p2(b);

}

程序的运行结果是2

1

6阅读下列程序

#includc

usingnamespacestd;

classA

{

int*a;intn;intMaxLen;

public:

A():

a(0),n(0),MaxLen(0){};

A(int*aa,intnn,intMM)

n=nn;

MaxLen=MM;

if(n>MaxLen)exit

(1);

a二newint[MaxLen];

for(inti二0;i

//以i为循坏变量把aa数组中的每个元素赋值给a中对应元素。

}

70;

intGetValue(inti){returna[i];}

};A:

:

~A(){};//类外定义析构函数。

voidmain()

{

intb[10]={l,2,3,4,5,6,7,8,9,10};

Ar(b,10,10);

inti,s=0;

for(i二0;i<10;i++)s二s+r.GetValue(i);

〃以i为循环变量,把r对象的a数据成员中的元素依次累加到s中。

cout<

}

程序运行结果为s二55o

7阅读下列程序

#include

classA

{

inta;

public:

A(intaa=0){a=aa;cout«Ma="«a«endl;}

};

classB

{

intb;

public:

B(intbb=0){b=bb;cout«Mb=,,«b«endl;}

};

classC:

publicB

Aa;

public:

C(){cout«"Cdefaultconstructor"vvendl;}

C(inti,intj):

a⑴,B(j){cout«nCconstructor"«endl;)};

voidmain()

{

Ccl,c2(5,6);

}

程序的运行结果是:

b=()

a=0

Cdefaultconstructor

b=6

a=5

Cconstructor

8阅读下列程序

#include〈iostre3ni〉

usingnamespacestd;

classtest

{

private:

intnum;

floatfl;

public:

test();

intgetint(){returnnum;}floatgetfloat(){returnfl;}~test();

};

test:

:

test()

cout<<,zInitializingdefault/z<

num=O;f1=0;

test:

latest(){cout<<^Destructorisactive〃〈〈endl;}

voidmain()

{

testarray[2];

cout<

}

程序的运行结果是:

Initializingdefault

Initializingdefault

00

Destructorisactive

Destructorisactive

9以下程序的功能是:

通过指针操作,找出三个整数屮的最小值并输出,请填空。

#include

usingnamespacestd;

voidmain()

{

int*a,*b,*c,num,x,y,z;

a二&x;b二&y;c二&z;

cout«n输入3个整数:

M«endl;

cout«"a=n;cin»*a;

cout«nb=";cin»*b;

cout«"c=";cin»*c;

num=*a;

if(*a>*b)num=*b

if(num>*c)num=*c

cout«num«endl;

10分析程序,写出运行结果。

#include

usingnamespacestd;

classA

{

private:

intal,a2;

public:

A(inti=0,intj=0)

{

al=i;

a2=j;

}

〜A()

{

cout«Hal="«al«",a2=H«a2«endl;

}

};

voidmain()

{

Aa,b(5,8);

}

程序运行后的结果是:

31=5,32=8

al二0,a2二0

二、程序设计题

1创建一个Student类,该类的属性成员有:

姓名、学号。

函数成员有显式学生学号函数showID()o

(1)要求重载构造函数,通过构造函数对属性初始化。

(2)编写一段程序,生成一个学生对象。

同时显式学生学号。

#include

usingnamespacestd;

classStudentprivate:

charname[20];

intnumber;

public:

Student()

{

cout«H请输入学生姓名”;cin»name;

cout«"请输入学生学号";cin»number;

}

voidshowID()

{

cout«"学生学号:

H«number«endl;

}

};

voidmain()

{

Studentst;

st.showID();

}

2.设计一个抽象类Shape,使得其派牛类Circle和Square都定义计算面积函数Area()o

classShape

{

public:

virtualdoubleArea()=0;

};

classSquare:

publicShape

{

private:

doublelength;

public:

length=len;}

returnlength^length;}

radius=rad;}

returnradius^radius*3」4;

Square(doublelen=0){doubleArea(){

};

classCircle:

publicShape

{

private:

doubleradius;

public:

Circle(doublerad){doubleArea(){};

3创建一个Animal类,该类的属性成员有:

名字、重量。

函数成员有显式动物名字的函数showName()o

(1)要求重载构造函数,通过构造函数对屈性初始化。

(2)编写一段程序,生成一个动物。

同时显式动物名字。

#include

usingnamespacestd;classAnimalprivate:

charname[20J;

doubleweight;

public:

Animal()

{

cout«,r请输入动物名字:

”;cin»name;

cout«n请输入动物体重:

”;cin»weight;

}

voidshowName()

{

cout«"theanimalname:

u«name«endl;

}

};

voidmain()

{

Animalan;

an.showName();

}

4设计类Vehicle和类Car,定义其中的showmember()成员函数为虚函数。

#include

usingnamespacestd;

classVehicle

{

public:

virtualvoidshowmember()

{

cout«"VehcleH«endl;

}

};

classCar:

publicVehicle

{

public:

voidshowmember()

{

cout«"carn«endl;

}

};

voidmain()

{

Carcar;

car.showmember();

}

三、简答题(通过网络或者课本自己查找答案)

1简述什么是而向对象程序开发

面向对彖程序设计,开发各类软件的范型。

它是将软件看成是一个由抽彖组成的社会,这些对彖拥有足够的智能,能理解从其他对彖接受的信息,并从适当的作出响应,允许底层从高层对彖继承属性和行为,通过这样的设计思想和方法,将锁模拟的现实世界中的事物,直接映射到软件系统的解空间。

2简述什么是多态。

按字面意思为“多种状态”,在面向对象语言中,接口的多种不同的实现方式,即多态。

3什么是抽象类?

抽象类有何作用?

可以声明抽象类的对象吗?

抽象类指的是有纯虚函数,可包含一般类所包含的所有特性。

它不能实例化,并且常常部分实现或根本不实现。

通过继承它实现多态,后期绑定可以为将来耍实现的东西作为接口,实现重用性

不能

4什么是this指针?

它有何作用?

This指针是一个仅能被类的非静态成员函数所访问的特殊指针。

作用:

当一个对象调用成员函数时,编译器先将对象的地址赋给this

指针,然后调用成员函数。

四、选择题

1.下列关于指针的运算屮,非法的是(D)。

A、两个指针在一定条件下,可以进行相等或不相等运算;

B、可以将一个空指针赋值给某个指针;

C、一个指针可以加上两个整数值差;

D、两个指针在一定条件下可以相加;

2.在C++中,打开一个文件就是将这个文件与一个(B)建立关联;关闭一个文件就是取消这种关联。

A、类B、流;C、对象;D、结构;

3.C++屮的类有两种用法:

一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(B),派生出新的类。

A、重载B、继承;C、单继承;D、多继承;

4.多态性指的是(C)

A、以任何方式调用一个虚函数;B、以任何方式调用一个纯虚函数;

C、借助于指向对象的基类指针或引用调用一个虚函数;

D、借助于指向对象的基类指针或引用调用-•个纯虚函数;

5.constint*p说明不能修改(B)。

A、p指针B、p指针指向的变量

C、p指针指向的数据类型D、上述A,B,C三者

6.有关类的说法错误的是(D)

A、类时一种用户自定义的数据类型

B、只有类屮的成员函数才能存取类屮的私有数据

C、在类屮,如果不作特别说明,所指的数据均为私冇类型

D、在类中,如果不作特别说明,所指的成员函数均为公有类型

7.用于给对象取一个别名,引入对象的同义词的(C)。

A、指针B、结构体C、引用D、枚举

8.下而关于友元的描述,说法错误的是(D)

A、友元函数可以访问该类的私有成员

B、一个类的友元类中的成员函数都是这个类的友元函数

C、友元可以提高程序的运行效率

D、类与类之间的友元关系可以继承

9.下列关于对象概念的描述中,错误的是(A)。

A、对彖就是C语言屮的结构体变量;

B、对象代表着正在创建的系统中的一个实体;

C、对象是一个状态和操作(或方法)的封装体;

D、对彖Z间的信息传递是通过信息进行的;

10.类模板的模板参数(D)。

A、只可作为数据成员的类型B、只可作为成员函数的返冋类型;

C、只可作为成员函数的参数类型;D、以上三者皆可;

11・关于虚函数的描述中,正确的是(C)

A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函

数;

C、基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数;

D、派生类的熄函数与基类的虚函数具有不同的参数个数和类世;

12.已知intm=10;,下列表示引用的方法中正确的是(B)。

A^int&x二10;int&x=m;C、int&x;D>float&t=&m;

13.—个类的友元函数能够访问该类的(D)。

A^私有成员;B>保护成员;C、公有成员;D、所有成员;

14.K列运算符中,在C++中不能重载的是(A)。

A、?

B、+;C、-;D、[];

15•派生类的对象对它的基类成员中(A)是可以访问的。

A、公有继承的公有成员;B、公有继承的私有成员;

C、公有继承的保护成员;D、私有继承的公有成员;

16.卜•列运算符中,在C++中不能重载的是(A)。

A^:

:

B、〈二;C、++;D^&&;

17.磁盘文件操作中,打开磁盘文件的访问模式常量时,以追加方式打开文件的是(C)

A、.inB、.out;C、・app;D、.ate;

18.C++语言中关于构造函数的说法止确的是(C)

A、构造函数的函数名不必与类名相同;

C、每个类必定有构造函数;

19.以下对模板的说明,正确的是(

A、template

C^template

20.下列关于虚函数的叙述屮正确的是

A、从虚基类继承的函数都是虚函数;

C、只能通过指针和引用调用虚函数;

B>构造函数只能有一个;

D、构造函数必定有返冋值;

C)O

B、template

template

(B)o

B、焜函数不能使静态成员函数;

D、抽象类中的成员函数都是虚函数

21•下列对C++语言中字符数组的描述中,有错误的是(C)。

A、字符数组可以存放字符串;

B、字符数组中的字符串可以进行整体输入输Hh

C、可以在赋值语句中通过赋值运算符“二”对字符数组整体赋值;

D、字符数组的下标从0开始;

22.语句:

structex

{intx;floaty;charz;}example;

下面描述错误的是(B)

A、struct是结构类型的关键字;B、example是用户定义的结构类型名;

C、x,y,z都是结构体成员名;D、structex是用户定义的结构体类型;

23.变量的指针;其含义是指该变量的(B)o

A、值;B、地址;C、名;D、一个标志;

24.—个类的实例化是指(C)

A、定义类;B、指明具体类;C、创建类的对象;D、调用类的成员;

25•在下列函数原型屮,可以作为类AA构造函数的是(D)。

A、voidAA(int);B、intAA();C、AA(int)const;D>AA(int);

26•已知类A是类B的友元,类B是类C的友元,贝'J(D)o

A、类A—定是类C的友元;B、类C一定类A的友元;

C、类C的成员函数可以访问类B的任何对象;

D、类A的成员函数可以访问类B的对彖的任何成员;

27.若用数组名作为函数调用吋的实参,则实际上传递给形参的是(A)。

A、数组首地址B、数组的第一个元素值

C、数组屮全部元素的值D、数组元素的个数

28.当说明一个结构体变量时,系统分配给它的内存是(A)

A、各成员所需内存量的总和

B、结构体屮第一个成员所需内存量

C、成员中占内存量最人的成员所需的容量

D、结构体小最后一个成员所需的内存量

29.若冇说明:

inti,j=2,*p=&i;则能完成i二j赋值功能的语句是(B)

A、i=*p;B、*p二*&j;C>i=&j;D、i=**p;

30•下面有关构造函数的说法不止确的是(D)

A、构造函数名字和类的名字一样

B、构造函数在定义类变量时自动执行

C、构造函数无任何函数类型

D、构造函数冇11只有一个

31•对于任意一个类,析构函数的个数最多为(B)。

A、0B、1C、2;D、任意个;

32.静态数据成员初始化在(C)进行,而且前面不加static,以免与一般静态变量或对象混淆。

A、类体内;B、类体外;

C、构造函数内;D、成员函数体内;

五、填空题

1结构体变量成员的引用方式是(点)—运算符,结构体指针变量成员的引用方

式是使用(指向)—运算符

2对彖的三大基本特性是一多态性、继承性、封装性。

3模板根据对处理数据类型的要求不同可以分为两种类型:

—函数模板—和—

类模板—

4在^include命令中所包含的头文件,可以是—系统—定义的头文件,也可以是—用户—定义的头文件。

5如果把B类的成员函数voidfun()说明为类A的友元函数,则应在类A中加

入语句friendvoidB:

fun();

6所谓赋值兼容原则是指在公有派生情况下,一个—派生—类对象可以作为—基

_类对象来使用。

7如果一个类中有一个或多个纯虚函数,贝I」这个类称为—抽象函数声明虚函

数的方法是在基类11•的成员函数原型前加上关键字_virtual_。

8当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件隐含打开方

式是_ios:

:

in_。

9利用成员函数对双目运算符重载,其左操作数为_this指针—右操作数为—

成员函数参数。

10类模板的使用实际上是先将类模板实例化为一个模板类,再实例化成一个貝体的—对象_。

11C++语言允许定义由不同数据项组成的数据类型,称为—结构体—数组—和—结构体—都是C++语言的构造类型。

12任何类屮都允许有三利访问权限的成员,这三种访问权限的关键字分别是_publicprivatcprotected。

13如果说类B是类A的友元类,则类B的所有成员函数都是类A的友元函数

14运算符重载任然保持其原來的优先级别、—结合性—和—语法结构—

1510C++支持两种多态性:

—编译—时多态性和运行时的多态性。

为了实现多态性,派生类需耍重新定义基类中的—虚函数_。

16对虚函数使用对象指针或引用,系统使用—动态—联编;对虚函数使用对象调用时,系统使用—静态—联编。

17在类的定义中,将_二0—置于虚函数的函数原型末尾可以声明该函数为纯虚函数。

如果一个类中有一个或多个纯虚函数,则称这个类为—抽象类—。

18当使用ofstrcam流类定义一个流对象并打开一个磁盘文件时,文件隐含打开方式是一ios:

:

out_o

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

先执行调用—基类—的造函数,在执行调用—派生类—的构造函数。

20C++提供的预处理命令有嵌入指令、条件编译指令和—宏定义指令—o

六、判断题

1物理地址和逻辑地址都是唯一代表内存单元的地址。

(对)

2C++中,耍进行文件输入输出,必须耍创建流对象。

(对)

3而向对象程序有三大特性:

封装性、继承性与多态性。

(对)

4C++中,一个类可以有多个了类,也可以有多个父类。

(对)

5运算符重载时,参数个数必须固定。

重载函数参数个数与标准运算符保持一致。

(对)

6使用关键字class定义的类中缺省的访问权限是私冇的(private)。

(对)

7与引用参数相对应的实参必须是变量,接收的是对应实参的内存地址。

(对)

8对于每一个派生类对彖,先调用基类的构造函数,然后再调用派生类的构造函

数。

(对)

9C++语言源程序只能在编译时出现错谋信息,而在连接时不出现。

(错)

10在类中不能直接对所定义的数据成员进行初始化。

(对)

11每一个类必须有一个析构函数,而且必须用户口己定义,系统不会口动生成。

(错)

12结构体屮可以声明不同的数据类型,可以包插已经定义的结构体。

(对)

13指针变量是一个特殊性质的变量,用来存放指针的变量,或者就是一个地址变

量。

(对)

14对象引用作为函数参数比用对象指针更方使。

(对)

15C++不允许将构造函数和析构函数声明为友元函数。

(对)

16对单目运算符重载为友元函数,应说明一个形参,重载为成员函数时,不显

示说明形参。

(对)

17所有的函数模板定义都是用关键字template开始的。

(对)

18在私有继承屮,派生类对象可以访问基类的公有成员。

(错)

19虚函数用virtual关键字说明成员函数。

(对)

20cin流通常是与显示器相连的。

(错)

21指向派生类对象的指针可以隐式地转换为指向基类对

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

当前位置:首页 > 高等教育 > 其它

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

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