1、国家二级( C+)笔试模拟试卷 225及答案与解析 1 下列关于栈的描述中错误的是 ( )。 ( A)栈是先进先出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对栈的插入与删除操作中,不需要改变栈底指针 2 最简单的交换排序方法是 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 3 将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 ( A)不合法的运算符 ( B)一元运算符 ( C)无操作数的运算符 ( D)二 元运算符 4 开发大型软件时,产生困难的根本原因是 ( A)大系统的复杂性 ( B)人员知识不足 ( C)客观世界千变万化 (
2、D)时间紧、任务重 5 两个或两个以上模块之间联系的紧密程度称为 ( )。 ( A)耦合性 ( B)内聚性 ( C)复杂性 ( D)数据传输特性 6 7 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 8 下 面不属于软件工程的 3个要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 9 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n)
3、10 有如下两个类定义: class XX private: double X1; protected: double x2; public: doublex3; ); clase YY: protected XX private: doubley1; protected: doubley2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 11 下列符号中可以用作 C+标识符的是 ( )。 ( A) _radius ( B) foo bar ( C) else ( D) 3room 12 下列字符串
4、中可以用作 C+语言标识符的是 ( )。 ( A) _1234 ( B) foo bar ( C) virtual ( D) 34var 13 重载函数在调用时选择的依据中,错误的是 ( A)函数的参数名称 ( B)参数的类型 ( C)函数的名字 ( D)函数的类型 14 已知 char a iht b; float c; double d;则表达式 a*b+c-d结果为 ( )。 ( A) double ( B) int ( C) float ( D) char 15 有以下程序: #include iostream using namespace std; class MyClass pu
5、blic: MyClass(int n)number=n; /拷贝构造函数 MyClass(MyClass,下标值引用错误的是 ( A) num10 ( B) num5 ( C) num3 ( D) num0 17 下列叙述中错误的是 ( )。 ( A)派生类可以使用 private派生 ( B)对基类成员的访问必须是无二义性的 ( C)基类成员的访问能力在派生类中维持不变 ( D)赋值兼容规则也适用于多继承的组合 18 以下定义: int(*p)4中,标识符 p是 ( )。 ( A)一个指向整型变量的指针 ( B)一个指针数组名 ( C)一个指针,它指向一个含有 4个整型元素的一维数组 (
6、D)说明不合法 19 unsigned char c=“41;printf(“%d“,c); 输出结果为 ( )。 ( A) A ( B) 41 ( C)语法错 ( D) 65 20 ( )使一个函数可以定义成对许多不同数据类型完成同一个任务。 ( A)函数模板 ( B)重载函数 ( C)递归函数 ( D)模板函数 21 下列对字符数组进行初始化的语句,正确的是 ( )。 ( A) char a=“Hello“; ( B) char a=H,e,1,1,o; ( C) char a5=“Hello“; ( D) char a25=“Hello“,“World“); 22 从键盘的输入中,读入一
7、个值并赋值给 x的语句是 _ 。 ( A) cin x ( B) cin x ( C) cout x ( D) cout x 23 在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 _ 。 ( A)后缀一元运算符 ( B)前缀一元运算符 ( C)元操作数的运算符 ( D)二元运算符 24 在 C+语言中,打开一个文件就是将这个文件与一个什么建立关联 ? ( A)流 ( B)类 ( C)结构 ( D)对象 25 若已定义: int a=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i; 其中0i9,则对 a数组元素不正确的引用是 ( A) ap-a
8、 ( B) *( static int c=3; b+; c+; return(a+b+c); ( A) 777 ( B) 7 10 13 ( C) 7 9 11 ( D) 7 8 9 27 已知各变量的定义如下 int i=8, k, a, b; unsigned long w=5; double x=1.42, y=5.2; 则以下符合 C+语言语法的表达式是 ( )。 ( A) a+=a-= (b=4)*(a=3) ( B) a=a*3+2 ( C) x%(-3) ( D) y=float i 28 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 ( )。 ( A)函数调用
9、可以作为独立的语句存在 ( B)函数调用可以无返回值 ( C)函数调用町以出现在表达式中 ( D)函数调用可以作为一个函数的形参 29 以下函数调用语句中含有参数的个数是 excc(v1, v2), (v2, v3, v4),v6); ( A) 3 ( B) 4 ( C) 5 ( D) 6 30 C+中的类有两种用法:一种是类的实例比,即生成类的对象,并参与系统的运行;另一种是通过 ( )派生出新的类 。 ( A)复用 ( B)继承 ( C)封装 ( D)引用 31 使用如 setw()的操纵符对数据进行格式输出时,应包含 ( )文件。 ( A) iostream.h ( B) fstream
10、.h ( C) iomanip.h ( D) stdliB.h 32 设有以下类和对象的定义: class A public: int m; ; A k1,k2,*p1,* p2; 则下面针对成员变量 m的引用,错误的是 ( A) k1.m=1 ( B) k2- m 2 ( C) p1- m=3 ( D) (*p2).m=4 33 下列不是构造函数的特征的是 ( )。 ( A)函数名与类名相同 ( B)构造函数可以重载 ( C)构造函数可以设置默认值 ( D)构造函数可以有返回值 34 下列字符串中,正确的 C+标识符是 ( A) foo-1 ( B) 2b ( C) new ( D) -25
11、6 35 有如下程序: #include iostream using namespace std; int main() void function(double val); double val; function(val); cout val; return 0; void function(double val) val 3; 编译运行这个程序将出现的情况是 ( A)编译出错,无法运行 ( B)输出: 3 ( C)输出: 3.0 ( D)输出一个不确定的数 36 在结构化分析使用的数据流图中,使用 用 _解释其中的图形元素。 37 38 在关系运算中,【 】运算是对两个具有公共属性的关
12、系所进行的运算。 39 实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【 】的联系。 40 在面向对象方法中,允许作用于某个对象上的操作称为【 】。 41 设有定义语句: int a=12;,则表达式 a*=2+3的运算结果是 _。 42 下列程序的执行结果为 _。 #include iostream.h void main( ) cout.fill(*) ; cout.width(10) ; cout “hello“ endl; 43 虚函数必须是类的 _。 44 _是实现 C语言编
13、译时多态性的机制, _是实现 C语言运行时多态性的机制。 45 下列程序段的输出结果是【 】。 #include iostream.h void main() int i=10, sum=0; do sum=+sum+i; i=i-2; while(i 2); cout sum end1; 46 程序段的输出结果是【 】。 int x=3, y=2, z=1; count (x/y class sample int x; public: void setx(int i) x=i; int putx () return x; ; int main ( ) sample *p; sample A3
14、; A0 .set :(5); A1 .setx(6); A2 .setx(7); for (int j=0;j 3;j+) p= cout p- putx () “, “; cout end1; return 0; 执行后的输出结果是【 】。 50 语句序列 long x; x 0L;可用一个语句表示为【 】。 国家二级( C+)笔试模拟试卷 225答案与解析 1 【正确答案】 B 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。 2 【听力原文】 冒泡排序是一种最简
15、单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表 变成有序。 2 【正确答案】 D 3 【正确答案】 B 【试题解析】 当运算符重载为成员函数时,如果函数参数表中没有参数,则表明该重载为单目运算符,操作数就为该对象本身;如果函数参数表中有一个参数,则表示该重载为双目运算符,另外一个操作数为该对象本身。 4 【正确答案】 A 【试题解析】 软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。 5 【正确答案】 A 【试题解析】 耦 合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复
16、杂度、调用方式以及哪些信息通过接口。 6 【正确答案】 B 7 【正确答案】 B 【试题解析】 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。 8 【正确答案】 D 【试题解析】 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段:工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。 9 【正确答案】 C 【试题解析】 对于长度为 n的有序线性表,在 最坏情况下,二分法查找只需比较log2n次,而顺序查找需要比较 n次。 10 【正确答案】 C 【试题解析】 派生类从基类保护继承 (classYY: protectedXX)
17、时,基类的公有成员在派生类中变为保护成员,基类的保护成员在派生类中仍然是保护成员;本题中 YY本身有一个保护成员 y2,再加上基类 XX的 x2和 x3,故选 C。 11 【正确答案】 A 【试题解析】 此题考查的是 C+语言中标识符的定义。标识符有字母、数字和下划线构成,其中第一个字母必须是字母或下划线;定义标识符时,不要采用系 统的保留字 12 【正确答案】 A 【试题解析】 C+语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。 13 【正确答案】 A 【试题解析】 是否是重载函数,需要给编译器提供足够的信息判断。其主要的依据是函数的名字,参数的类型,函数的返回值类型
18、。 14 【正确答案】 A 【试题解析】 本题考查混合运算表达式类型,由表达式中具有最高优先级的类型所确定,所以答案为 A。 15 【正确答案】 B 【试题解析】 调用拷贝构造函数的情况为:一个新对 象被另一个已存在的同类型对象初始化,当一个对象作为实参传遵给函数时为初始化形参,要调用拷贝构造函数。在函数值返回时形参的生命期结束时它的析构函数被调用,在函数返回一个对象时调用拷贝构造函数。符合以上条件的有:用对象 obj1来初始化obj3;obj3作为实参被传入,函数 fun返回一个对象时,系统用返回值初始化一个匿名对象时调用了拷贝构造函数。总共调用 4次。 16 【正确答案】 A 【试题解析】
19、 数组定义中的数字指的是数组的大小,而下标是从 0开始的,所以题中数组的最后一个元素是 num9 。 17 【正确答案】 C 【试题解析】 在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类的访问属性。所以本题选择选项 C)。 18 【正确答案】 C 【试题解析】 本题中相当于定义了一个二维数组 int p4,标识符 p 是一个指针,指向一个含有 4个元素的一维数组。 19
20、 【正确答案】 C 【试题解析】 c是 char类型,而赋值给它的是字符串 “41“。 20 【正确答案】 A 21 【正确答案】 A 22 【正确答案】 D 23 【正确答案】 B 【试题解析】 运算符重载的相关内容。 24 【正确答案】 A 【试题解析】 C+的 I/O 系统是通过一种称为流的机制来实现文件和控制台的I/O 操作。简单地说,在 C+中,输入输出操作是通过流来完成的。而文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。每个文件流都应当 与一个打开的文件相联系;关闭一个文件就是取消这种联系。 25 【正确答案】 D 【试题解析】 通常,引用一个数组元素可以用下标法,如 apa形式,或指针法,如 *( 【试题解析】 变量的声明和赋值可以分别进行也可以同时进行。分别进行时称为赋值,同时进行是称为初始化。