C++期末考试复习范围doc.docx
- 文档编号:11725963
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:20
- 大小:35.37KB
C++期末考试复习范围doc.docx
《C++期末考试复习范围doc.docx》由会员分享,可在线阅读,更多相关《C++期末考试复习范围doc.docx(20页珍藏版)》请在冰豆网上搜索。
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指向派生类对象的指针可以隐式地转换为指向基类对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 期末考试 复习 范围 doc