全国计算机等级考试无纸化真考题库试卷二级C++(3).docx

上传人:叶*** 文档编号:89393028 上传时间:2023-05-05 格式:DOCX 页数:14 大小:43.12KB
返回 下载 相关 举报
全国计算机等级考试无纸化真考题库试卷二级C++(3).docx_第1页
第1页 / 共14页
全国计算机等级考试无纸化真考题库试卷二级C++(3).docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《全国计算机等级考试无纸化真考题库试卷二级C++(3).docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试无纸化真考题库试卷二级C++(3).docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、全国计算机等级考试无纸化真考题库试卷(3)二级C+一、选择题(每小题1分,共40分)(1)下列叙述中正确的是( )。 A)栈是“先进先出”的线性表 B)队列是“先进后出”的线性表 C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是( )。A)栈 B)树 C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。A)10 B)8 C)6 D)(4)下列排序方法中,最坏情况下比较次数最少的是( )。A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支

2、撑软件(或工具软件)。下面属于应用软件的是( )。 A)编译程序 B)操作系统 C)教务管理系统 D)汇编程序(6)下面叙述中错误的是( )。A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。 A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统

3、中的核心问题是( )。A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系s,则所使用的运算为( )。A)选择 B)投影 C)插入 D)连接(10)将ER图转换为关系模式时,实体和联系都可以表示为( )。A)属性 B)键 C)关系 D)域(11)字面常量42、42、42L的数据类型分别是( )。A)long,double、int B)lon9、float、int C)int、double、long D)int、float、long(12)执行下列语句段后,输出字符“*”的个数是( )。for(int i=50;i1;-i)

4、 Cout*:A)48 B)49 C)50 D)51(13)有如下程序段:int i=0,J=1;ntr=i; r=j;int * P=i; * P=r;其中会产生编译错误的语句是( )。A) B) C) D)(14)必须用一对大括号括起来的程序段是( )。A)switCh语句中的ease标号语句 B)if语句的分支C)循环语句的循环体 D)函数的函数体 (15)下列符号中不属于C+关键字的是( )。A)friend B)namespaee C)Continue D)byte(16)下列有关函数重载的叙述中,错误的是( )。 A)函数重载就是用相同的函数名定义多个函数 B)重载函数的参数列表必

5、须不同C)重载函数的返回值类型必须不同 D)重载函数的参数可以带有默认值(17)下列有关运算符重载的叙述中,正确的是( )。A)运算符重载是多态性的一种表现B)C+中可以通过运算符重载创造新的运算符C)C+中所有运算符都可以作为非成员函数重载 D)重载运算符时可以改变其结合性(18)在下列原型所示的C+函数中,按“传值”方式传递参数的是( )。 A)void fl(int X); B)void t2(int*X); C)void f3(Const int*X);D)void f4(int&x);(19)将前缀运算符“-”重载为非成员函数,下列原型中能正确用于类中说明的是( )。A)DeCr&o

6、perator-(int); B)DeCr operator-(DeCr&,int);C)friend DeCr&operator-(DeCr&);D)friend DeCr operator-(DeCr&,int);(20)有如下函数定义:void funC(int a,int&b) a+;b+;若执行代码段:int x=0,Y = 1; funC(X,Y);则变量x和y的值分别是( )。A)0和1 B)1和1 C)0和2 D)1和2(21)下列运算符中,不能被重载的是( )。A) B)!= C)D)+(22)关于运算符重载,下列表述中正确的是( )。A)C+已有的任何运算符都可以重载B)运

7、算符函数的返回类型不能声明为基本数据类型 C)在类型转换符函数的定义中不需要声明返回类型 D)可以通过运算符重载来创建C+中原来没有的运算符(23)下列关于类定义的说法中,正确的是( )。 A)类定义中包括数据成员和函数成员的声明 B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的D)成员函数只能在类体外进行定义(24)有如下程序:#inClude using namespaCe std; Class ApubliC:statiC int a;void init()。a=1;A(int a=2)init();a+; ;int A:a:0: A obj;int main( ) Cou

