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

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

1、国家二级( C+)笔试模拟试卷 153及答案与解析 1 假设线性表的长度为 n,则在最坏情况下,冒泡排序需要的比较次数为 ( A) log2n ( B) n2 ( C) O(n1.5) ( D) n(n 1) /2 2 算法分析的目的是 ( A)找出数据结构的合理性 ( B)找出算法中输入和输出之间的关系 ( C)分析算法的易懂性和可靠性 ( D)分析算法的效率以求改进 3 线性表 L (a1,a2,a3,ai,an) ,下列说法正确的是 ( A)每个元素都有一个直接前件和直接后件 ( B)线性表中至少要 有一个元素 ( C)表中诸元素的排列顺序必须是由小到大或由大到小 ( D)除第一个元素和

2、最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 4 在单链表中,增加头节点的目的是 ( A)方便运算的实现 ( B)使单链表至少有一个节点 ( C)标识表节点中首节点的位置 ( D)说明单链表是线性表的链式存储实现 5 软件工程的出现是由于 ( A)程序设计方法学的影响 ( B)软件产业化的需要 ( C)软件危机的出现 ( D)计算机的发展 6 软件开发离不开系统环境资源的支持,其中必要的测 试数据属于 ( A)硬件资源 ( B)通信资源 ( C)支持软件 ( D)辅助资源 7 在数据流图 (DFD) 中,带有名字的箭头表示 ( A)模块之间的调用关系 ( B)程序的组成成分

3、 ( C)控制程序的执行顺序 ( D)数据的流向 8 分布式数据库系统不具有的特点是 ( A)数据分布性和逻辑整体性 ( B)位置透明性和复制透明性 ( C)分布性 ( D)数据冗余 9 关系表中的每一横行称为一个 ( A)元组 ( B)字段 ( C)属性 ( D)码 10 下列数据模型中,具有坚实理论基础的是 ( A)层次模型 ( B)网状模型 ( C)关系模型 ( D)以上 3个都是 11 C语言中标点符号中表示一条预处理命令开始的是 ( A) # ( B) ; ( C) * ( D) 12 每个 C程序中都必须有且仅有一个 ( A)类 ( B)预处理命令 ( C)主函数 ( D)语句 1

4、3 sizeof (float) 是 ( A)一个双精度型表达式 ( B)一个整型表达式 ( C)一种函数调用 ( D)一个不合法的表达式 14 设有 int x 11;,则表达式 (x * 2/3) 的值是 ( A) 7 ( B) 8 ( C) 11 ( D) 12 15 设有程序段 : int k 10; while(k 0) k k 1; 则下面描述中正确的是 ( A)循环执行 10次 ( B)无限循环 ( C)循环体语句一次也不执行 ( D)循环体语句执行一次 16 对表达式 for(表达式 1;表达式 3) 可理解为 ( A) for(表达式 1;0;表达式 3) ( B) for(

5、表达式 1;1;表达式 3) ( C) for(表达式 1;表达式 3;) ( D) for(;表达式 3) 17 以下不正确 的定义语句是 ( A) double x5 2.0,4.0,6.0,8.0,10.0; ( B) int y5 0,1,3,5,7,9; ( C) char c 1 1,2,3,4,5; ( D) char c 2 C , x10,xa,x8; 18 有如下说明 : int a10 1,2,3,4,5,6,7,8,9,10, * p a; 则数值为 9的表达式是 ( A) *p 9 ( B) * (p 8) ( C) * p 9 ( D) p 8 19 下列函数的运行

6、结果是 #include iostream.h int f(int a,int b) int c; if(a b) 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) ; cout p; ( A) 1 ( B) 1 ( C) 2 ( D)编译出错,无法运行 20 以下对 C语言函数的有关描述中,正确的是 ( A)在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 ( B) C语言函数既可以嵌套定义又可以递归调用 ( C)函数必须无返回值,否则不能使用函数 (

