1、国家二级 C+机试(选择题)模拟试卷 84 及答案与解析 一、选择题 1 关于关键字 class和 typename,下列表述中正确的是 ( )。 ( A)程序中的 typename都可以替换为 class ( B)程序中的 class都可以替换为 typename ( C)在模板形参表中只能用 typename来声明参数的类型 ( D)在模板形参表中只能用 class或 typename来声明参数的类型 2 在下列枚举符号中,用来表示 “相对于当前位置 ”文件定位方式的是 ( )。 ( A) ios_base: cur ( B) ios_base: beg ( C) ios_base: ou
2、t ( D) ios_base: end 3 下列关于 C+流的描述中,错误的是 ( )。 ( A) coutA表达式可输出字符 A ( B) eof()函数可以检测是否到达文件尾 ( C)对磁盘文件进行流操作时,必须包含头文件 fstream ( D)以 ios_base: out模式打开的文件不存在时,将自动建立一个新文件 4 下列排序方法中,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 5 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作
3、系统 ( C)教务管理系统 ( D)汇编程序 6 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 “是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 7 下列叙述中正确的是 ( )。 ( A)栈是 “先进先 出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 8 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 9 某二叉树
4、有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 10 下列排序方法中,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 11 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 c)教务管理系统 ( C)汇编程序 12 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 ”是程序调试的必要步骤 ( C)程序调试通常
5、也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 13 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 ( )。 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦合性提高内聚性有利于提高模块的独立性 ( C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 14 数据库应用系统中的核心问题是 ( )。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 15 有两个关系 R, S如下: 由关系 R通过运算得到关系S,则所使用的运算为 ( )。 ( A)选
6、择 ( B)投影 ( C)插入 ( D)连接 16 将 E-R图转换为关系模式时,实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 c)关系 ( C)域 17 字面常量 42、 4 2、 42L的数据类型分别是 ( )。 ( A) long、 double、 int ( B) long、 float、 int ( C) int、 double、 long ( D) int、 float、 long 18 执行下列语句段后,输出字符 “水 ”的个数是 ( )。 for(int i=50; i1; -i) cout using namespace std; class A public:
7、 static int a; void init()a=1; A(int a=2)init(); a+; ; int A: a=0; A obj; int main() cout using namespace std; class test private: int a; public: test()tout using namespace std; class Point public: static int number; public: Point()number+; 一 Point()number-; ; int Point: number=0: int main() Point*p
8、tr; P0int A, B; Point*ptr_point=new Point3; ptr=ptr_pomt; Point C: eout using namespaee std; class Sample friend long fun(Sample s); public: Sample(10ng a)x=a; private: long x; ; long fun(Sample s) if(s x using namespaee std; class A public: A(int i)x=i; void dispa()eoutoperator-(ClassName&);后置 +运算符
9、的重载的一般格式为: friendoperator-(ClassName&, int)。所以答案为 D。 26 【正确答案】 C 【试题解析】 函数参数的 3种传递方式: 将变量名作为形参和实参,即传值方式; 传递变量指针; 引用形参。本题中实参 x为传值方式,所以 x的值不会改变; y为引用形参,所以会改变。故本题答案为 C。 27 【正确答案】 C 【试题解析】 C+不能重载的运算符只有 5个,即 “ ”、 “*”、 “: ”、 “?: ”、“sizeof”,故本题答案为 C。 28 【正确答案】 C 【试题解析】 重载运算符的规则如下: C+不允许用户自己定义新的运算符,只能对已有的 C
10、+运算符进行重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 c。 29 【正确答案】 A 【试题解析】 类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。 30 【正确答案】 B 【试题解析】 本题考查构造函数,本题中对类中的 a数据成员先是赋值为 0,当定义了对象 obj时,执行构造函数,将 a的值变为了
11、 1,所以输出 l。 31 【正确答案】 B 【试题解析】 类的成员访问权限有 3种: public(公用 )、 protected(保护 )、private(私有 )。 32 【正确答案】 D 【试题解析】 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。 33 【正确答案】 C 【试题解析】 本题考查 3种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问基类的私有成员。本题答案为 C。 34 【正确答案】 B 【试题解析】 本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若
12、要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成 员函数来对它赋值,成员变量默认的访问权限为私有,即 a为私有变量。所以本题答案为 B。 35 【正确答案】 D 【试题解析】 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象 A(3),对象带着参数,所以执行带参数的构造函数,输出 3,然后执行析构函数,输出 destructor。所以本题答案为 D。 36 【正确答案】 B 【试题解析】 本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a以及对象数组 b2,共执行 3次构造函数,对象指针不调用构造函数。所以本题答案 为 B。 37 【正确答案】 C
13、【试题解析】 本题考查默认构造函数,题目中定义一个对象 A、 B以及对象数组Point3,又定义了对象 C,共执行 6次构造函数, number变为了 6,所以本题答案为 C。 38 【正确答案】 C 【试题解析】 本题考查默认构造函数,当 i-O、 l时, fun(Sample(i)为 1;当 i-2时, fun(Sample(i)为 2;当 i=3时, fun(Sample(i)为 6;当 i=4 时, fun(Sample(i)为 24;当 i=5时, fun(Sample(i)为 120。所以总和为 154。 39 【正确答案】 C 【试题解析】 本题考查公用继承和保护继承对基类成员的
14、访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中 Derivedl 公用继承 Base,所以 编译正确, Derived2保护继承 Base,所以 编译不正确。 40 【正确答案】 C 【试题解析】 本题考查派生类的构造函数和基类的构造函数。本题中类 B继承类 A,定义了一个类 B的对象并初始化 b(2),此时会执行类 B 的构造函数,执行的结果是继承类 A中的私有成员赋值了 12,给类 B自身的数据成员 x赋值了 2,执行 b dispb()后,输出类 A的私有成员 x,输出类 B 自身的数据成员,所以答案为 C。