8、tobja: return 0;运行时输出的结果是( )。A)0 B)1 C)2 D)3(25)以下关键字不能用来声明类的访问权限的是( )。A)publiC B)statiC C)proteCted D)private(26)下列关于派生类构造函数和析构函数的说法中,错误的是( )。A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(27)派生类的成员函数不能访问基类的( )。A)公有成员和保护成员 B)

9、公有成员 C)私有成员D)保护成员(28)有如下类定义: Class AA int a: PubliC: AA(int n=O):a(n) ; Class BB:publiC AA publiC: BB(int n) ; 其中横线处的缺失部分是( )。A):a(n) B):AA(n) C)a(n); D)a=n;(29)有如下程序: #inClude using namespaCe std; Class test private: int a; publiC: test()Cout”ConstruCtor”endl; test(int a)Coutaendl; test(Const test&

10、_test) a=testa: Cout”Copy ConstruCtor”endl: test()Cout”destruCtor”endl; ; int main( ) test A(3); return 0; 执行这个程序的输出结果是( )。A)3 B)ConstruCtor C)Copy ConstruCtor D)3 destruCtor destruCtor destruCtor(30)若有如下类声明: Class MyClass publiC: MyClass()Cout1; ; 执行下列语句MyClass a,b2,*p2; 程序的输出结果是( )。 A)11 B)111 C)1

11、111 D)11111(31)有如下程序: #inClude using namespaCe std; Class PointpubliC: statiC int number; publiC: Point()tnumber+; Point()number-; , int P0int:number=0; int main() Point *ptr: Point A,B; Point*ptr_point=new Point3; ptr=ptr_point; Point C; CoutPoint:numberendl; deleteptr; return 0; 执行这个程序的输出结果是( )。A)

12、3 B)4 C)6 D1 7(32)有如下程序: #inClude using namespaCe std; Class Sample friend long fun(Sample S); publiC: Sample(10ng a)x=a; private: long X; ; long fun(Sample S) if(Sx2)return l; return SX*fun(Sample(sx-1); int main() int sum=0; for(int i=0;i6;i+) sum+=fun(Sample(i); Coutsum: return 0; 执行这个程序的输出结果是( )

13、。 A)120 B)16 C)154 D)34(33)有如下程序: Class Base publiC: int data; ; Class Derivedl:publiC Base; Class Derived2:proteCted Base; int main() Derivedl dl; Derived2 d2; dldata=0; d2data=0; retum 0; 下列关于程序编译结果的描述中,正确的是( )。A)皆无编译错误 B)有编译错误,无编译错误 C)无编译错误,有编译错误 D)皆有编译错误(34)有如下程序: #inClude using namespaCe std; C

14、laSS A publiC: A(int i)x=i; void dispa()Coutx,; private: int x; ; Class B:publiC A publiC: B(int i):A(i+10)x=i; vold dispb()dispa();Coutxendl; private: int x; ; int main() B b(2); bdispb(); return 0; 执行这个程序的输出结果是( )。A)10,2 B)12,10 C)12,2 D)2,2(35)有如下程序: #inClude using namespaCe std; Class MusiC publ

15、iC: void setTitle(Char*str)strCpy(title,str); proteCted: Char type10; private: Char title20; Class Jazz:publiC MusiC publiC: void set(Char*str) strCpy(type,”Jazz); strCpy(title,str); ; 下列叙述中正确的是( )。A)程序编译正确 B)程序编译时语句出错C)程序编译时语句出错 D)程序编译时语句和都出错(36)有如下程序: #inClude using namespaCe std; Class Book publi

16、C: Book(Char*t=”)strCpy(title,t); private: Char titlel40; ; Class Novel:publiC Book publiC: Novel(Char*t=”):Book(t) Char*Category()Constreturn”文学”; ; int main() Book * pb; pb=new Novel(); CoutpbCategory(); delete pb; return 0; 若程序运行时输出结果是“文学”,则横线处缺失的语句是( )。A)Char*Category(); B)Char*Category()Const;C

17、)virtual Char*Category()Const;D)virtual Char*Category()Const=0;(37)如下函数模板: templateT square(T x)return x*x; 其中T是( )。A)函数形参 B)函数实参 C)模板形参 D)模板实参(38)下列函数模板的定义中,合法的是( )。A)templateT abs(T X)return x07-x:X; B)template ClassT abs(T x)return x07-X:x;C)template Tabs(T X)return x07-x:X; D)template T abs(T x)