7、 D)函数必须有返回值,返回值类型不定 21 关于静态数据成员的描述中正确的是 ( A)类的静态数据成员不是类的所有对象共享的数据 ( B)类的静态数据成员不能被类的成员函数调用 ( C)类的静态数据成员不能被类的构造函数调用 ( D)类的静态 数据成员必须进行初始化 22 复制构造函数的参数一般是 ( A)某对象名 ( B)某对象成员名 ( C)某对象的引用名 ( D)指向对象的指针名 23 下表正确的是 在父类中的访问属性 访问修饰符 在子类中的访问属性 ( A) public private 不能直接访 ( B) protect public public ( C) private pu

8、blic 不能直接访问 ( D) protect private protect 24 下面这个程序的结果是 #include iostream.h class A private: int a; public: void seta( ) ;int geta( ) ; void A: :seta( ) a 1; int A: :geta( ) retum a; class B private: int a; public: void seta( ) ;int geta( ) ; void B: :seta( ) a 2; int B: :geta( ) return a; class C: p

9、ublic A, public B private: int b; public: void display( ) ; void C: :display( ) int b geta( ) ; cout b; void main( ) C c; c. seta( ) ; c. display( ) ; ( A) 1 ( B) 2 ( C)随机输出 1或 2 ( D)程序有错 25 下列运算符中全都可以被友元函数重载的是 ( A)、 ( B) 、 ( ) 、 new ( C)、 *、 ( D) 、 * 26 对于模板定义关键字 class和 typename说法不正确的是 ( A)程序中的 cla

10、ss并不能都替换为 typename ( B) class和 typename 都可互相替换 ( C)程序中的 typename都能替换为 class ( D)程序中的部分 class可以替换为 typename 27 对于下面的程序 : ifstream fin(c:test.txt) ; if(fin) cout “ok“; else cout “wrong“; if语句中的内 容可以换为 ( A) fin. fail( ) ; ( B) fin. bad( ) ; ( C) fin. good( ) ; ( D) fin. eof( ) ; 28 以下程序的输出结果是 #include

11、iostream.h long fun(int n) long s; if(n 1 | | 1n 2) s 2; else s n fun(n 1) ; return s; void main( ) cout fun(3) ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 29 不合法的 main函数命令行参数表示形式是 ( A) main(int a,char * c ) ( B) main(int arc,char * * arv) ( C) main(int argc, char*argv) ( D) main(int argv,char * argc ) 30 有如下程序 :

12、 #include iostream.h void main( ) char ch2 5 “6937“,“8254“, * p2 ; int i,j,s 0; for(i 0;i 2;i ) pi chi ; for(i 0;i 2;i ) for(j 0;pi j 0;j 2) s 10 * s pi j 0; cout s; 该程序的输出结果是 ( A) 69825 ( B) 63825 ( C) 6385 ( D) 693825 31 下面叙述不正确的是 ( A)基类的保护成员在派生类中仍然是保护的成员 ( B)基类的保护成员在公有派生类中仍然是保护的 ( C)基类的保护成员在私有派生类

13、中仍然是私有的 ( D)对基类成员的访问必须是无二义性 32 以下程序的输出结果是 #include iostream.h void main( ) char x 040; cout (X 1) ; ( A) 100 ( B) 80 ( C) 64 ( D) 32 33 下面程序的功能是将从键盘输入的一对数,由小到大排序输出, 当输入一对相等数时结束循环,在下画线处应填入的选项是 #include iostream.h void main( ) int a, b, t; cin a b; while(_) if(a b) t a;ab;b t; cout a “ “ b endl; cin a

14、 b; ( A) ! a b ( B) a! b ( C) a b ( D) a b 34 对以下说明语句的正确理解是 int a10 6,7,8,9,10; ( A)将 5个初值依次赋给 a1 至 a5 ( B)将 5个初值依次赋给 a0 至 a4 ( C)将 5个初值依次赋给 a6 至 a10 ( D)因为数组长度与初值的个数不相同,所以此语句不正确 35 类 A是类 B的友元,类 B是类 C的友元,则下列说法正确的是 ( A)类 B是类 A的友元 ( B)类 C是类 A的友元 ( C)类 A是类 C的友元 ( D)以上都不对 36 数据结构分 为逻辑结构与存储结构,线性链表属于 _。 3

