东北大学秦皇岛分校原版c++复习题.docx
- 文档编号:11269458
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:50
- 大小:30.73KB
东北大学秦皇岛分校原版c++复习题.docx
《东北大学秦皇岛分校原版c++复习题.docx》由会员分享,可在线阅读,更多相关《东北大学秦皇岛分校原版c++复习题.docx(50页珍藏版)》请在冰豆网上搜索。
东北大学秦皇岛分校原版c++复习题
A卷
1.下列语句中错误的是(D)
A.*(10); B.*[10]; C. *; D.*[40](0)
2.假设已经有定义*””;下面的语句中正确的是(A)
A.[3]=’q’; B.””; C.[5] D.(‘q’);
3.下面的类型声明中正确的是(D)
A.[4] B.&*p; C.; D.I,*I;
4.在声明类时,下面的说法正确的是(C)
A.可以在类的声明中给数据成员赋值 B.数据成员的数据类型可以是
C.、、可以按任意顺序出现 D.没有用、、定义的数据成员是公有成员
5.构造函数是在(B)时被执行的。
A.程序编译 B.创建对象 C.创建类 D.程序装入内存
6.在下面有关友元函数的描述中,正确的说法是(A)
A.友元函数是独立于当前类的外部函数 B.一个友元函数不能同时定义为两个类的有友元函数
C.友元函数必须在类的外部定义 D.在外部定义友元函数时,必须加关键字
7.使用派生类的主要作用是(A)
A.提高代码的可重用性 B.提高程序的运行效率 C.加强类的封装性 D.实现数据的隐藏
8.关于虚函数,正确的描述是(A)
A.构造函数不能是虚函数B.析构函数不能是虚函数C.虚函数可以是友元函数D.虚函数可以是静态成员函数
9.如果在基类中将成员函数声明为不带返回值得纯虚函数,正确的写法是(C)
()=0; () ()=0; ()=0;
10.使用(“”)语句打开文件后,则(A)
A.该文件只能用于输出 B.该文件只能用于输入 C.该文件既能用于输出,又能用于输入 D.若该文件存在,则清除该文件的内容
三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)
1.""
{
:
(p)
{;;}
()
{;}
()
{;}
:
;
};
()
{
[2][2]={(10,20)(30,48)(50,68)(70,80)};
i;
(0<2)
{
<<[i][0]()<<",";
<<[i][0]()<<"\n";
<<[i][1]()<<",";
<<[i][1]()<<"\n";
}
<<"\n";
0;
}
2.""
{
:
()
{<<".\n";}
};
1
{
:
()
{<<"1.\n";}
};
2
{
:
()
{<<"2.\n";}
};
()
{
s1;
*;
1d1;
2d2;
1;
>();
1;
>();
2;
>();
}
3.""
A
{
:
A(i)(i){}
A(){0;}
A(Aa);
A(A);
();
:
;
};
A(Aa)
{
;
a;
}
A(A)
{
;
a;
}
()
{<<<<;}
()
{
Ai(7);
;
();
;
();
}
三 1.答案:
10,20;30,48;50,6870,802.答案:
. .
.
3.答案:
7
6
B卷
一、选择题(每题2分,共20分,答案填写在题后的表格内)
1.假设已经有定义*””;下面的语句中正确的是(D)
A.[3]=’a’; B.””; C.[5] D.<<[3];
2.假设已经有定义 *””;下面的语句中错误的是(A)
A.[3]=’q’; B.””; C.[5] D.(‘q’);
3.在下面有关对构造函数的描述中,正确的是(B)
A.构造函数可以带有返回值 B.构造函数的名字与类名完全相同 C.构造函数必须带有参数 D.构造函数必须定义,不能缺省
4.在下面有关析构函数特征的描述中,正确的是(C)
A.一个类可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型 D.析构函数可以有一个或多个参数
5.在下面有关静态成员函数的描述中,正确的是(B)
A.在静态成员函数中可以使用指针 B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用前缀 D.静态成员函数只能在类外定义
6.友元的作用之一是(A)
A.提高程序的运行效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类
7.假设已经定义好了一个类,现在要定义类,它是从私有派生的,定义类的正确写法是(C)
B.
{… } {… }
8.要实现动态联编,派生类中的虚函数(D)
A.返回的类型可以与虚函数的原型不同B.参数个数可以与虚函数的原型不同C.参数类型可以与虚函数的原型不同D.以上都不对
9.有关运算符重载正确的描述是(D)
语言允许在重载运算符时改变运算符的操作个数 B.语言允许在重载运算符时改变运算符的优先级
C.语言允许在重载运算符时改变运算符的结合性 D.语言允许在重载运算符时改变运算符的原来的功能
10.假设定义了函数模板:
T(Ty)
{(x>y);}
并定义了6;’a’;错误的调用语句是(D)
A.() B.() (()) ()
C卷
一、单项选择题:
(每小题2分,共20分)
1、假设已经有定义*””;下列语句中错误的是
A.[3]=’q’ B.”” C.[5] D.(‘q’)
2、在下列关键字中,用于说明类中公有成员的是
A. B. C. D.
3、下列哪项不是面向对象程序设计的主要特征。
A.封装 B.继承 D.多态 D.结构
4、构造函数是在时被执行的。
A.程序编译 B.创建对象 C.创建类 D.程序装入内存
5、在下面有关析构函数的描述中,正确的是
A.一个类中可以定义多个析构函数
B.析构函数的名字和类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
6、使用派生类的主要原因是
A.提高代码的可充用性 B.提高程序的运行效率 C.加强类的封装性 D.实现数据的隐藏
7、下列的各函数中,不是类的成员函数.
A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数
8、关于虚函数,正确的描述是
A.构造函数不能是虚函数 B.析构函数不能是虚函数
C.虚函数可以是友元函数 D.虚函数可以是静态成员函数
9、友元的作用之一是
A.提高程序的运用效率 B.加强类的封装性
C.实现数据的隐藏性 D.增加成员函数的种类
10、在下面有关静态成员函数的描述中,正确的是
A.在静态成员函数中可以使用指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用前缀
D.静态成员函数只能在类外定义
二、判断题:
(每题1分,共10分)
( )1、使用关键字定义的类中缺省的访问权限是私有()的。
( )2、构造函数和析构函数都不能重载。
( )3、说明或定义对象时,类名前不需加关键字。
( )4、可以在类的构造函数中对静态数据成员进行初始化。
( )5、和区别在于成员可以被派生类访问,而成员则不能被派生类访问。
( )6、在中,封装是通过类实现的。
( )7、无论何时编译器都为类构造一个无参数的缺省的构造函数。
( )8、无论什么方式的继承,基类的私有成员都不能被派生类访问。
( )9、在中,只有在类对象定义之后才能给数据成员赋初值。
( )10、创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数。
三、填空题:
(每空1分,共10分)
1、在中,类的成员访问权限分别是:
公有成员,私有成员和。
2、拷贝构造函数使用作为参数初始化创建中的对象。
3、在中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的特性。
4、在公有继承的情况下,基类数据成员在派生类中的访问权限。
5、在面向对象的程序设计中,通过实现数据隐藏;通过实现代码的复用。
6、在中,构造派生类对象时,总是先从的初始化开始的。
7、在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。
对两个有相同名字的数据成员进行访问时,如果没有,对此数据成员的访问将出现歧义;而、和是不能被派生类继承的。
一、单项选择题:
(每小题2分,共20分)
二、判断题:
(每题1分,共10分)
对错对错对 对错对对对
三、填空题:
(每空1分,共10分)
1、受保护成员
2、同类对象的引用
3、封装
4、公有的
5、封装,继承
6、基类
7、作用域分隔符限定,构造函数,析构函数
D卷
1.下类引用定义中,正确的是(D)
A.x,;x;,x;
C.x;;D;
2.假设已经有定义*””;下面的语句中正确的是(D)
A.[3]=’a’; B.””; C.[5] D.<<[3];
3系统在调用重载函数时往往根据一些条件确定那个重载函数被调用,在下列选项中,不能作为依据的是(D)
A.参数个数B.参数的类型C.函数名D.函数类型(返回值类型)
4、构造函数是在(B)时被执行的。
A.程序编译 B.创建对象 C.创建类 D.程序装入内存
5、在下面有关析构函数的描述中,正确的是(C)
A.一个类中可以定义多个析构函数
B.析构函数的名字和类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
6.有以下类的说明,错误的地方是()
{0;0;
();
:
(x,y);
();
};
A.B.C.D.
7指针是一个隐含于每一个类的成员函数的特殊指针,它是用来指向正在操作成员函数的()的指针。
A.对象B.函数C.成员D.类型
8.有关类和对象的说法不正确的是(C)
A.对象是类的一个实例B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象D.类与对象的关系和数据类型和变量的关系相似
9.在下面有关友元函数的描述中,正确的说法是(A)
A.友元函数是独立于当前类的外部函数 B.一个友元函数不能同时定义为两个类的有友元函数
C.友元函数必须在类的外部定义 D.在外部定义友元函数时,必须加关键字
10.派生类新增的成员函数,不能直接访问基类的(C)成员。
A.公有B.保护C.私有D.所有
11.下述静态数据成员的特性中,(D)是错误的。
A说明静态数据成员时前面要加修饰符
B静态数据成员要在类体外进行初始化
C引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D类的静态成员不实所有对象所共用的
E卷
1.在中,用数组、指针、和引用作为函数参数,能够将参数值带回。
2.在中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的封装特性。
3.在中,构造派生类对象时,总是先从基类的初始化开始的。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是拷贝每一个数据成员。
5.类是用户定义的类型,具有类类型的变量称作对象。
6.在5个运算符"*(乘号)、<=、、!
、"中,优先级由高到低的顺序是!
、*(乘号)、<=、、。
7.在中,类定义一般用关键字,不过用关键字也可以定义类,它们定义类的区别在于在缺省访问权限时,类成员是公有的,而类成员是私有的。
8.静态的成员函数没有隐含的指针,所以,它们只能访问静态的数据成员。
9.与"(0)"等价的表达式是(a>0<0)或(a)。
10.若6,4,2,则表达式"!
()12"的值是1。
11.在面向对象的程序设计中,通过_封装_实现数据隐藏;通过_继承_实现代码的复用。
12.在下面的程序段中,语句"*;"和语句"*;"的含义分别是变量指针c指向整型常量a、常量指针d指向整型变量b。
78;
28;
*;
*;
13.用申请有10个元素的指针数组,假定数组元素是指向字符型数据的指针,该语句为***[10];。
14.在中构造一个对象时,其数据成员在构造函数中初始化。
对于内嵌的对象、常量、引用数据成员需要在构造函数的成员初始化列表中初始化。
15.在类的定义中,说明为的数据成员称为保护成员。
保护数据成员具有双重作用:
对于其派生类而言,是公有的;而对于其外部的程序而言,是私有的。
16.中有两种数据类型:
整型和字符型可以使用修饰符。
。
17.举出中两种流程控制语句语句、循环语句。
18.预编译指令由三种,它们是:
文件包含、宏定义和条件编译。
19.中,对象保存在内存中,栈内存是自动分配和释放的,而堆存需要用户自己申请和释放。
20.在函数中,可用语句带回一个值。
如果有多个返回值,可用指针、引用等带回。
21.下面程序的运行结果是6。
<>
()
{
'0''9';
x;
()/('F'-'B');
("\n",()(3.14*x));
}
22.以下程序的输出结果是 **#**#**#$ 。
<>
()
{
i;
(0<=5){
(2)("**");
;
("#");
}
("$\n");
}
23.下面程序的运行结果是50!
。
<>
N100
{
:
(){0<<"";}
(){<<"";}
(i);
();
:
[N];
;
};
(i)
{
(){
<<"";
;
}
{
;
[];
}
}
()
{
;
(0){
<<"";
0;
}
{
[];
;
;
}
}
()
{
*;
>(10);
>(50);
<<>()<<"";
<<"!
"<<;
}
24.下面程序的运行结果是。
<>
a[]={2,5,6,8,10};
*p[]={1234};
()
{
("\\\n"[4],*
(2),*p[1]);
("\\\n",**
(1)[2],*(4)-*(0),*(3)[4]);
}
1065
1148
二、问答题(每小题5分,共20分)
1.在定义拷贝构造函数时,为什么通常还要定义一个重载的赋值运算符?
解答要点:
拷贝构造函数是用一个对象初始化另一个对象时调用,定义了拷贝构造函数通常涉及到对象内有指针成员,需要定义拷贝构造函数复制指针所指向的内存单元。
对象赋值也有同样的问题,如果要将对象指针所指向的内存单元也赋给另一个对象,就必须重载赋值运算符。
2.简述局部作用域、全局作用域和类作用域的异同。
解答要点:
局部作用域只在局部块内有效,如在一个函数内或在一个复合语句内,它的生存期也在该块内;全局作用域对整个应用程序都有效,它的生存期与应用程序一样长;类作用域在类内,类的成员函数可以访问类的所有成员,而在类外,只能访问类的共有成员,类成员定义的次序与其作用的范围没有关系。
3.虚函数是否一定要有关键字?
什么叫纯虚函数和抽象类?
多态调用需要满足怎样的条件?
解答要点:
不一定,派生类覆盖基类的成员函数时,没有关键字,也是虚函数;纯虚函数没有实现,它供派生类覆盖,纯虚函数的一般定义形式为:
返回类型函数名(参数表)=0;
至少含有一个纯虚函数的类称为抽象类,抽象类不能定义对象,只能作为基类;
多态调用需要满足的条件:
被调用的成员函数是虚函数
用指针或引用调用虚函数
4.数组和链表是两种重要的线性数据结构,使用链表有什么优点?
解答要点:
数组需要一个大的、连续的存储单元,而链表是由一个个结点的小存储单元组成的。
链表便于数据的插入和删除。
在数组中,要插入一个元素,需要将后面的元素往后移,要删除一个元素要将后面的元素往前移,效率很低,链表可以克服这个缺点。
三、(8分)下列类是一个表示形状的抽象类,()为求图形面积的函数,()则是一个通用的用以求不同形状的图形面积总和的函数。
请从类派生梯形类()、圆形类(),并给出具体的求面积函数。
{
:
()=0
};
(*s[]n)
{
0.0;
(0<)
[i]->();
;
}
{
:
(r){;}
(){3.1416**;}
:
;
};
{
:
()
{;}
(){()*H*0.5;}
:
;
};
五、(6分)函数()实现折半查找,即查寻给定的单词是否在关键字表中(关键字按字典顺序排列),折半查找每次把与表中相应部分的位于中间位置的关键字进行比较,最终结果:
或者与某个关键字相同,或者与所有关键字都不相同。
<>
{*;;};
*(*[]n)
:
a
:
:
{
;
*;
*[1];
*;
(<){
①;()/2或()/2
(((>))<0)
1;
(>0)
②;1
;
}
();
}
六、(8分)下面程序实现汉诺塔游戏。
规则是:
三个立柱(分别为A、B、C),开始A上串有n个(用户输入值)大小不等的圆盘,大的在下,小的在上。
要求借助于B把它们从A移到C。
每次只能移一个盘,而且三个柱上的盘总是大的在下,小的在上
<>
0;
()
{
n;
(,);
(;;){
(":
");
("");
(0)①;或
("\n\n");
(":
\n");
(n,'A','C','B');
("\\n");
}
}
(,)
{
();
(②){1或m>1
(1);
③;()
(1,④);
}
();
}
()
{
;
(">\n");
}
F卷
一、单项选择题
1.源程序文件的默认扩展名为
2.由源程序文件编译而成的目标文件的默认扩展名为.
3.由目标文件连接而成的可执行文件的默认扩展名为.
4.程序从上机到得到结果的几个操作步骤依次是编辑、编译、连接、运行
5.以下标识符中不全是保留字的是(B)。
A.B.
C.D.
6.能作为程序的基本单位是(C)。
A.字符B.语句C.函数D.源程序文件
7.程序中主函数的名字为
8.程序的基本模块为(D)。
A.表达式B.标识符C.语句D.函数
9.可用作语言用户标识符的一组标识符是(B)。
A.B.a33_123
C.D.2a
10.存储以下数据,占用存储字节最多的是(D)。
A.0B.‘0’C.“0”D.0.0
11.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
12.设”12;”,则执行完语句”*a;”后,a的值是(C)。
A.12B.144C.156D.288
13.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式的表达式是(D)。
A.1.0*b*cB.1/(a*b*c)C.1()cD.1.0
14.设”1526;”,则”<<();”的输出结果是(D)。
A.15B.26,15C.15,26D.26
15.设x是一个型的逻辑量,y的值为10,则表达式xy的值为(C)。
A.1B.0C.与x值相同D.与x值相反
16.x>0x<=10的相反表达式为(A)。
A.x<=0x>10B.x<=0x>10C.x<=0x<=10D.x>0x>10
17.x>05的相反表达式为(B)。
A.x<=05B.x<=05C.x>05D.x>05
18.设x和y均为量,则xy为真的条件是(A)。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
19.设x和y均为量,则xy为假的条件是(C)。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 秦皇岛 分校 原版 c+ 复习题