18、return X0?-X:x;(39)在C+中,Cin是一个( )。A)类 B)对象 C)模板 D)函数(40)下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。A)setpreCision B)setw C)setfill D)showpoint二、基本操作题(共l8分) 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中含有一个源程碍文件 projlepp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: ConstruCtor Called The value is l0 Copy Co

19、nstruCtor Called The value is l0 DestruCtor Called DestruCtor Called 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。 pwjlCpp #inClude using namespaCe std; Class MyClass publiC: ERROR*found* MyClass(int i) value=i;Cout”ConstruCtor Called” endl; ERROR*found* MyClass(eonst MyClass P) value = Pvalue; eout”C

20、opy ConstruCtor Called”endl; void Print() Cout”The value is” valueendl; ERROR*found* void-MyClass() Cout”DestruCtor Called”endl; private: int value; ; int main() MyChas objl owlPrint(); MyClmss obj2(owl); obj2Print(); retum 0; 三、简单应用题(共24分) 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类M

21、atrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“t+found母*”。 #nClude using namespaCe std; 矩阵基础类,一个抽象类 Class MatrixBase int rows,Cols

22、; publiC: MatrixBase(int rows,int Cols):roWS(rows),Cow(Cols) int getRows()Constretum rows;矩阵行数 int getCols()Constreturn Cols;矩阵列数 virtual double getElement(int r,int C)Const=0;取第i个元素的值 void show()Const分行显示矩阵中所有元素 for(int i=0;irOWS;i+) Coutendl; for(int j=0;jCols;j+) *found* Cout ”; ; 矩阵类 Class Matri

23、x:publiC MatfixBase double*val; publiC: *found* Matrix(int rows,int Cols,double in=NULL): *found* val=; for(int i=0:irows*Cols;i+) vali=(m=NULL?00:Illi); 一Matrix()deleteval; double getElement(int r,int C)Constretum valr*getCols()+C; ; 单位阵(主对角线元素都是l,其余元素都是0的方阵)类 Class UnitMatrix:publiC MatrixBase pub

24、liC: UnitMatrix(int rOWS):MatrixBase(rows,rows) 单位阵行数列数相同 double getElement(int r,int C)Const *found* if(_)retum l0; retum 00; ; int main() MatrixBase*m; double d5=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7; ITI=new Matrix(3,5,(double*)d); mshow(); delete m; Coutendl: m=new UnitMatrix(6); Illshow(); delete m; re

25、tum0; 四、综合应用题(共18分) 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数0perator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是: 两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 两个数据表之和: 4,6,8,10,12,14 要求: 补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。 注意:程序

26、最后将结果输出到文件。utdat中。输出函数writeToFile已经编译为。bj文件,并且在本程序中调用。 DataListh #inClude using namespaCe std; ClaSS DataList数据表类 intfen; double*d; publiC: DataList(int len,double data=NULL); DataList(DataList&data); int length()Constretum len; double getElement(int i)Constt return di; DataList operator+(Const Data

27、Listlist)Const;两个数据表求和 void show()Const;显示数据表 ; void writeToFile(Char$,Const DataList&); mainCpp #inClude”DataListh” DataList:DataList(int len,double data):len(ien) d=new double1en; for(int i=0;ilen;i+) di=(data=NULL?00:datai); DataList:DataList(DataList&data):len(data1en) d=new double1en; for(int i

28、=0;ilen;i+) di=datadi; DataList DataList:0perator+(Con8t DataList&list,)Const两个数据表求和 double*dd=new double1ist1ensth(); *333* *666* return DataList(1ist1ength(),dd); void DataList:show()Const显示数据表 f()r(int。i=0;ilen-1;i+) eoutdi”,”; Coutd1en-1endl; int main() double sl=1,2,3,4,5,6;double s2=3,4,5,6,7,

29、8;DataList list1(6,sl),list2(6,s2);定义两个数据表对象 eout”两个数据表:”endl:listlshow(): list2show(); eoutendl”两个数据表之和:”endl:(1istl+list2)show();writeToFile(”,listl+list2); return 0:无纸化真考题库试卷(3)一、选择题(1)D 【解析】栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。(2)A 【解析】栈支持子程序调用栈是一种只能在一端进行插入或删除的线性表,在主程序凋用子函数时要首先