15、7 在面向对象方法中,类之间共享属性和操作的机制称为 _。 38 耦合和内聚是评价模块独立性的两个主要标准,其中 _反映了模块内各成分之间的联系。 39 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实体 “项目 ”的联系属于 _的联系。 40 数据库设计分为以下 6个设计阶段 :需求分析阶段、 _、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 41 假设 int a 1, b 2;,则表达式 ( a/b) * b-的值为 _。 42 C语言提供的基本控制结构可以分为 3种类型 :顺序结构、 _和循环结构。 43 C语句 const char * co

16、nst p “hello“;,所定义的指针 p和它所指的内容都不能被 _。 44 C语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 _方式。 45 对于下面定义的类 MyClass,请在函数 f( )中添加对象成员把 n的值修改为50。 class MyClass public: MyClass(intx) n x; void SetNum(int nl) n nl; private: int n; ; int f( ) MyClass * ptr new MyClass(45) ; 46 继承的方式有公有继承、私有继承和 _3种。 47 表达式

17、operator (x, y) 还可以表示为 _。 48 类模板的使用实际上是将类模板实例化成一个具体的 _。 49 派生类构造函数的执行顺序是先执行 _的构造函数,然后执行成员对象的构造函数,最后执行 _的构造函数。 50 已知程序的结果为 1 2 3,请填空。 #include iostream.h template class T class A public: T X, y, z; void display( ) cout x “ “ y “ “ z; ; void main( ) A int a1; _ _ _ a1.display( ) ; 国家二级( C+)笔试模拟试卷 153答

18、案与解析 1 【正确答案】 D 【试题解析】 假设线性表的长度为 n,则在最坏情况下,冒泡排序要经过 n/2遍的从前往后的扫描和 n/2遍的从 后往前的扫描,需要的比较次数为 n(n 1) /2。 2 【正确答案】 D 【试题解析】 算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。 3 【正确答案】 D 【试题解析】 线性表可以为空表 ;第一个元素没有直接前件,最后一个元素没有直接后件 ;在线性表的定义中,元素的排列并没有规定大小顺序。 4 【正确答案】 A

19、 【试题解析】 头节点不仅标识了 表中首节点的位置,而且根据单链表 (包含头节点 ) 的结构,只要掌握了表头,就能够访问整个链表,因此增加头节点的目的是为了便于运算的实现。 5 【正确答案】 C 【试题解析】 软件工程概念的出现源自于软件危机。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念。 6 【正确答案】 D 【试题解析】 软件测试过程中,辅助资源包括测试用例 (测试数据 ) 、测试计划、出错统计和最终分析报告等。 7 【正确答案】 D 【 试题解析】 数据流相当于一条管道,并有一级数据 (信息 ) 流经它。在数据

20、流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。 8 【正确答案】 D 【试题解析】 分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的 ;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库 ,否则是非冗余的数据库。 9 【正确答案】 A 【试题解析】 关系表中,每一行称为一个元组,对应表中的一条记录 ;每一列称为表中的一个属性,对应表中的一个字段 ;在

21、二维表中凡能唯一标识元组的最小属性集称为该表的键或码。 10 【正确答案】 C 【试题解析】 关系模型较之格式化模型 (网状模型和层次模型 ) 有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。 11 【正确答案】 A 【试题解析】 C语言中预处理语句的开始符号是 #。 12 【正确答案】 C 【试题解析】 每个 C程序中都要有且仅有一个主函数,该函数是程序的人口,而语句、预处理命令和函数及类在程序中都可以有多个。 13 【正确答案】 B 【试题解析】 该函数用于数据类型和变量。注意 : sizeof 操作符不能用于函数、不完全类型或位

22、字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、 void类型等。 14 【正确答案】 A 【试题解析】 当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增 1,所以表达式 (x * 2/3) 相当于 (11 * 2/3) ,取整后为 7。 15 【正确答案】 C 【试题解析】 本题中,首先将 0赋给 k,表达式变为 0,跳出循环,没有执行循环体语句。解答本题的关键是掌握 while语句。 16 【正确答案】 B 【试题解析】 本题中,若要保证 for表达式能正常进行,首先要保证第 2个表达式的条件判断值应该为真,从而保证循环进行。 17 【正确答案】 B

