1、国家二级( C+)笔试模拟试卷 98及答案与解析 1 根据数据结构中各数据元素之问前后件关系的复杂程度,一般将数据结构分成 ( A)动态结构和静态结构 ( B)紧凑结构和非紧凑结构 ( C)线性结构和非线性结构 ( D)内部结构和外部结构 2 设一棵二叉树中有 3个叶子结点,有 8个度为 1的结点,则该二叉树中总的结点数为 ( A) 12 ( B) 13 ( C) 14 ( D) 15 3 在下列几种排序方法中,要求内存量最大的是 ( A)插入排序 ( B)选择排序 ( C)快速排序 ( D)归并排序 4 下列叙述中,不属于结构化程序设计方法的主要原则的是 ( A)自顶向下 ( B)由底向上
2、( C)模块化 ( D)限制使用 goto语句 5 下列不属于软件调试技术的是 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 6 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 ( A) PAD图 ( B) N-S图 ( C)结构图 ( D)数据流图 7 软件复杂性度量的参数包括 ( A)效率 ( B)规模 ( C)完整性 ( D)容错 性 8 下列叙述中,不属于数据库系统的是 ( A)数据库 ( B)数据库管理系统 ( C)数据库管理员 ( D)数据库应用系统 9 数据库系统的核心是 ( A)数据库 ( B)数据
3、库管理系统 ( C)数据模型 ( D)软件工具 10 视图设计一般有 3种设计次序,下列不属于视图设计的是 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 11 下列选项中不全是 C+语言关键字的是 ( A) const, break, default ( B) long, void, using ( C) virtual, extern, include ( D) try, throw, this 12 以下 C+语言中用于单行注释的是 ( A) / ( B) / * ( C) * / ( D) | 13 在 32位的计算机中,一个 char型数据所占的内存长度的字节
4、是 ( A) 4 ( B) 1 ( C) 2 ( D) 8 14 若变量已正确定义并赋值,以下符合 C+语言语法的表达式是 ( A) a: =b+1 ( B) a=b=c+2 ( C) int 18 5%3 ( D) a=a+7=c+b 15 有如下程序: #include“iostream h“ void 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; 该程序的输出结果是 ( A) a=2, b=1 ( B) a=1, b=1 ( C) a
5、=1, b=0 ( D) a=2, b=2 16 有以下程序 #include“iostream.h“ void main( ) int i=1, j=1,k=2; if( (j+|k+)i+) switch(stri) case1:x4+; case2: x3+; case3: x2+; case4: x1+; cout x1 “, “ x2 ( A) 8, 6, 4, 1 ( B) 8, 6, 3, 2 ( C) 8, 8, 4, 1 ( D) 8, 6, 4, 2 36 栈和队列通常采用的存储结构是【 】。 37 在程序设计阶段应该采取【 】和逐步求精的方法,把一个模块的功能逐步分解,细
6、化为一系列具体的步骤,进而用某种程序设计语言写成程序。 38 软件结构是以【 】为基础而组成的一种控制层次结构。 39 数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【 】两个含义。 40 数据库保护分为安全性控制、【 】、并发性控制和数据的恢复。 41 C+语言中表示双精度浮点数的关键字是【 】。 42 执行下列语句后 ,c3中的值为【 】 int c1=1, c2=2, c3;c3=1 0/c2 * c1; 43 若从键盘输入 70,则以下程序输出的结果是【 】。 #include iostream h void main( ) int a; cin a; if(a 50)
7、 cout a; if(a 40)cout a; if(a 30)cout a 44 以下程序的输出结果是【 】。 #include iostream h void main( ) char s =“abcdef“; s3=0; cout s endl; 45 以下程序运行后的输出结果是【 】。 #include iostream h void fun(int x, int y) x=x+y; y=x-y; x=x-y; cout x “,“ y “ ,“; void main( ) int x=2, y=3; fun(x, y); cout x “, “ y endl; 46 常数据成员和静
8、态数据成员在使用前共同的要求是要进行【 】。 47 类 test的析构函数是【 】。 48 表达式 x operator+(y operator+(0)还可以写成【 】。 49 要采用 “cin, tout”进行输入输出时,必须包含的头文件是【 】。 50 构造函数是和【 】同名的函数。 国家二级( C+)笔试模拟试卷 98答案与解析 1 【正确答案】 C 【试题解析】 根据数据结构中各数据元素之间前后件关系的复杂程序,一般将数据结构分为两大类:线性结构和非线性结构。线性结构是指满足以下两个条件的非空的数据结构:一是有且只有一个根结点,二是每一个结点最多有一个前件,也最多有一个后件。如是一个数
9、据结构不是线性结构 ,则称为非线性结构。注意:数据结构的各种分类方法及标准。 2 【正确答案】 B 【试题解析】 按照题目的要求可得到满足条件的二叉树,如下图所示:故该二叉树中总的结点个数为 13。 3 【正确答案】 D 【试题解析】 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思 想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面 (这是它应有的位置
10、 ),然后对剩下的子表采用同样的方法,直到表空为止:归并排序是将两个或两个以上的有序表组合成一个新的有序表。注意:各种排序方法实现过程及实现机制。 4 【正确答案】 B 【试题解析】 结构化程序设计方法的主要原则可以概括为以下 4个方面,即自顶向下、逐步求精、模块化及限制使用 goto语句。 5 【正确答案】 B 【试题解析】 调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除 法。注意:软件调试的各种方法及各种方法的区别。 6 【正确答案】 B 【试题解析】 常见的过程设计工具有:程序流程图、 N-S图、 PAD 图和 HIPO图。其中,为了避免流程图在
11、描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 N-S 图。注意:其他常用算法描述工具的概念。 7 【正确答案】 B 【试题解析】 定量度量方法是程序复杂程度经常使用的方法,把程序的复杂程度乘以适当参数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同设计或两个不同算法的优劣,程序的定量的复杂程度可作为模块规模的精确限度,因而软件复杂性度量的参数包括规模。注意:软件复杂性度量的方法及各种度量参数的作用。 8 【正确答案】 B 【试题解析】 数据库系统 (Database System,简称 DBS)由如下几部分组成,即数据
12、库、数据库管理系统、数据库管理员,硬件和软件。 9 【正确答案】 B 【试题解析】 数据库管理系统是对数据库进行管理和对数据库进行操作的管理系统,它是建立在操作系统基础之上的,位十操作系统和用户之间的一层数据管理软件,负责对数据库的数据进行统一的管理和控制,它是实现数据库和管理数据库的核心。注意:数据库系统各方面之间的关系及相互作用。 10 【正确答案】 B 【试题解析】 视图设计一般有 3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。注意:数 据库概念设计的过程:首先选择局部应用,再进行局部视
13、图设计,最后对局部视图进行集成得到概念模式。 11 【正确答案】 C 【试题解析】 要熟练掌握 C+语言中的关键字。注意: include不是 C+语言的关键字。注意: define也不是关键字。 12 【正确答案】 A 【试题解析】 C+语言中的注释与 C语言不同, C语言的注释符号只有 /* */,而 C+在此基础上又加上了 /,此注释用于单行注释。注意:注释不影响程序的运行。 13 【正确答案】 B 【试题解析】 char型数据 所占内存的大小为 1个字节。注意: int型数据占内存的大小为 4个, cong double, double占内存的大小为 8个字节。注意:求字节数用 siz
14、eof 运算符。 14 【正确答案】 B 【试题解析】 a=b=c+2 实际上相当于 a=(b=c+2),进而可分解为两个表达式: b =c+2和 a=b。注意:选项 A)中包含一个不合法的运算符 “: =”;选项 C)应改为(int)18 5 3;选项 D)可理解为两个表达式: a+7=c+b 和 a=a+7,其中第一个是错的,因为 C+语言规定赋值号的左边只能是单个变量,不 能是表达式或常量等。注意: C+语言赋值语句的运用, 15 【正确答案】 A 【试题解析】 该题目的关键是要搞清楚该程序执行了哪几条语句。由于 x的值等于 1,所以 switch 结构中,程序从 case 1后面的语句
15、开始执行,又因为 case 1后面的语句没有以 break结束,所以程序要继续往下执行 case 2后面的语句。所以,该程序共执行了这三条语句: a+; a+; b+;,因此,变量 a和 b 最后的值应该为 2和 1。注意: break 语句可以结束 switch 语句。 16 【正确答案】 C 【试题解 析】 该题目的关键是要搞清楚 “”和 “&”两个逻辑运算符的运算功能。运算符 “”和 “&”是双目运算符,要求有两个运算量。且规定逻辑与运算中,只有前面运算量的值为真的,才需要判别后面的值。只要前面运算量为假,就不必判别后的值。而逻辑或则为只要前面的运算量为真,就不必判别后的值;只有前为假,
16、才判别后。本题中 j+值为真,不进行 k+的运算,所以 k的值保持不变。注意:注意按位与和按位或的用法。 17 【正确答案】 D 【试题解析】 本题定义 a为 3行 4 列的数组,它可用的行下标最大为 2,列下标最大为 3。注意: a04超过了数组的范围。注意:数组的下标是从 0开始的。 18 【正确答案】 D 【试题解析】 “&”是求址运算符, “ * ”是指针变量的说明符,说明该变量只能存放所定义类型变量的地址。本题中选项 D)中的第一和第三项所表达的是同样的意思。注意:选项 A)中 a是一个整型变量。选项 B)中 & * a等价于 a, * point是指针变量所指的内容。选项 C)中也
17、是同理。注意:在指针运算中, &和 * 的作用相互抵消。 19 【正确答案】 D 【试题解析】 函数的形参和实参具有以下特点: 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应通过预先用赋值,输入等办法使实参获得确定值。 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生 “类型不匹配 ”的错误。 函数调用中发生的数据传送是单向的。即只能把实参的值
18、传送给形参,而不能把形参的值反向地传送给实参 。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。注意:函数调用不可以作为一个函数的形参。注意:函数可以嵌套调用,但是不可嵌套定义。 20 【正确答案】 A 【试题解析】 三目运算符的表达式为 (表达式 1)?(表达式 2): (表达式 3),运算过程是当 (表达式 1)的值为真时,求 (表达式 2)的值为整个表达式的值;如果 (表达式1)的值为假,则求 (表达式 3)的值为整个表达式的值。题中,表达式 x 12的结果为假,所以执行的语句是 x-12,最终结果应该是 0。注意: “?: ”的优先级高于“=”运算符的优 先级。 21 【
19、正确答案】 D 【试题解析】 在 c+语言中类定义中的构造函数是私有的,但是其却调用了其中的公有变量,在实例化时会出现错误。注意: C+语言类的定义 22 【正确答案】 A 【试题解析】 C+语言的默认访问权限修饰符是 private。注意: C+语言中的构造函数是系统默认就有的,用户可以自己定义也可以不定义,故选项 B)错误;C+语言的类是可以嵌套定义的,故选项 D)错误; C+语言中成员函数的实现部分也可以写在类定义内,故选项 C)错误。注意:函数不能嵌套定义。 23 【正确答案】 B 【试题解析】 C+语言中通常有 3种继承修饰符 public, protected 和 private,
20、限制依次严格,另外对类中的数据和函数也有这 3种修饰符进行限制。一个派生类能不能继承基类的所有数据成员受它们的限制。注意: C+语言中继承关系的修饰符 public, protected 和 private的运用。 24 【正确答案】 D 【试题解析】 C+语言中通常有三种继承修饰符 public, protected, Privale,限制依次严格,另外对类中的数据和函数也有这三种修饰符进 行限制,有 3种是不能继承的:公有继承基类的私有成员,私有继承基类的私有成员,保护继承基类的私有成员。 25 【正确答案】 A 【试题解析】 C+语言中的不能重载的操作符是 ., . * , - * ,:
21、和 ?:。 26 【正确答案】 D 【试题解析】 运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方式。注意:运算符重载的关键字是 operator。 27 【正确答案】 D 【试题解析】 函数模板实 参不能省略的情况在 C+语言中一共有 4种: 从模板函数实参表获得的信息有矛盾; 需要获得特定类型的返回值,而不管参数的类型如何; 虚拟类型参数没有出现在模板函数的形参表中; 函数模板含有常规形参。注意:模板形参分为两种类型;虚拟类型参数和常规参数。 28 【正确答案】 A 【试题解析】 C+语言中 和 运算符都是
22、友元函数重载,分别用于输出和输入。注意:运算符 只能作为成员函数重载。 29 【正确答案】 C 【试题解析】 逻辑与运算符为真的前提是两边的表达式都为真,本 题中 6%3的值为 0,显然该表达式的值应该为 0。注意: /是整除运算符,当两个操作数都为整数时,结果为整型,将小数部分舍去。 30 【正确答案】 C 【试题解析】 在 C+语言函数调用中,如果被调用函数中没有 retnrn语句,并不带回一个确定的、用户所希望得到的函数值,而是带回的是一个不确定的值。注意:为了明确表示 “不带回值 ”,可以用 void 定义无类型 (或称空类型 ),这时,系统就保证不使函数带回任何值。 31 【正确答案
23、】 A 【试题解析】 函数的参数个数是以第一层的逗号为区分的,本题中调 用语句中有3个参数。 32 【正确答案】 B 【试题解析】 在初始化语句时,需要注意下面几点: 所赋初值个数与数组元素的个数相同; 每行所赋初值个数与数组元素的个数不同时,系统将自动给该行其余的元素补初值 0; 所赋初值行数少于数组行数时,系统将自动给后面各行的元素补初值 0; 赋初值时省略行花括号对。在给二维数组赋初值时可以不用行花括号对。注意:选项 A)中省略了第二维的大小,所以是错误的;选项 C)超出了数组的定义范围,所以是错误的;选项 D)在初始化赋值的时候出现了错误。注意:无论是几维的数组,下标都 是从零开始的。
24、 33 【正确答案】 A 【试题解析】 在 fun函数中, x接收的是 main 函数中 y的地址,所以 * x值为2,同样, * y值为 1,所以第 1次输出的是 2 1,第 2次改变 * x 的值等同于改变 y的值,改变 * y的值也即改变 x的值,所以第 2次输出的是 4 3。注意: C+语言中函数的传参方式中关于指针的应用。 34 【正确答案】 C 【试题解析】 该表达式的语句是 该表达式的语句是 if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 由 if表达式可知,题中直接执行 if语句的第 2条 els
25、e if(x10 0)y=1 O/x;。 注意: else总是与最近的没有匹配的 if匹配。 35 【正确答案】 D 【试题解析】 本题考查循环的嵌套。只要注意在 c+语言中,系统在字符指针的最后位置会增加一个字符串结束符 0,执行 8次 for循环,再根据 switch 语句中的条件易知答案。注意: C+中各种条件判断,循环语句的用法。 36 【正确答案】 链式存储和顺序存储 【试题解析 】 栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。注意:栈、数组、表采用的存储结构,各种存储结构的定义和区别。 37 【正确答案】 自顶而下 【试题解析】 注意:系统设计其他
26、阶段的内容。 38 【正确答案】 模块 【试题解析】 采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解,模块化使得软件容易测试和调试,因而有利于提高软件的可靠性,也有利于软件的组织管理,大型程序可由不同的程序员编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的部 分。注意:软件结构的定义,模块操作其他的所有特点。 39 【正确答案】 逻辑独立性 【试题解析】 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。注意:在人工管理阶段,文件系统阶段和数据库管理阶段中数据独立性的特点。 40
27、【正确答案】 完整性控制 【试题解析】 安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及浯义的正确性和有效性, 防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。注意:数据库的其他用途,如数据定义、数据操作和数据管理等。 41 【正确答案】 double 【试题解析】 C+语言中基本的数据类型关键字,有 int, float, double。 42 【正确答案】 0 【试题解析】 在赋值运算中,如果表达式中变量和常量
28、的数据类型不一致就会自动进行类型转换。系统会计算 1 0/c2,由于 1 0是实型 ,所以均先转化为双精度型 0 500000,再与 c1 转化后的双精度数相乘得 0 500000。但其要赋值给整型变量 c3,故要进行强制转换,得 c3 的值为 0。 43 【正确答案】 707070 【试题解析】 本题考查对 if 语句的掌握,当输入 70以后,程序中的 3个 if语句都成立,所以分别输出 70。 44 【正确答案】 abc 【试题解析】 本题中,给数组 s中的第 4个元素 s3赋以 0,则 s数组中只有前3个元素有效,输出结果为 abc。 45 【正确答案】 3, 2, 2, 3 【试题解析
29、 】 main 函数和 fun函数中的变量 x和 y都是局部变量,它们各自独立,在本题 fun函数中:接入实参的值传递: x=2, y=3,执行: x=x+y后, x=5,y=3,执行: x=x-y后, x=5, y=3,执行: y=x-y后, x=3, y=2。所以,第一次执行 cout显示结果是 3和 2返回到 main 函数中,输出 main 函数中的 x和 y的值2, 3。 46 【正确答案】 初始化 【试题解析】 C+语言中常数据成员和静态数据成员都要进行初始化,只是初始化的方法不一样。 47 【正确答案】 test( ); 【试题解析】 C+语言中虚构函数在每个类中只有一个,其函数的写法是在构造函数的前面加一个 “ ”字符。 48 【正确答案】 x+y+或 x+(y+) 【试题解析】 因为 y operator+(0)是对成员 y重载运算符,所以是成员重载,在参数表中又有一个参数,所以是重载后缀 +,所以是 x+(y+)。 49 【正确答案】 iostream h 【试题解析】 iostream h 是与输入输出有关的类文件。 50 【正确答案】 类 【试题解析】 C+语言中的构造函数就是在类 中定义的和类名一样的函数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1