ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:26.43KB ,
资源ID:7638510      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7638510.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(二级C++196.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级C++196.docx

1、二级C+196二级C+-196(总分:93.50,做题时间:90分钟)一、选择题(总题数:35,分数:68.50)1.有三个关系R,S和T如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 T A B C a 1 2 b 2 1 C 3 1 d 3 2 其中关系T由关系R和S通过某种操作得到,该操作为_。(分数:1.00)A.选择B.投影C.交D.并解析:解析 并关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。2.下列叙述中正确的是_。(分数:2.50)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C

2、.循环链表是非线性结构D.双向链表是非线性结构解析:解析 线性表的特点是在数据元素的非空有限集合中,存在唯一一个被称为“第一个”的数据元素;存在唯一一个被称为“最后一个”的数据元素;除第一个以外,集合中的每个数据元素均只有一个后继;除最后一个以外,集合中的每个数据元素均只有一个后继。因此,双向表是非线性结构。3.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为_(分数:1.00)A.ios:inB.ios:outC.ios:in | ios:outD.以上都不对解析:解析 使用fstream类建立文件流必须定义打开方式,否则编译器无法判断该文件流是读还是写。4.

3、下列函数的运行结果是_。 #includeiostream.h int f(int a,int b) int c; if(ab)c=1; else if(a=b)c=0; else c=-1; return(c); void main() int i=2,j=3; int p=f(i,j); coutp;(分数:2.50)A.-1B.1C.2D.编译出错,无法运行解析:解析 本题的函数是根据a和b的值来给c赋值。5.关于关键字class和typename,下列表述中正确的是_。(分数:1.00)A.程序中的typename都可以替换为classB.程序中的class都可以替换为typename

4、C.在模板形参表中只能用typename来声明参数的类型D.在模板形参表中只能用class或typename来声明参数的类型解析:解析 程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。6.下列关于this指针的叙述中正确的是_。(分数:1.00)A.任何与类相关的函数都有this指针B.类的成员函数都有this指针C.类的友元函数都有this指针D.类的非静态成员函数才有this指针解析:解析 本题考查this指针的使用。类的每一个成

5、员函数都有一个隐含的常量指针,即this指针。类的静态成员函数不能含有this指针,因为this指针是一个指向本对象的指针。7.有如下程序段 #include void main( ) int a=14,b=15,x;char c=A;x=(a&b) &(cB) ;cout x;执行该程序段后,x的值为 A.ture B.false C.0 D.1A B C D D解析 关于C+语言中逻辑运算符的考查。【解题要点】在C+语言中,逻辑运算符有4个,它们分别是!(逻辑非)、(逻辑或)、&(逻辑与)、(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在语句x=(a&

6、b)&(cB);中,先判断a&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然cB是成立的,显然,该表达式的值为1。(分数:1.00)A.tureB.falseC.0D.1解析:解析 关于C+语言中逻辑运算符的考查。 【解题要点】在C+语言中,逻辑运算符有4个,它们分别是!(逻辑非)、(逻辑或)、&(逻辑与)、(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在语句x=(a&b)&(cB);中,先判断a&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然cB是成立的,显然,该表达式的值为1。 8.下面对静态数据成员的描述中,正确的是_。(分数

7、:2.50)A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用解析:9.若有如下语句 #includeiostream.h void main() int x=3; do x=x-2; coutx; while(!(-x); 则上面程序段_。(分数:2.50)A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环解析:解析 do.while语句的一般格式为“do循环体语句while(表达式);”,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执

8、行x=x-2,即为1。判断表达式的值,!(-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。10.为了使模块尽可能独立,要求_。(分数:2.50)A.内聚程度要尽量高,耦合程度要尽量强B.内聚程度要尽量高,耦合程度要尽量弱C.内聚程度要尽量低,耦合程度要尽量弱D.内聚程度要尽量低,耦合程度要尽量强解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合

9、,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。11.下列关于C+流的描述中,错误的是 _ 。(分数:2.00)A.coutA表达式中输出字符AB.eof函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件fstreamD.以ios_base:out模式打开的文件不存在时,将自动建立一个新文件解析:解析 在C+中输入用“cin”,输出用“cout”。12.有如下数组声明:int num10l;,下标值引用错误的是_。(分数:1.00)A.num10B.num5C.num3D.num0解析:解析 数组定义中的数字指的是数组的大小,而下标是从0开始的,所以数组

10、的最后一个元素是num9。13.线性表进行二分法检索,其前提条件是 _ 。(分数:2.00)A.线性表以顺序方式存储,并按关键码值排好序B.线性表以顺序方式存储,并按关键码的检索频率排好序C.线性表以链式方式存储,并按关键码值排好序D.线性表以链式方式存储,并按关键码的检索频率排好序解析:解析 对线性表进行二分法检索,要求线性表是按顺序方式存储,并按关键码值的大小排好序,而不是按关键码的检索频率排序。14.字符串“a+b=12/n/t”的长度为_。(分数:2.00)A.12B.10C.8D.6解析:解析 题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。15.下列不构成无限循

11、环的语句或语句组是 _ 。(分数:2.00)A.n=0;do+n;)while(n=0);B.n=0;while(1)n+;C.while(n=10);n-;D.for(n=0,i=1; ;i+)n+=i解析:解析 选项B中while(1)永远为真,一直自加下次进入死循环;选项c中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n=0)循环判定成立,循环结束。16.己知类Myclass的定义如下 class MyClass public: void function1(MyClass&c)coutc.data; s

