1、国家二级( C+)笔试模拟试卷 87及答案与解析 1 C+源晚间中包含的输入 /输出头文件为 ( )。 ( A) stdio.h ( B) stdafx.h ( C) iostream.h ( D) stream.h 2 下列关于 C+函数的描述中正确的是 ( )。 ( A)主函数是程序的入口,它由用户定义的函数调用 ( B)函数在调用之前必须先被声明 ( C)每个用户定义的函数只能被其他函数调用一次 ( D)函数是 C+中面向对象程序设计框架的基本组成单元 3 已知 int a, *pa= if(a=b+c)cout “*“ endl: else cout “$“ endl; 下列选项叙述正
2、确的是 ( )。 ( A)有语法错 不能通过编译 ( B)可以通过编译但不能通过连接 ( C)输出 * ( D)输出 $ 11 有如下程序: #include iostream using namespace std; class XX protected; int k; public: XX(int n=5):k(n) XX()cout “XX“; virtual void f()const=0; ; inline void XX:f()constcout k+3; class YY:public XX public: YY()cout “YY“; void f()constout k-3;
3、XX:f(); ; int main() XX p.f(); delete break; case 1: a-b ( C) switch(a*a) case1,2: +a; case3,4: +b; ( D) swish(a/l0+b) cases 5: a/5; break; default: a+b: 27 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化 ( )。 ( A)与虚基类下面的派生类个数有关 ( B)多次 ( C)两次 ( D)一次 28 己知类 X成功地重载了 -、 =、 +、和 这几个运算符,则其中肯定属于成员函数的运算
4、符是 ( )。 ( A)和 ( B) 和后置 - ( C) =和 ( D)前置 -和 29 下面程序的结果为 ( )。 #include“iostream.h“ void change(int a, int b) int temp; temp=a; a=b b=temp; void main() int m, n; m=8; n=9; change(m, n); cout m “ “ n endl; ( A) 89 ( B) 98 ( C)程序有错误 ( D) 99 30 关于成员函数特征的下述描述中, ( )是错误的。 ( A)成员函数一定是内联函数 ( B)成员函数可以重载 ( C)成员函
5、数可以设置参数的默认值 ( D)成员函数可以是静态的 31 如果一个类至少有一个纯虚函数,那么就称该类为 ( )。 ( A)抽象类 ( B)虚基类 ( C)派生类 ( D)以上都不对 32 在 C+中,打开一个文件,就是将这个文件与一个 ( )建立关联,关闭一个文件,就是取消这种关联。 ( A)类 ( B)流 ( C)对象 ( D)结构 33 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 ( )。 ( A)函数调用可以作为独立的语句存在 ( B)函数调用可以无返回值 ( C)函数调用町以出现在表达式中 ( D)函数调用可以作为一个函数的形参 34 下列函数中, ( )是对文件进
6、行写操作的。 ( A) get() ( B) read() ( C) seekg() ( D) put() 35 关于 read()函数的下列描述中,正确的是 ( )。 ( A)该函数只和来从键盘输入中获取字符串 ( B) 该函数所获取的字符多少是不受限制的 ( C)该函数只能用于文本文件的操作中 ( D)该函数只能按规定读取所指定的字符数 36 冒泡排序算法在最好的情况下的元素交换次数为【 】。 37 在最坏情况下,堆排序需要比较的次数为【 】。 38 若串 s=“MathTypes“,则其子串的数目是【 】。 39 软件开发环境是全面支持软件开发全过程的【 】集合。 40 关系数据库的关系
7、演算语言是以【 】为基础的 DML语言。 41 一个 C+语言程序的开发步骤通常包括编辑、【 】、链接、 运行和调试。 42 若已知 a=10, b=20,则表达式! a b的值为【 】。 43 友元类的所有成员函数都是另一个类的【 】。 44 表达式 x.operator+( )还可写成【 】。 45 以下程序的输出结果是【 】。 #include iostream.h void main( ) int a=0; a+= ( a=8 ); cout a; 46 若要在 C盘根目录下作 为二进制文件打开文件 test.dat ,则应该用的语句是【 】。 国家二级( C+)笔试模拟试卷 87答案
8、与解析 1 【正确答案】 C 2 【正确答案】 B 3 【正确答案】 D 4 【正确答案】 A 5 【正确答案】 D 6 【正确答案】 A 7 【正确答案】 B 8 【正确答案】 B 9 【正确答案】 A 10 【正确答案】 D 11 【正确答案】 A 12 【正确答案】 D 13 【正确答案】 A 14 【正确答案】 A 15 【正确答案】 B 16 【正确答案】 D 17 【正确答案】 B 18 【正确答案】 B 19 【正确答案】 A 20 【正确答案】 B 21 【正确答案】 B 22 【正确答案】 C 23 【正确答案】 A 24 【正确答案】 D 25 【正确答案】 D 26 【正
9、确答案】 D 27 【正确答案】 D 28 【正确答案】 C 29 【正确答案】 A 30 【正确答案】 A 31 【正确答案】 A 32 【正确答案】 B 33 【正确答案】 D 34 【正确答案】 D 35 【正确答案】 D 36 【正确答案】 0 【试题解析】 根据冒泡排序算法思想可知,若待排序的初始序列为 “正序 ”序列,则只需进行一趟排序,在排序过程中进行 n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为 0。 37 【正确答案】 O(nlog2n) 【试题解析】 在最坏情况下,冒泡排序所需要的比较次数为 n(n-
10、1)/2;简单插入排序所需要的比较次数为 n(n -1)/2;希尔排序所需要的比较次数 为 O(nl.5);堆排序所需要的比较次数为 O(nlog2n)。 38 【正确答案】 46 【试题解析】 串 s中共有 9个字符,由于串中字符各不相同,则其子串中有 0个字符的 1个 (空串 ), 1个字符的 9个, 2个字符的 8个, 3个字符的 7个, 4个字符的 6个, 5个字符的 5个, 6个字符的 4个, 7个字符的 3个, 8个字符的 2个, 9个字符的 1个,共有 1+2+3+4+5+6+7 +8+9+1=46。 39 【正确答案】 软件工具 40 【正确答案】 谓词演算 【试题解析】 关系
11、数据库中的关系演算包括元组关系 演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。 41 【正确答案】 编译 【试题解析】 C+语言程序开发的基本步骤是编辑、编译、链接、运行和调试。 42 【正确答案】 1 【试题解析】 计算表达式 !a b,先计算 !a,因 a的值为 10, !a的值为 0。关系表达式 0 20为真,所以表达式 !a b的值为 1。 43 【正确答案】 友元函数 【试题解析】 C+语言中友元类中的函数都是另一个类的友元函数。 44 【正确答案】 +x 【试题解析】 C+语言中用成员函数重载 +x为 x.operator+()用
12、友元函数重载+x为: operator+(x) 45 【正确答案】 16 【试题解析】 解答本题的关键是要分析清楚表达式 a+= (a=8)中, a的值已经被赋为 8,而不是 0。 46 【正确答案】 ifstream fin(“C: test dat“, ios_binary);或 ifstream fin;fin open(c: test dat“, ios_binary); 【试题解析】 C+中打开文件有 两种方式 ifstream fin (“test.dat“); ifstream fin; fin open(“test.dat“);, ios_binary的意义是以二进制文件打开。 fin open(“test.dat“);, ios_binary的意义是以二进制文件打开。