23、【试题解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于 0,并且小于自身,本题中选 项 B) 的下标表达式的值超过了自身。 18 【正确答案】 B 【试题解析】 按照 C语言的数组元素的引用方法,如数组元素 a0 ,可以用表达式 * (p 0) ,即 * p 来引用,对于数组元素 a1 ,可以用表达式 * (p 1) 来引用,在这里, p 1的值就是数组元素 a1 的地址,对此地址使用 “间接访问运算符 ”:* (p 1) 就代表存储单元 a1 ,注意一对圆括号不可少。同样,对于数组元素 a2 ,则可以用表达式 * (p 2) 来引用 ,对于数组元素 a9 ,可以用表

24、达式 * (p 9) 来引用。因此,当指针变量 p指向 a数组的起始地址时,若 0i 10,则数组元素 ai 可以用表达式 * (p i) 来引用。 19 【正确答案】 A 【试题解析】 本题的函数是根据 a和 b的值来给 c赋值。 20 【正确答案】 A 【试题解析】 形参的值的改变,不能影啊实参的值。选项 B) 函数只能嵌套调用,不能嵌套定义 ;函数要是有返回值其类型必须确定 ;函数也可无返回值,用 void表示。 21 【正确答案】 D 【试题解析】 C类中的静态成员变量是该类中所有对 象所共有的,它能够被类中的任何函数调用,所以选项 A) 、选项 B) 、选项 C) 是错误的。而类的静

25、态数据成员是必须要进行初始化才能使用的。 22 【正确答案】 C 【试题解析】 C语言中拷贝构造函数的参数一般是某个对象的引用名。 23 【正确答案】 C 【试题解析】 基类的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有和受保护的成员。 24 【正确答案】 D 【试题解析】 在类 A中有 geta( ) 函数,在类 B 中也 有 geta( ) 函数,类 C继承了类 A和类 B,这样就产生了二义性,所以程序会出错。 25 【正确答案】 D 【试题解析】 C中只能被成员函数重载的运算符是 , ,( ) ,- ,只能被友元函数重载的是

26、 、 。 26 【正确答案】 B 【试题解析】 在 C程序中的 typename 是都可以替换为 class的,但 class 不能都替换为 typename。 27 【正确答案】 C 【试题解析】 C语言中判断文件操作成功主要有两个函数 good( ) 和 fail( ) ,其中 if(文件流名 . good( ) ) 和 if(!文件流名 .fail( ) ),还有 if(文件流名 ) 都可以表示判断文件操作是否成功。 28 【正确答案】 A 【试题解析】 题中 fun 函数进行了递归调用,第 1次调用 :fun(3) n 3 s 3fun(2) ,第二次调用时 : fun(2) n 2

27、s 2,返回第一次调用后, s 3 2 1。 29 【正确答案】 C 【试题解析】 在 C语言中, main 函数也可以有参数,例如 :main(int arvc, char * argv) , argc是指向字符串的指针数组,而选项 C) 的第二个形参是指向字符变量的指针,是错误的。 30 【正确答案】 C 【试题解析】 该题主要搞清楚以下几点 : 定义了一个指针数组 char * P2 后,程序中第一个循环 for(i 0;i 2;i ) pi chi ;的作用是使指针数组的 p0 元素 (它本身是一个指针 ) 指向了二维数组 ch 的第一行字符串,并使指针数组的 p1 元素指向了二维数组

28、 ch 的第二行字符串,这样,就使指针数组 p 和二维数组 ch建立起了一种对应关系,以后对二维数组 ch 的某个元素的引用就有两种等价的形式 :chi j 或 pi j 。 对二维数组 ch 的初始化,使其第一行 ch0 中存入了字符串 “6937”,第二行 ch1 中的内容为字符串 “8254”。 程序中第二个循环中的循环体 s s * 10 pi j 0;的功能是这样的,每执行一次,将 s中的值乘以 10(也即,将 s中的数值整体向左移动一位,并在空出来的个位上添一个 0) ,再将当前Pi j 中的字符量转换为相应的数字,然后把这个数字加到 s 的个位上。 注意到内层循环的循环条件 pi

