1、国家二级( C+)笔试模拟试卷 32及答案与解析 1 由 C+目标文件连接而成的可执行文件的缺省扩展名为 _ 。 ( A) cpp ( B) exe ( C) obj ( D) lik 2 设 x和 y均为 bool量,则 x y为假的条件是 _ 。 ( A)它们均为真 ( B)其中一个为真 ( C)它们均为假 ( D)其中一个为假 3 在下面的函数声明中, _ 是 “void BC (int a,int b); ”的重载函数。 ( A) int BC (int a,int b) ( B) void BC(int a, char b) ( C) float BC (int a, int b,i
2、nt c=0) ( D) void BC (int a, int b=0) 4 int a10,则下面正确表示数组中的第十个元素的是 _ 。 ( A) a9 ( B) a10 ( C) *(a+10) ( D) a 5 假设 AB为一个类, pa为指向该类动态对象数组 px的指针,该数组长度为 n,则执行 “delete pa; ”语句时,自动调用该析构函数的次数为 _ 。 ( A) 0 ( B) 1 ( C) n ( D) n+1 6 当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 _ 。 ( A) iios: binary ( B) ios: in
3、ios: out ( C) ios: out ( D) ios: in 7 在每个 c+程序中都必须包含这样一个函数,该函数的函数名为 _ 。 ( A) main ( B) MAIN ( C) name ( D) function 8 设 x和 y均为 bool 量,则 x则下列叙述中错误的是 _ 。 ( A)枚举常量 NAME的值为 1 ( B)枚举常量 NUMBER的值为 1 ( C)枚举常量 MINUS的值为 6 ( D)枚举常量 PRINT的值为 10 19 执行语句序列: int i=0; while (i 25)i+=3; cout i; 输出结果是 _ 。 ( A) 24 ( B
4、) 25 ( C) 27 ( D) 8 20 要定义一个具有 5个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0和 0,则下列定义语句中错误的是 _ 。 ( A) int vect=30,50,-88; ( B) int vect=30,50,-88,0,0; ( C) int vect5=30,50,-88; ( D) int vect5=30,50,-88,0,0; 21 有如下程序: #include iostream void fun (inty=t; int main() int a2=23, 42; fun (a1, a0; std:cout a0 ”,
5、” a1 std: ond1; retum0; 执行 后的输出结果是 _ 。 ( A) 41, 41 ( B) 23, 23 ( C) 13, 42 ( D) 42, 23 22 有如下类声明: class Foo int bar; ;则 Foo 类的成员 bar是 _ 。 ( A)公有数据成员 ( B)公有成员函数 ( C)私有数据成员 ( D)私有成员函数 23 有如下类声明: class MyBASE int k; public: void set(int n) k=n; int get()const return k; ; class MyDERIVED: protected MyBA
6、SE Protected: int j; public: void set(int m,int n)MyBASE: set(m);j=n; int get () const return MyBASE: get ()+j; ;则类 MyDERIVED 中保护的数据成员和成员函数的个数是_ 。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 24 已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是 _ 。 ( A)这是运算符 的重载运算符函数 ( B)这个函数所重载的运算符是一个一元运算符 ( C)这是一个
7、成员函数 ( D)这个函数不改变类的任何数据成员的值 25 有如下函数模板定义: template class T T func (T x, T y)return x*x+y*y; 在下列对 func 的调用中,错误的是 _ 。 ( A) func(3, 5); ( B) func(3.0,5.5); ( C) func(3, 5.5); ( D) func int (3, 5.5); 26 有如下程序: #include iostream using namespace std; int main() cout.fill(*); cout.width (6); cout.fill(#); c
8、out 123end1; return 0; 执行后的输出结果是 _ 。 ( A) #123 ( B) 123# ( C) *123 ( D) 123* 27 在下列函数原型中,可以作为类 AA构造函数的是 _ 。 ( A) void AA(int); ( B) int AA(); ( C) AA (int)const; ( D) AA(int) 28 下列关于 this 指针的叙述中,正确的是 _ 。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的 友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 29 有如下程序:
9、 #include iostream using namespace std; class Test public: Test() n+=2; Test() n-=3; static int getNum()retum n; private: static int n; ; int Test: n=1; int main() Test*p=new Test; delete p; cout “n=“ Test: getNum() end1; return 0; ;执行后的输出结果是 _. ( A) n=0 ( B) n=1 ( C) n=2 ( D) n=3 30 有如下程序 : #includ
10、e iostream using namespace std; class A public: A() cout “A“; ; class B public:B() cout “B“; class C: public A Bb; public: C() cout “C“; ; int main() C obj;return 0;执行后的输出结果是 _。 ( A) CBA ( B) BAC ( C) ACB ( D) ABC 31 有如下类声明: class XA int x; public: XA(int n) x=n; ; class XB: public XA int y; public:
11、 XB(int a,int b); ;在构造函数 XB的下列定义中,正确的是 _。 ( A) XB: XB(int a, int b):x(a),y(b) ( B) XB:XB(int a, int b):XA(a),y(b) ( C) XB:XB(int a,int b):x(a),XB(b)i ( D) XB:XB(int a,int b):XA(a),XB(b) 32 有如下程序 : #include iostream using namespace std; class BASE public: BASE() cout “BASE“; ; class DERIVED: public B
12、ASE public: DERIVED() cout; “DERIVED“; ; int main()DERIVED x; return 0; 执行后的输出结果是 _ 。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 33 在表达式 x+y*z中, +是作为成员函数重载的运算符, *是作为非成员函数重载的运算符。下列叙述中正确的是 _ 。 ( A) operator+有两个参数, operator*有两个参数 ( B) opezator+有两个参数, operator*有一个参数 ( C) operator+有一个参数, op
13、erator*有两个参数 ( D) operator+有一个参数, operator*有一个参数 34 下面关于 C+流的叙述中,正确的是 _ 。 ( A) cin是一个输入流对象 ( B)可以用 ifstream 定义一个输出流对象 ( C)执行语句序列 char*y=“PQMN”; cout y;将输出字符串 “PQMN”的地址 ( D)执行语句序列 char x80; cin getline (x,80);时,若键入 Happy new year,则 x中的字符串是 “Happy”, 35 有如下程序: #include iostream using namespace std; cla
14、ss AA int n; public: AA(int k):n(k) int get() return n; int get()const retnm n+1; int main() AA a(5); const AA b(6); cout a.get() b.get(); return 0; 执行后的输出结果是 _ 。 ( A) 55 ( B) 57 ( C) 75 ( D) 77 36 数据的逻辑结构在计算机存储器内的表示,称为数据的【 】。 37 在深度为 6的满 -X树中,叶子结点的个数为【 】。 38 已知 _-X树中序遍历序列是 cbade,它的后序遍历序列是 cbeda,前序遍
15、历序列是【 】。 39 白盒测试法的覆盖标 准有逻辑覆盖、循环覆盖和【 】。 40 实体完整性规则规定基本关系的所有主属性【 】。 41 C+程序中的预处理命令以符号【 】作为起始标记。 42 在 C+语言中,整数可用 3种数制表示,它们分别为:十进制、八进制和【 】。 43 求 1 100的和,可写成 for(s=0,i=1;【 】 ;i+)s+=i; 的形式。 44 在 C+中,一个数组名字实际上是指向该数组【 】的指针。 45 在 C+中,一个函数一般由两部分组成,分别是函数头和【 】。 46 假定用 户没有给一个名为 MyClas的类定义析构函数,则系统为其定义的默认析构函数形式为【
16、】。 47 C+中,派生类继承了基类的全部数据成员和除【 】之外的全部函数成员。 48 执行下面程序输出的是【 】。 #include iostream using namespace std; template typename T T total(T *data) Ts=0; while( *data) s+=*data+; return s; int main() int s=1,3,5,7,0,2,4,6,8; cout total(s); return 0; 49 下面函数用来求出两个整数之和,并通过形参传回两数相加的结果。请将函数补充完整。 int add(int x,int y,
17、 【 】 z) 【 】 =x+y; 国家二级( C+)笔试模拟试卷 32答案与解析 1 【正确答案 】 B 【试题解析】 cpp文件编译之后为 obj文件,而 obj文件连接成 exe文件,所以选择 B。 2 【正确答案】 C 【试题解析】 如果 x y为假,则它们均为假,所以选择 C。 3 【正确答案】 D 【试题解析】 如果重载函数 void BC (int a, int b),则参数个数和返回值等都要与其相同。 4 【正确答案】 A 【试题解析】 数组中的第十个元素是 a9。 5 【正确答案】 B 【试题解析】 由于调用的是 delete pa,而不是 deletepa,所以只析构了一次
18、,调用该析构函数的次数为 1次。 6 【正确答案】 D 【试题解析】 当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ios:in。 7 【正确答案】 A 【试题解析】 主函数 main()是 C+程序中必须含有的一个函数。 8 【正确答案】 A 【试题解析】 x与 y的关系为真,则 x& y为真的条件是它们均为真。 9 【正确答案】 C 【试题解析】 new 为分配内存保留字,所以不能为函数的返回类型。 10 【正确答案】 C 【试题解析】 a4的字节地址为 a+4*4。 11 【正确答案】 C 【试题解析】 函数可以自己调用自己,而且可以没返回值,可
19、以具有多个参数。 12 【正确答案】 A 【试题解析】 类可以有多个对象。 13 【正确答案】 D 【试题解析】 多态性的相关概念。 14 【正确答案】 B 【试题解析】 运算符重载的相应内容。 15 【正确答案】 C 【试题解析】 类模板可以有自己的数据成员,例如 template class T。 16 【正确答案】 D 【试题解析】 “ ”称为插入运算符。 17 【正确答案】 D 【试题解析】 标识符必须以下划线或者字母开头。 18 【正确答案】 A 【试题解析】 枚举常量第一个值默认为零,所以 NAME=0。 19 【正确答案】 C 【试题解析】 当 i=27时跳出循环,所以输出结果应
20、是 27。 20 【正确答案】 A 【试题解析】 5个元素的一维数组 vect,而 A构造的是 3个元素的一维数组。 21 【正确答案】 B 【试题解析】 a0做的是 地址传递,所以执行函数后值发生变化,而 a1做的是值传递,值并没有发生变化,所以此题应选择 A。 22 【正确答案】 C 【试题解析】 类成员的默认属性为私有数据成员。 23 【正确答案】 C 【试题解析】 由于是保护继承,基类的公有成员变成保护成员, set(int n)变成保护成员函数,而 get()const 被重载,为公有成员, j为新定义的保护成员,所以数据成员和成员函数的个数是 C。 24 【正确答案】 A 【试题解
21、析】 重载的是一个二元运算符 “一 ”,所以此题选择 A。 25 【正确答案】 C 【试题解析】 在 C的调用过程中, func(3,5.5)由于参数的类型不一致,不能判别两个参数的类型,发生错误。 26 【正确答案】 A 【试题解析】 根据定义,开始设置的 coutfill (*),被后面的 cout fill(#)替代,所以 cout的输出结果是 #123。 27 【正确答案】 D 【试题解析】 如果作为类 AA构造函数不能有返回值,排除答案 A、 B,而且不能是常函数,所以选择 D。 28 【正确答案】 D 【试题解析】 类的非静 态成员函数才有 this指针。 29 【正确答案】 A
22、【试题解析】 经过一次构造函数和析构函数的调用后,执行后的输出结果是 A。 30 【正确答案】 D 【试题解析】 在构造派生类对象时,基类的构造函数要优于派生类的构造函数先执行,所以 D为正确答案。 31 【正确答案】 B 【试题解析】 构造函数的定义过程中,初始化基类成员,只能通过调用基类构造函数,所以答案选择 B。 32 【正确答案】 D 【试题解析】 析构函数的调用顺序是,先调用派生类的析构函数,再调用基类的析构函 数。 33 【正确答案】 C 【试题解析】 operator+ 作为成员函数重载,本身便是一个参数,所以只有一个参数,而 *是作为非成员函数重载,需要两个参数,此题选择 C。
23、 34 【正确答案】 A 【试题解析】 cin 是一个输入流对象。 35 【正确答案】 B 【试题解析】 const 是可以标志运算符重载的,所以选择 B。 36 【正确答案】 存储结构 【试题解析】 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。 37 【正确答案】 63 【试题 解析】 所谓满 -X树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。在深度为 N的满二叉树中,叶子结点的个数为 2N-1。 38 【正确答案】 abcde 【试题解析】 前序遍历序列的顺序是先根,再左子树,最后右子树;中序遍历序列的顺序是先左子树,再根,最后右子树;后序遍历序列
24、的顺序是先左子树,再右子树,最后根。后序遍历序列中最后一个是根节点 (a),确定根节点后,从中序遍历序列中即可确定左子树 (cb)和右子树 (de),然后再从后序遍历序列中确定左子树的根 (b)及其左子树 (c)和右子树 (空 ),从后序遍历序列中确定右子树的根 (d)及其左子树 (空 )和右子树 (e),描绘成图,然后求出前序遍历序列。 39 【正确答案】 基本路径测试 【试题解析】 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试三种。 40 【正确答案】 不许为空 【试题解析】 实体完整性是指:关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值,在关系系统中一个关系通
25、常对应一个表。 41 【正确答案】 # 【试题解析】 “#”是预处理命令的开始标记符。 42 【正确 答案】 十六进制 【试题解析】 在 C+中,整数可用十进制、八进制和十六进制 3种数制表示。八进制数以 0开始,十六进制以 0x开头。 43 【正确答案】 i =100 【试题解析】 本题循环执行 100次,每次循环执行 s=s+i,因为是求 1 100的和,所以需要循环变量满足的条件是 i =100。 44 【正确答案】 首元素 【试题解析】 在 C+中,数组的名字就是指向该数组第 1个元素的指针,即该数组第 1个元素的地址,也即数组的首地址。 45 【正确答案】 函数体 【试题解析】 在 C+中,一个函数由函数头和函数体两部分组成。 46 【正确答案】 MyClas() 【试题解析】 析构函数名是在类名前加符号 “ ”,它既没有返回值,也没有参数。 47 【正确答案】 构造函数和析构函数 【试题解析】 C+的类的继承中,基类的构造函数和析构函数不能被继承。 48 【正确答案】 16 【试题解析】 本题中函数模板实现的功能是计算所传入数组 data中元素值为 0的元素前面所有元素值的和。 49 【正确答案】 int*, *z 【试题解析】 题目中应把形参 z定义为指针变量,以返回运算结果,因此第 1个空填入 int *,第 2个空将和值赋值给指针变量指向的变量。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1