[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc

上传人:arrownail386 文档编号:502603 上传时间:2018-11-29 格式:DOC 页数:27 大小:71.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc_第1页
第1页 / 共27页
[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc_第2页
第2页 / 共27页
[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc_第3页
第3页 / 共27页
[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc_第4页
第4页 / 共27页
[计算机类试卷]国家二级(C++)笔试模拟试卷148及答案与解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 148及答案与解析 1 栈和队列的共同特点是 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 2 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 3 链表不具有的特点是 ( A)不必事先估计存储空间 ( B)可随机访问任一元素 ( C)插入删除不需要移动元素 ( D)所需空间与线性表长度成正比 4 结构化程序设计的 3种结构是 ( A)顺序结构、选择结构、转移结构 ( B)分支结构、等

2、价结构、循环结构 ( C)多分支结构、赋值结构、等价结构 ( D)顺序结构、选择结构、循环结构 5 为了提高测试的效率,应该 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 6 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序 中的指令条数 7 软件生命周期中所花费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 8 数据库管理系统 DBMS中用来定义模式、内模式和外模

3、式的语言为 ( A) C ( B) Basic ( C) DDL ( D) DML 9 下列有关数据库的描述,正确的是 ( A)数据库是一个 DBF文件 ( B)数据库是一个关系 ( C)数据库是一个结构化的数据集合 ( D)数据库是一组文件 10 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键则称其为本关系的外关键字 11 面向对象程序设计将数据和什么放在一起,作

4、为一个相互依存、不可分割的整体来处理 ? ( A)对数据的操作 ( B)信息 ( C)数据隐藏 ( D)数据抽象 12 以下选项中合法的实型常数是 ( A) 5 E 2.0 ( B) E-3 ( C) .2 E0 ( D) 1.3 E 13 为了避免嵌套的 ifelse 语句的二义性, C+规定与 else配对的是 ( A)缩排位置相同的 if ( B)在其之前未配对的 if ( C)在其之前未配对的最近的 if ( D)同一行上的 if 14 有如下函数模板声明: template typename T T Max(T a,T b)return(a =b)? a:b; 下列对函数模板 Max

5、( )的调用中错误的是 ( A) Max(3.5,4.5) ( B) Max(3.5,4) ( C) Max double (3.5,4.5) ( D) Max double (3.5,4) 15 有以下程序: #include iostream using namespace std; int main( ) int x=15; while(x 10 if(x/3) x+; break; cout x endl; return 0; 执行后的输出结果是 ( A) 15 ( B) 16 ( C) 17 ( D) 18 16 假定其中的 x的单位是角度且不考虑 值的精度,则与数学公式 等价的 C

6、+语言表达式是 ( A) sqrt(cos(x) ( B) sqrt(abs(cos(x*3.14/180) ( C) sqrt(abs(cos(x*(/180) ( D) sqrt(fabs(cos(x*3.14/180) 17 执行下面程序中的输出语句后, a的值是 main( ) int a; cout (a=3*5,a*4,a+5); ( A) 65 ( B) 20 ( C) 15 ( D) 10 18 下列程序的运行结果是 main( ) int a=2,c=5; cout “a=“ a “b=“ c endl; ( A) a=% b=%5 ( B) a=2 b=5 ( C) a=d

7、 b=d ( D) a=%d b=%d 19 下列程序的输出结果是 main( ) int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; cout “a=“ a “b=“ b endl; ( A) a=2 b=1 ( B) a=1 b=1 ( C) a=1 b=0 ( D) a=2 b=2 20 以下循环体的执行次数是 main( ) int i,j; for(i=0,j=1;i =j+1;i+=2,j- -)cout i endl; ( A) 3 ( B) 2 ( C) 1 ( D) 0 21 有如下程序 main( )

8、 int n=9; while(n 6)n- -;cout n endl;) 该程序段的输出结果是 ( A) 987 ( B) 876 ( C) 8765 ( D) 9876 22 以下函数值的类型是 fun(float x) float y; y=3*x-4; return y; ( A) int ( B)不确定 ( C) void ( D) float 23 以下程序的输 出结果是 int a,b; void fun( ) a=100;b=200;) main( ) int a=5,b=7; fun( ); cout a b endl; ( A) 100200 ( B) 57 ( C) 2

9、00100 ( D) 75 24 如果表达式 - -x/y中的 “- -”和 “/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为 ( A) operator /(x.operator- -( ),y); ( B) operator /(operator- -(x),y); ( C) x.operator- -( ).Operator /(y); ( D) y.operator /(operator- -(x); 25 假定 MyClass为一个类,则该类的拷贝构造函数的声明语句为 ( A) Myclass if(j+| k+) 执行后输出结果是 ( A) 1,1,2

10、 ( B) 2,2,1 ( C) 2,2,2 ( D) 2,2,3 27 有以下程序 main( ) int a=5,b=4,c=3,d=2; if(a b c) cout d endl; else if(c-1=d)=1) cout d+1 endl; else cout d+2 endl; 执行后输出结果是 ( A) 2 ( B) 3 ( C) 4 ( D)编译时有错,无结果 28 已知语句 int m=10;则下列引用的表示中正确的是 ( A) int ( B) int ( C) int ( D) float 29 若已定义 int a=1,2,3,4,5,6,7,8,9,10,p=a,

11、i=5; 则对数组元素的不正确的引用是 ( A) ap-a ( B) *( char a5,b; cin n a m b; 为了分别将 10和 20分别赋给 n和 m, look赋给 a, t赋给 b,则正确的输入为 ( A) 10“look“ 20t CR ( B) 10“look“10 ( C) 10 look 20 t ( D) 10 CR look20 CR t CR 33 对于以下带参数的 main( )函数的第二形参, void main(int argc,_),不可能的形式是 ( A) char*argv ( B) char argv ( C) char*a ( D) char*

12、m 34 能保证对所有的参数能够结束的递归函数是 ( A) int f(int n)if(n 1)return 1;else return n*f(n+1); ( B) int f(int n)if(n 1)return 1;else return n*f(n-1); ( C) int f(int n)if(abs(n) 1)return 1;else return n*f(n/2); ( D) int f(int n)if(n 1)return 1;else return n*f(n*2);) 35 执行完下列语句 int a,b,c= int* p= 后 c指向 ( A) a ( B) b

13、 ( C) c ( D)无效地址 36 设二叉树根结点的层次为 0,对含有 100个结点的二叉树,可能的最大树深和最小树深分别是 _。 37 对象根据所接受的消息而做出动作,同样的消息被不同的对象所接受时可能导致完全不同的行为,这种现象称为 _。 38 数据流图采用 4种符号表示 _、数据源点和终点、数据流向和数据加工。 39 类通过 _与外界发生关系。 40 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实体 “项目 ”的联系属于 _的联系。 41 假定要访问一个结构指针 p所指对象中的 b指针成员所指的对象,则表示方法为 _。 42 设 px是指向一个类动态

14、对象的指针变量,则执行 “delete px;“语句时,将自动调用该类的 _。 43 若需要把一个函数 “void Furic( );“定义为一个类 Sample的友元函数,则应在类Sample的定义中加入一条语句 _。 44 类 clasg one在声明 func成员函数时发生错误,出错原因是 _。 class one private: int a; public: void func(two ; class two private: int b; friend vold one:func(two ; void one:func(two 45 下列程序从保存整数的文本文件 ”c:Sample

15、.dat”中依次取出每个数据并显示出来,同时统计并显示出所有数据的个数。程序划线处的表达式为 _。 #include stream.h #include stdlib.h void main( ) ifstream fin(“c:Sample.dat“,los:nocreate); if(! fin) cout “文件无法打开 !“ endl; exit(1); int x,i=0; while(_) cout x “; i+; fin.close( ); cout endl “文件中所有整数个数: “ i endl; 46 类中包含了一个静态成员函数,则 main函数中和 P.fl(P);语

16、句具有同样功能的语句为 _。 #include iostream.h class M public: M(int A)A=a;B+=a; static void fl(M m); private: int A; static int B; ; void M:f1(M m) cout “A=“ m.A endl; cout “B=“ m.B endl; int M:B=10; void main( ) M P(5); P.f1(P); 47 main函数中发生编译错误的语句是 _。 #include iostream.h class A public: int a; const int b; A

17、( ):a(10),b(20) void fun( )const cout “a=“ a “tb=“ b endl; ; void main( ) A obj1; const A*ptr=new A; ptr= ptr- a=100; ptr- fun( ); 48 下列程序中的重载函数 disp( )发生错误,错误原因是 _。 #include iostream.h class Sample private: int m; static int st; public: Sample(int a)m=a;st+=a; static void disp( )cout m endl; static

18、 void disp(Sample input) cout input.m endl; ; int Sample:st=2; void main( ) Sample First(2),Second(4); Sample:disp( ); Sample:disp(Second); 49 类 time可以输出 12小时或 24小时制的时间,现需要设计一个缺省构造函数,缺省值为 0时 0分 0秒。该缺省构造函数为 _。 #include iostream.h class Time int h,m,s; public: Time(int hour=0,int min=0,int sec=0)setti

19、me(hour,min,sec); void settime(int hour,int min,int sec)h=hour;m=min;s=sec; void show24( ) cout (h 10?“0“:“) h “:“ (m 10?“0“:“) m “:“ (s 10?“0“:“) s endl; void showl2( ) int temp=(h= =0 | h= =12)? 12:h%12; cout (temp 10?“0“:“) temp “:“ (m 10?“0“:“) m “:“ (s 10?“0“:“) s (temp 0 ; void main( ) Time t(

20、15,43,21); t.showl2( ); t.show24( ); 50 在下列基类的定义中,有无 virtual修饰 use成员函数的结果将不同,其原因是_。 当 use( )为虚拟函数时的程序执行结果: sizeof(A)=8 sized(B)=12 sizeof(C)=16 当 use( )非虚拟函数 时的程序执行结果: sizeof(A)=4 sized(B)=8 sizeof(C)=12 源程序如下: #include iostream.h class Grandad public: Grandad( ):money(10) int money; virtual void us

21、e( ) ; class Father:public Grandad public: Father( ):money(100) int money; void use( ) ; class Son:public Father public: Son( ):money(300) int money; void use( ) ; void main(void) Grandad A;Father B;Son C; cout “sizeof(A)=“ sizeof(A) endl; cout “sizeof(B)=“ sizeof(B) endl; cout “sizeof(C)=“ sizeof(C

22、) endl; 国家二级( C+)笔试模拟试卷 148答案与解析 1 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是 :栈只允许在表的一端进行插入或删除操作,是一种 “后进先出 ”的线性表 ;而队列只允许在表的一端进行插入操作, 在另一端进行删除操作,是一种 “先进先出 ”的线性表。 2 【正确答案】 D 【试题解析】 依据后序遍历序列可确定根节点为 c;再依据中序遍历序列可知其左子树由 deba构成,右子树为空 ;又由左子树的后序遍历序列可知其根节点为 e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如下图所示。求

23、得该二叉树的前序遍历序列为选项 D) 。 3 【正确答案】 B 【试题解析】 链表采用的是链式存储结构,它克服了顺序存储结构的缺点 :它的节点空间可以动态申请和释放 ;它的数据元素的逻辑次序靠节点的指针来指示,不需 要移动数据元素。但是链式存储结构也有不足之处 : 每个节点中的指针域需额外占用存储空间 ; 链式存储结构是一种非随机存储结构。 4 【正确答案】 D 【试题解析】 顺序结构、选择结构和循环结构 (或重复结构 ) 是结构化程序设计的 3种基本结构。 5 【正确答案】 D 【试题解析】 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。这一现象

24、说明,为了提高测试效率,测试人员应该集中对付那些错误群集的程序。 6 【正确答案】 C 【试题解析】 算法 的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量 ;算法的空间复杂度一般是指执行这个算法所需要的内存空间。 7 【正确答案】 D 【试题解析】 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段 ;维护是软件生命周期的最后一个阶段,也是持续时间最长、花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 8 【正确答案】 C 【试题解析】 选

25、项 A) 、选项 B) 显然不合题意。数据定义语言 (Data Definition Language,简称 DDL) 负责数据的模式定义与数据的物理存取构建 ;数据操纵语言(Data Manipulation Language,简称 DML) 负责数据的操纵,包括查询及增、删、改等操作。 9 【正确答案】 C 【试题解析】 数据库 (DataBase,简称 DB) 是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有 “集成 ”、 “共享 ”之特点。 10 【正确答案】 D 【试题解析】 数据处理是指将数据转换成信息的

26、过程,故选项 A) 叙述错误 ;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B) 叙述错误 ;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项 C) 叙述错误。 11 【正确答案】 A 【试题解析】 面向对象语言包含 3个要素,即对象、类和继承。这 3个要索反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。 12 【正确答案】 C 【试题解析】 本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数,故排除 A。由于符号 E前面必须有数字,故 B也是错误的。 D在指数

27、符号后面没有数字,是错误的。答案为 C。 13 【正确答案】 C 【试题解析】 C+规定 else总是与之前未配对的最近的 if进行配对,这样可以避免二义性,也便于编译器分析。 14 【正确答案】 B 【试题解析】 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄 进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确定是否匹配函数模板中对应的形参。例如,本题中的 B选项,编译系统从第一个参数 “3.5“获得的信息是 “T对应于 double“,而从第二个参数“4“处获得的信息是 “

28、T对应于 int“,二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的 double就是模板实参表,通过它通知编译系统在调用过程中,将 int型的参数 “4“将换成 double型。 15 【正确答案】 C 【试题解析】 本题考核选择语 句与循环语句的嵌套。由程序可知,当 x=16时,满足 if条件表达式,进入 if分支,执行 “x+; break; ”,所以最后程序输出 x的值为 17。 16 【正确答案】 D 【试题解析】 本题考查数学表达式的掌握,首先应转换为弧度,然后作为 cos函数的参数,求绝对值,最后是开方函数。考生需要掌握的是常用的数学函数。 17 【正确答案】 B

29、【试题解析】 本题考查逗号表达式的运算特点。逗号表达式是所有表达式中优先级最低的,从左到右结合,其求解过程是:将逗号表达式各表达式按从左到右的顺序依次求值, 并将最右边的表达式结果作为整个逗号表达式的结果。这里考生要注意的是,第二个表达式执行完后, a的值并没有发生变化,依然是 15,所以在执行 a+5的时候,结果是 20,而不是 65。正确答案应是 B。 18 【正确答案】 B 【试题解析】 本题非常简单,考查 C+中基本的输出语句,注意不要与 C语言的输出控制字符混淆。 19 【正确答案】 A 【试题解析】 本题主要考查 switch语句中, break语句的作用。每个 case语句后面如

30、果没有 break语句,则程序的执行流程将发生变化,即顺序执行各个 case语句。这种情况一般不符合程序员的设计思路,但也可以用这种特性完成特殊控制。 20 【正确答案】 D 【试题解析】 本题考查考生对 for循环中三个表达式的执行顺序及使用方法。首先执行第一个表达式,然后判断第二个表达式是否成立,如果成立则执行循环体,然后执行第三个表达式,随后再去判断第二个表达式。根据这个顺序,可以很容易的判断出,循环体只执行了一次。 21 【正确答案】 B 【试题解析】 注意到 n- -的运算顺序,知道第一次输出的应是 8,据此就可以很快排除 A和 D。然后判断循环几次结束,由于 当 n=6时, whi

31、le的条件判断已经不成立了,直接跳过循环体结束程序了。故当 n=9,8,7时执行了循环体,故答案为B。 22 【正确答案】 A 【试题解析】 本题考查 C+当中函数的默认返回类型,这种类型与函数内部的局部变量的类型没有关系。如果不小心处理函数返回类型,可能造成数据丢失。本题答案为 A。 23 【正确答案】 B 【试题解析】 本题考查同名变量的作用域大小。考生应掌握,同名局部变量在函数内部将屏蔽全局同名变量,因此, main函数内部使用的局部变量 a和 b,即 5和 7,答案为 B。 24 【正确答案】 B 【试题解析】 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且

32、 c1、 c2都是该类的对象,则 c1.operator+(c2)与 c1+c2含义相同。如果 +作为该类的非成员函数重载,则 operator+(cl,c2)与 c1+c2含义相同。同理,运算符 “/”作为友元函数重载,则 (- -x)/y与表达式 operator/(- -x),y)相同。前缀运算符 “- -”作为友元函数重载,则 - -x与 operator- -(x)相同,所以组合起来是operator/(operator- -(x),y);,即 B选项。 25 【正确答案】 本题考核拷贝构造函数的概念。声明拷贝构造函数的格式为:类名 :拷贝构造函数 (const类名 ,其中 cons

33、t是修饰符可以省略。 26 【正确答案】 C 【试题解析】 本题考查逻辑表达式及自增运算符的联合使用。考生要注意本题里面隐藏的考点: |在左侧表达式为真时,将不再进行该逻辑操作符右侧表达式的运算,即 j+本身为非零,故 k+不再执行。 27 【正确答案】 B 【试题解析】 本题考查逻 辑表达式的结合特性,即左结合性。对于表达式 a b c,首先判断 a b为真,结果为 l,然后判断 1c,为假,故转去判断 c-1 =d是否成立,成立,结果为 1,再判断 1= =1,结果为真,因此,执行 d+1,答案为B。 28 【正确答案】 A 【试题解析】 本题考查 C+中引入的新类型:引用。引用表示变量的

34、别名,使用方式同变量,效果同指针。引用不能用常数进行赋值,引用的类型必须一致,引用在使用之前必须初始化。 29 【正确答案】 D 【试题解析】 数组和指针的关系非常密切,因为数组名称单独使用是 表示数组的首地址。故可用的表示可能是 ai,pi,*(p+i),同样 【试题解析】 注意 friend关键词应加在函数的前面,表示该函数作为本类的一个友元函数。 44 【正确答案】 class one前没有声明语句 class two; 【试题解析】 当一个类作为另一个类的成员函数、成员函数的参数或其他情况的时候,要确保编译器能正确解析。由于在 rclass orle之前没有关于 class two的任

35、何说明,而在 class one的 func函数中却用了 class two类的参数。因此是错误的。 45 【正确答案】 fin x 【试题解析】 while语句用于完成题目指定的功能,则 while的条件判断部分应完成从文件读取字符的功能,并能够判断出读入字符失败后的情况。 46 【正确答案】 M:f1(P); 【试题解析】 由于 f1是类 M的静态成员函数,即说明类 M的任何对象都共享一份 f1,因此,不仅可以从对象那里访问 f1,还可以用域操作符 :通过类名来访问。 47 【正确答案】 ptr- a=100; 【试题解析】 本题考察的是 const的使用。 const修饰的是指针变量的值,指针本身是可变的,但指针所指对象的值是常量,即 ptr- a是不能被改变的。 48 【正确答案】 在静态成员函数的实现中不能直接引用类中说明的非静态成员 49 【正确答案】 Time( )h=0;m=0;s=0; 【试题解析】 注意缺省构造函数为无参构造函数,且必须为私有数据成员赋初值。 50 【正确答案】 采用虚函数的每个派生类都含有一个指向虚函数表的指针,故多4字节。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1