29、 j 0是指 pi j 中的字符只要不是字符串结束标志0就继续循环,语句 j 2;是使下标 j每次增加 2,也即一个隔一个地从 pi 所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 P0 所指向的字符串 “6937”中一个隔一个地取出字符,分别是 “6”和 “3”,然后从 p1 所指向的字符串 “8254”中一个隔一个地取出字符,分别是 “8”和 “5”,同时经过转换和相加运算后,结果 s中的值应该是 6385。 31 【正确答案】 A 【试题解析】 C语言中如 果基类的成员是保护的,它被继承后在子类中该成员可能是保护的,也可能不是,主要看继承的权限是 public还是 pr

30、otected 或 private的。 32 【正确答案】 C 【试题解析】 左移 1位,相当于乘以 2,题中的 x的值是一个八进制数,转换为十进制数是 32,再乘以 2,x的值为 64。 33 【正确答案】 B 【试题解析】 根据本题提出的条件可知,控制循环的表达式应该是所输入的两个数互不相等,也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为 a! b。 34 【正确答案】 B 【试题解析】 本题中,表达式将 5个初值赋给 a0 至 a4 ,后面的部分将自动被依次补零处理。 35 【正确答案】 D 【试题解析】 选项 A) 、选项 B) 和选项 C) 都不正

31、确,因为友元关系是单项的,并且没有交换性、传递性。 36 【正确答案】 存储结构 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构 ;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元 素之间的前后件关系的信息。 37 【正确答案】 继承 【试题解析】 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。 38 【正确答案】 内聚

32、 【试题解析】 内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系 ;耦合性是模块间互相连接的紧密程度的度量。 39 【正确答案】 一对多 (或 1:N) 【试题解析】 两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3种,即一对一 (1:1) 的联系、一对多 (1:N) 或多对一 (N:1) 的联系和多对多(M:N) 的联系。 40 【正确答案】 数据库概念设计阶段 【试题解析】 数据库设计分为以下 6个设计阶段 :需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。 41 【正确答案】 2 【试题

33、解析】 运算符 “ ”的优先级高于双目运算符 “/”,所以括号中的运算为2/2,最后的结果为 2/2 * 2。 42 【正确答案】 选择结构 【试题解析】 顺序结构 (也叫连续结构 ) 和循环结构是经常被使用的,不过选择结构 (if 和 switch) 也是一种重要的流程控制结构。 43 【正确答案】 改变 【试题解析】 本题考查的是定义常量的关键字 const,由 const定义的变量的值不可以再改变,所以定义时必须进行初始化。 44 【正确答案】 传地址 【试题解析】 本题考查的是传值调用和传址调用的区别 :传值调用只是进行值的简单复制,返回之后不会改变原来的值 ;而传址调用是把参数的地址

34、传入,会改变原来的值。 45 【正确答案】 ptr- SetNum(50) ; 【试题解析】 本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号 “ ”。 46 【正确答案】 保护继承 【试题解析】 继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择 3种不同的继承方式。 47 【正确答案】 x y 【试题解析】 本题考查的是运算符函数的调用,可以像一般函数那样用函数名进行调用,也可通过运算符构成表达式的形式进行 调用。 48 【正确答案】 类 【试题解析】 本题考查的是类模板的使用方式,就是把类模板的一般化定义实例化为一个真正的类。 49 【正确答案】 基类;派生类 【试题解析】 本题主要考查的是派生类构造函数的执行顺序,在 C语言中构造函数的执行顺序是先基类后派生类,而析构函数的执行顺序正好相反,是先调用派生类,后调用基类。 50 【正确答案】 12 a1.x 1; 13 a1.y 2; 14 a1.z 3; 【试题解析】 通过程序的结果知道数据类型是 int,所以调用时声明模板实参 为int的,再对 x、 y、 z进行赋值。

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

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

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