c++期末复习题Word格式.docx
- 文档编号:16431353
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:42
- 大小:41.33KB
c++期末复习题Word格式.docx
《c++期末复习题Word格式.docx》由会员分享,可在线阅读,更多相关《c++期末复习题Word格式.docx(42页珍藏版)》请在冰豆网上搜索。
一种是类的实例化,即生成类的_对象_____;
另一种是通过__继承_____派生出新的类。
33.运算函数中的关键字是_operator_____,它和运算符一起组成该运算符函数的函数名。
34.如果一个类中有一个或多个纯虚函数,则这个类称为__抽象类____。
35.文件的打开是通过通过使用类_fstream__的成员函数___open()_____来实现的。
36.设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为_9_。
37.已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+1的值为___d_____。
38.函数的形参在未被调用之前不会分配空间,函数的形参的
个数和类型要和实参的相同。
39.类的成员分为数据成员和_成员函数______。
40.类完成了面向对象程序设计的__封装___特性。
41.构造函数是__对象____被创建时自动执行,对象消失时自动执行的成员函数称为__析构函数_____对象
42.C++将类继承分为单继承和多继承两种。
43.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类中子对象类的析构函数,最后执行基类的析构函数。
44.类的__public__数据成员是类所有对象共享的成员。
45.友元函数__不是_类的成员函数。
(是/不是)
46.如果类A继承了类B,则类A称为___派生类____,类B称为____基类___。
47.运算符重载后,原运算符的优先级和结合特性___不会__改变。
(会/不会)
48.___纯虚函数___是一个在基类中说明的虚函数,但未给出具体的实现,要求在其派生类实现。
49.文件的关闭是通过通过使用类__fstream__的成员函数__close()______来实现的。
二、选择题
1.面向对象的(B)是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。
不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。
A.多态性B.封装性C.继承性D.重用性
2.C++的合法注释是(B)。
A./*ThisisaCprogram/* B.//ThisisaCprogram
C.“ThisisaCprogram”D./*ThisisaCprogram//
3.关于C++和C语言的描述中,(D)是错误的?
A.C是C++的一个子集B.C程序在C++环境可以运行
C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的
4.运算符+、<
=、=、%中,优先级最低的运算符是(C)。
A.+B.<
=C.=D.%
5.已知a=4,b=6,c=8,d=9,则“(a++,b>
a++&
&
c>
d)?
++d:
a<
b”值为(D)。
A.9B.6C.8D.0(假)
6.对while、do…while循环结构,下面说法正确的是(B)。
A.只是表达形式不同B.do…while结构中的语句至少执行一次(先执行后判断)
C.while结构中的语句至少执行一次D.条件成立时,它们有可能一次也不执行
7.对中断语句的说法下面不正确的是(B)。
A.用户可以指定中断的位置B.用户可以指定转移的位置
C.break语句可以跳出本循环D.continue语句可以结束本次循环
8.以下正确的说法是()。
A.用户若需要调用标准函数,调用前必须重新定义
B.用户可以直接调用所有标准库函数
C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数
D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数
9.下列哪个不是重载函数在调用时选择的依据()。
A.参数类型B.参数个数C.函数类型D.函数名
10.对数组名作函数的参数,下面描述正确的是(B)。
A.数组名作函数的参数,调用时将实参数组复制给形参数组
B.数组名作函数的参数,主调函数和被调函数共用一段存储单元
C.数组名作参数时,形参定义的数组长度不能省略
D.数组名作参数,不能改变主调函数中的数据
11.如果x是整型变量,则合法的形式是(D)。
A.&(x+5)B.*x C.&
*x D.*&
x
12.在定义一个共用体变量时,系统为其分配存储空间的原则是( B)。
A.按所有成员需要的存储空间总和分配。
B.按成员中占存储空间最大者分配。
C.按成员占存储空间最小者分配。
D.按第一个成员所需的存储空间分配。
13.下面(B)项是对构造函数和析构函数的正确定义。
A.voidX:
:
X(),voidX:
~X()
B.X:
X(参数),X:
~X()(析构括号没参数)
C.X:
~X(参数)
D.voidX:
X(参数),voidX:
14.拷贝构造函数具有的下列特点中,(D)是错误的。
A.
如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B.
拷贝构造函数只有一个参数,并且是该类对象的引用
C.拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
15.类的析构函数的作用是(D)。
A.一般成员函数B.类的初始化C.对象初始化D.删除对象
16.下列对派生类的描述中,(D)是错误的。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
17.继承具有(B),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A规律性B.传递性C.重复性D.多样性
18.C++类体系中,能被派生类继承的是(B)。
A.构造函数B.虚函数C.析构函数D.友元函数
19.下列关于动态联编的描述中,错误的是(D)。
A.动态联编是以虚函数为基础
B.动态联编是运行时确定所调用的函数代码的
C.动态联编调用函数操作是指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的(如果已经确定还谈什么动态)
20.关于纯虚函数和抽象类的描述中,错误的是(C)。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类(如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类)
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
21.C++源文件的扩展名为(A)。
A.cppB.cC.txtD.exe
22.在C++语言中,(A)的陈述是正确的。
A.能使用关键字并区分大小写B.能使用关键字并不区分大小写
C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写
23.运算符+、=、*、>
=中,优先级最高的运算符是(C)。
A.+B.=C.*D.>
=
24.下列不合法的变量名为(A)。
A.intB.int1C.name_1D.name0
25.已知x=43,ch=‘A’,y=0;
则表达式(x>
=y&
ch<
’B’&
!
y)的值是(C)。
A.0B.语法错C.1(!
y=!
0=1只有!
0为1,其他都为0)D.“假”
26.以下不正确的是(C)。
A.语句for(i=0;
;
i++)表示无限循环B.for(;
)表示无限循环
C.for()也表示无限循环(B才对)D.while
(1)表示无限循环
27.在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。
A.函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B.函数返回值的类型就是返回值表达式的类型(看ACD)
C.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D.函数返回值类型决定了返回值表达式的类型
28.如果一个函数无返回值,定义时它的函数类型应是(C)。
A.任意B.intC.voidD.无
29.在C++语言中,关于参数默认值的描述正确的是(B)。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置(如inta,b,c=1,d=33)
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
30.若有以下定义,则说法错误的是(D)。
inta=100,*p=&
a;
A.声明变量p,其中*表示p是一个指针变量
B.变量p经初始化,获得变量a的地址
C.变量p只可以指向一个整形变量
D.变量p的值为100(获得变量a的地址)
31.列关于结构体的说法错误的是(D)。
A.结构体是由用户自定义的一种数据类型
B.结构体中可设定若干个不同数据类型的成员
C.结构体中成员的数据类型可以是另一个已定义的结构体
D.在定义结构体时,可以为成员设置默认值
32.下列有关类的说法不正确的是(C)。
对象是类的一个实例
任何一个对象只能属于一个具体的类
C.
一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
33.(C)的功能是对象进行初始化。
A.析构函数B.数据成员C.构造函数D.静态成员函数
34.关于友元的描述中,(A)是错误的。
友元函数是成员函数(不能),它被说明在类体内
友元函数可直接访问类中的私有成员
友元函数破坏封装性,使用时尽量少用
D.
友元类中的所有成员函数都是友元函数
35.了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A)。
A.publicB.protectedC.privateD.static
36.派生类的对象对它的(A)是可以访问的。
A.公有继承的基类的公有成员B.公有继承的基类的保护成员
C.公有继承的基类的私有成员D.保护继承的基类的公有成员
37.多继承派生类构造函数构造对象时,(B)被最先调用。
A.派生类自己的构造函数B.虚基类的构造函数
C.非虚基类的构造函数 D.派生类中子对象类的构造函数
38.C++类体系中,不能被派生类继承的有(A)。
A.构造函数(构造函数和析构函数都不可被派生类继承)B.虚函数C.静态成员函数D.赋值操作函数
39.编译时的多态性可以通过使用(C)获得。
A.虚函数和指针B.重载函数和析构函数
C.虚函数和对象D.虚函数和引用
40.下列描述中,(D)是抽象类的特征。
A.可以说明虚函数B.可以进行构造函数重载
C.可以定义友元函数D.不能说明其对象
三、指出并改正下列程序段中的语法错误。
(6×
2,12分)
题目
答案
1.
floatx=3.26f;
int&
ref1=x;
1.float&
refl=x;
2.
intd1=3,d2=2;
int*constdp=&
d1;
dp=&
d2;
*dp=5;
2.去掉const
3.//Nums为已定义的类
Nums*fp;
fp=newint[4];
3.int改为Nums
4.
voidfunc(intfirst,int2_secnd);
4.voidfunc(intfirst,intsecnd);
数字不能在开头
5.
voidPixel:
operator=(Pixel&
p1,Pixel&
p2);
5.Pixel&
Pixel:
p1);
6.//Pixel有两个整型成员x和y
PixelPixel:
operator+=(Pixle&
p)const
{
x+=p.x;
y+=p.y;
return*this;
}
6.去掉const
2、指出并改正下列程序段中的语法错误。
intx=13;
constint&
ref=x;
ref=10;
1.去掉const
double*fp;
fp=newint(3);
2.double改成int
3.voidfunc(first,intsecnd);
3.voidfunc(intfirst,intsecnd);
4.//Pixel有两个整型成员x和y,其拷//拷贝构造函数定义如下:
voidPixel(constPixle&
p);
4Pixel(constPixle&
p);
friendPixel&
operator=(Pixel&
5.Pixel&
6.//Pixel有两个整型成员x和y
operator++(int)
x++;
y++;
}(返回值不能确定是哪个)
6.PixelPixel:
Pixeltemp;
temp.x=x++;
temp.y=y++;
returntemp;
四、程序填空
1.编写函数将字符串按逆序存放。
#include<
iostream.h>
stdio.h>
//put()
string.h>
voidmain()
{inti,n;
chars[100],temp;
cout<
<
"
inputstring:
endl;
cin>
>
s;
//
(1)注意它的用法!
n=strlen(s);
(2)
for(i=0;
i<
n/2;
i++)
{temp=s[i];
s[i]=s[n-i-1];
s[n-i-1]=temp;
}//前后调换
Now,string:
puts(s);
//输出新排列的字符串S
}
2.下列程序定义了类Pixel,请完成前置++和后置++的运算符函数的定义。
(注意这道题!
)
classPixel{
intx,y;
public:
Pixel(intxx=0,intyy=0){x=xx;
y=yy;
}
Pixeloperator++();
Pixeloperator++(int);
voiddisplay();
};
operator++()
return*this(3)
operator++(int)
{s
Pixeltemp=*this;
(4)
y++;
return(5)temp;
display()
("
x<
"
y<
)"
3.根据给定的程序执行结果,将下列程序补充完整。
#include<
classBase{
virtual~Base(){cout<
”DeleteBase”<
}(6)
classDerived:
publicBase{
~Derived(){cout<
”DeleteDerived”<
}(7)
Base*p1=newDerived;
(8)
deletep1;
//Derived先得出结果,故可能为析构函数。
//释放了P1就自动调用~Derived()析构函数。
就不执行~Base(),故~Base()是虚函数。
程序的执行结果如下:
DeleteDerived
DeleteBase
4.定义一个字符串类String,有两个私有数据成员:
char*content和intlen;
要求
1)在构造函数中提示用户输入字符串,;
2)用户能提取和显示字符串;
(分别由两个函数完成)
3)实现对字符串中所有小写字母变成大写,并显示。
注意内存的分配与释放。
类定义的部分代码如下,请补充代码使类的定义完整。
string>
stdlib.h>
classString{
char*content;
intlen;
String();
~String(){delete[]content;
(1)}
voidupper_str();
char*get_str()const{returncontent;
(2)}
String:
String(){
charch[50];
enterastring:
\n"
;
cin>
ch;
len=strlen(ch);
content=newchar[len+1];
(3)
if(!
content)
{
cout<
Memoryallocationeror!
exit
(1);
}
strcpy(content,ch);
voidString:
display(){cout<
content<
have"
len<
characters."
upper_str(){
for(inti=0;
len;
if(content<
=’z’&
content>
=’a’)(4)
content[i]=toupper(content[i]);
(5)
5.下列程序定义了类Point,请完成前置--和后置--的运算符函数的定义。
classPoint{
floatx,y;
Point(floatxx=0,floatyy=0){x=xx;
Pointoperator--();
Pointoperator--(int);
PointPoint:
operator--()
x--;
y--;
return*this;
(6)
operator--(int)
Pointtemp=*this;
(7)
y=y--;
returntemp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 期末 复习题