12、tatic void function2(MyClass&c)coutc.data; void function3()coutdata; staric void function4()coutdata; private: int data; ; 其中有编译错误的函数是_。(分数:2.00)A.function1B.function2C.function3D.function4解析:解析 funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非静态成员,即coutdata在编译时会出错。17.凡是函数中未指定存储类别的局部变量,其隐含的存储类型是 _ 。(分数:2.00)A.au

13、toB.staticC.regiserD.extern解析:解析 变量说明时使用auto修饰的局部变量是自动变量,auto经常省略,在未指定存储类别时,默认为auto。18.有以下程序 #include iostream using namespace std; int a; int fun (); int main () extern int a; int b; a = 100; b = fun(); coutbend1; return 0; int fun) extern int a; return (10*a ; 其程序运行后的输出结果是(分数:2.00)A.100B.10C.1000D

14、.10000解析:解析 本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器,外部)。先来了解外部变量:外部变量用关键字extern表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a为外部变量是告诉编译程序, a是一个外部变量,并要求系统为a分配一个固定的永久存储空间。a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量a,主函数main给外部变

15、量赋的初始值为100,当调用函数fun()时,外部变量a的值传到函数fun()中,因此函数所返回的值为100*10=1000。19.下列关于函数模板的描述中,正确的是_。(分数:2.50)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数解析:解析 函数模板是一系列相关函数的模型或样板;使用函数模板定义的函数可以带有返回类型;函数模板的类型参数为虚拟类型参数,与函数的参数不同。故A、B、C项错误。定义好函数模板后,编译系统将依据每一次对函数模板调用时实际所使用的的数据类型生成适当的调

16、用代码,并生成相应的函数版本,故D项正确。20.下列叙述中,错误的是_。(分数:2.50)A.false是一个逻辑型常量B.“b”是一个字符型常量C.365是一个int常量D.3.1415926是一个double常量解析:解析 double型数据一般占8个字节,D选项超出了范围。21.下列关于函数的说法中,正确的是(分数:2.50)A.C+允许在函数体中定义其他函数B.所有的内联函数都要用inline说明C.仅函数返回类型不同的同名函数不能作为重载函数使用D.有默认值的参数应从左至右逐个定义解析:22.以下程序的执行结果为_。 #includeiostream.h class Sample i

17、nt n; public: Sample(int i)n=i; operator+()n+; /前缀重载运算符 operator+(int)n+=2; /后缀重载运算符 void disp() coutn=nendl; ; void main() Sample A(2),B(2); A+; +B; A.disp(); B.disp(); (分数:2.50)A.n=4n=3B.n=1n=2C.n=3n=4D.n=5n=6解析:解析 此题考查的是“+”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数:int。本题中,A(2)首先给n赋值2,语句A+,调用的是后缀运算

18、符重载语句,使得n加2变为4。B(2)首先给n赋值2,然后语句+B,调用前缀运算符重载函数,使得n加1。因此最终的输出结果是n=4 n=3。23.有如下程序: #include iostream using namespace std; class BASE public: BASE()coutBASE; ; class DERIVED: public BASE public: DERIVED() coutDERIVED; int main() DERIVED x; return 0; 执行后的输出结果是 _ 。(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DE