30、保存主程序当前的状态,然后转去执行子程序最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。(3)C 【解析】根据二叉树的基本性质3:在任意一颗二叉树中,度为0的叶子结点总是比度为2的结点多一一个,所以本题中是5+1=6个。(4)D 【解析】冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)2次,而堆排序在最坏情况下需要比较的次数是nlog2 n。(5)C 【解析】编泽软件、操作系统、汇编程序都属于系统软件,只有c教务管理系统才是应用软件。(6)A 【解析】软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正

31、错误所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。(7)B 【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的

32、度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。(8)A 【解析】数据库应用系统中的核心问题是数据库的设计。(9)B 【解析】投影运算是指对于关系内的域指定可引入新的运算。本题中s是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。(10)C 【解析】从ER图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,ER图中属性也可以转换成关系的属性。(11)C 【解析】本题考查整型变量的类型和浮点变量的类型,42默认为int型数据,42后面加上L后,表示long型数据,42默认为double型数据。(12)B 【解析】本题考查for循环语句

33、,-i表示用之前先减1,那么这个for循环语句只有50到2时才会输出“*”,所以总共输出49次。(13)A 【解析】本题考查指针和引用。为引用,使用正确;中r表示一个地址,而*P已经是-一个值了,不能将一个指针赋值给一个值,所以编译错误。(14)D 【解析】本题考查C+基本控制结构A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。(15)D 【解析】本题考查C+关键字,属于基本常识,显然D选项不正确。(16)C 【解析】所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不 同,但不

34、能只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为c。(17)A 【解析】重载运算符的规则如F:c+不允许用户自己定义新的运算符,只能对已有的c+运算符进行重载;c+不能重载的运算符只有5个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c+的标准类型。故本题答案为A。(18)A 【解析】函数参数的3种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。其中B、C选项都是传递变量指针,D选项为引用形参,所以

35、本题答案为A。(19)D 【解析】非成员函数重载用友元函数的形式实现,“-”运算符重载分为前置和后置两种重载方式。用友元函数来实现“-”运算符的重载时,前置“-”运算符的重载的一般格式为:friendoperator-(ClassName&);后置+运算符的重载的一般格式为:friendoperator-(ClassName,int)。所以答案为D。(20)C 【解析】函数参数的3种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参 本题中实参x为传值方式,所以x的值不会改变;Y为引用形参,所以会改变。故本题答案为c。(21)C 【解析】c+不能重载的运算符只有5个,即“”、

36、“$”、“:”、“?:”、“sizeof”,故本题答案为C。(22)c 【解析】重载运算符的规则如下:c+不允许用户自已定义新的运算符,只能对已有的c+运算符进行重载;c+不能重载的运算符只有5个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用至少应有一个是类对象,即不允许参数全部是c+的标准类型。故本题答案为c。(23)A 【解析】类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。(24)B 【解析】本题考查构造函数,本题

37、中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。(25)B 【解析】类的成员访问权限有3种:pnblic(公用)、protected(保护)、private(私有)。(26)D 【解析】在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。(27)c 【解析】本题考查3种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问基类的私有成员。本题答案为c。(28)B 【解析】本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下

38、来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。(29)D 【解析】本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数输出3,然后执行析构溺数,输出destructor。所以本题答案为D。(30)B 【解析】本题考查默认构造函数和带参数的构造函数,题目中定义一一个对象a以及对象数组b2,共执行3次构造函数,对象指针不调用构造函数。所以本题答案为B。(31)C 【解析】本题考查默认构造函数题目中定义个对象A、B以及对象数组Point3,又定义了对象C,

39、共执行6次构造函数,number变为了6,所以本题答案为C。(32)C 【解析】本题考查默认构造函数,当i=0、1时,fun(Sample(i)为1;当i=2时,fun(Sample(i)1为2;当i=3时,fun(Sample(i)为6;当i=4时,fun(Sample(i)为24;当i=5时,fun(Sample(i)为120。所以总和为l54(33)C 【解析】本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在 派生类中保持原有访问属性,其私有成员仍为基类私有、稿受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中Derived1公用继承Base所以编译正确,Derived2保护继承Base,所以编译不 正确。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