19、RIVEDBASE解析:24.有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB:public AA public: BB(int n)_ ; 其中横线处缺失部分是_。(分数:3.00)A.:a(n)B.:AA(n)C.a(n);D.a=n;解析:解析 根据派生类构造函数的一般格式:派生类名(总参数表):基类名1(参数表1),基类名n(参数表n),成员对象名1(参数表n+1),成员对象名m(参数表n+m)派生类构造函数体。在派生类BB的构造函数总参数表后面应该接上基类名从和其参数。25.下列关于关系运算的叙述中正确的是(分数:

20、2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算D.以上三种说法都不对解析:解析 在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择,连接等运算前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。周此,选项A与B错误,选项C正确。26.类的析构函数是在什么时候调用的?(分数:1.00)A.类创建时B.创建对象时C.删除对象时D.不自动调用解析:解析 析构函数可以

21、被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和使用delete释放对象所占有用的资源。27.某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是(分数:2.00)A.const void Show( );B.void const Show( );C.void Show( )const;D.void Show(const);解析:28.若有如下程序: #includeiostream using namespace std; class TestClass public: void who() coutTestClassendl; ; class Te

22、stClass1:public TestClass public: void who()coutTestClass1endl; ; int main() TestClass *p; TcstClass1 obj1; p=&obj1; p-who(); return 0; 则该程序运行后的输出结果是 _ 。(分数:2.00)A.TestClass1B.TestClassC.0D.无输出解析:解析 程序中的TestClas1为TestClass的派生类,主函数main中定义TestClass对象*p,TestClass1对象obj1,然后p引用obj1,执行p-who()则是调用基类中的who函数

23、,输出TcstClass。29.已知主函数中通过如下语句序列实现对函数模板swap的调用: int a10,biol; swap(a,b,10); 下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是_。(分数:1.00)A.template typename Tvoid swap(T a,T b,int size);B.templatetypename Tvoid swap(int size,T a,T b);C.templatetypename T1,typename T2void swap(T1 a,T2 b,int size);D.templateclass T1,cla

24、ss T2void swap(T1 a,T2 b,int size);解析:解析 参数顺序有错。30.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为 _。(分数:2.00)A.4B.5C.6D.7解析:31.若有以下函数调用语句:fun(m+n,x+y,f(m+n,z,(x,y);在此函数调用语句中实参的个数是 _ 。(分数:2.00)A.6B.5C.4D.3解析:解析 参数之间是用逗号分隔的,不要因为参数是表达式而被迷惑。函数的第一个参数是表达式m+n,第三个参数是表达式f(m+n,z,(x,y)。32.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的

25、是_。(分数:2.00)A.ios_base:curB.ios_base:begC.ios_base:outD.ios_base:end解析:解析 C+流的定位方式(也就是指针移动方式)有三种,被定义为ios_base:seek_dir中的一组枚举符号: ios base:beg相当于文件首; ins base:cur相当于当前位置(负数表示当前位置之前); ios base:end相对于文件尾。33.下列关于栈的描述正确的是_。(分数:2.50)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一

26、端插入元素,而在另一端删除元素解析:解析 根据数据结构对栈的定义及其特点可知:栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,对栈的插入与删除操作,不需要改变栈底元素。34.有如下程序: #includeiostream using namespace std; class Pair int m; int n; public: Pair(int i,int j):m(i),n(j) bool operator(Pair P)const; /须在类体外给出定义 ; int main() Pair p1(3,4),p2(4,3),p3(4,5); cout(p1p2)(p2p

27、1)(p2p3)(p3p2); return 0; 运算符函数。perator的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是_。(分数:2.00)A.bool Pair:operator(Pair p)constif(m!=p.m)return mp.m;return np.n;B.bool Pair:operator(Pair P)if(m!=p.m)return mp.m;return np.n;C.bool Pair:operator(Pair p)constif(mp.m)return true;return np.n;D.bool Pair:operator(Pair P)if(mp.m)return true;return np.n;解析:解析 按照比较规则:首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。这条规则的用C+写出来就是选项A。35.有如下程序: #include iostream using namespace std; class A

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

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