1、国家二级( C+)笔试模拟试卷 112及答案与解析 1 栈和队列的共同特点是 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 2 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 3 链表不具有的特点是 ( A)不必事先估计存储空间 ( B)可随机访问任一元素 ( C)插入删除不需要移动元素 ( D)所需空间与线性表长度成正比 4 结构化程序设计的 3种结构是 ( A)顺序结构、选择结构、转移结构 ( B)分支结构、等
2、价结构、循环结构 ( C)多分支结构、赋值结构、等价结构 ( D)顺序结构、选择结构、循环结构 5 为了提高测试的效率,应该 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 6 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序 中的指令条数 7 软件生命周期中所花费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 8 数据库管理系统 DBMS中用来定义模式、内模式和外模
3、式的语言为 ( A) C ( B) Basic ( C) DDL ( D) DML 9 下列有关数据库的描述,正确的是 ( A)数据库是一个 DBF文件 ( B)数据库是一个关系 ( C)数据库是一个结构化的数据集合 ( D)数据库是一组文件 10 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 11 面向对象程序设计将数据和 ( )放在
4、一起,作为一个相互依存、不可分割的整体来处理。 ( A)对数据的操作 ( B)信息 ( C)数据隐藏 ( D)数据抽象 12 以下选项中, ( )是合法的字符常量。 ( A) N ( B) 010 ( C) 68 ( D) D 13 为了避免在嵌套的条件语句 if-else中产生二义性, C+语言中规定的 if-else匹配原则是 ( )。 ( A) else字句与所排位置相同的 if配对 ( B) else子句与其之前最近的 if配对 ( C) else子句与其之后最近的 if配对 ( D) else子句与同一行上的 if配对 14 有如下数组声明: int value30; 下标值引用错误
5、的是 ( )。 ( A) value30 ( B) value0 ( C) value10 ( D) value20 15 下列叙述中,错误的是 ( )。 ( A)一个函数中可以有多条 return语句 ( B)调用函数必须在一条独立的语句中完成 ( C)函数可通过 return语句返回其函数值 ( D)主函数名 main()也可以带形参 16 下列关于成员访问权限的描述中,不正确的是 ( )。 ( A)公有数据成员和公有成员函数都可以被类对象直接处理 ( B)类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问 ( C)只有类或派生类的成员函数和友元函数可以访问保护成员 (
6、D)保护成员在派生 类中可以被访问,而私有成员不可以 17 下列有关类的说法中,不正确的是 ( )。 ( A)类是一种用户自定义的数据类型 ( B)只有类中的成员函数才能存取类中的私有数据 ( C)在类中,如果不作特别声明,所有数据成员均为私有类型 ( D)在类中,如果不作特别声明,所有成员函数均为私有类型 18 继承具有 ( ),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。 ( A)规律性 ( B)传递性 ( C)重复性 ( D)多样性 19 下面关于虚函数的描述中,正确的 是 ( )。 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C
7、)虚函数既可以在函数说明时定义,也可以在函数实现时定义 ( D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 20 关于在调用模板函数时实参的使用,下列表述中正确的是 ( )。 ( A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的 模板实参,若能够省略则必须省略 ( D)对于常规参数所对应的模板实参,任何情况下都不能省略 21 有以下程序段,其输出的结果是 ( )。 int x, y, z; x = y = z
8、= O; +x | | +y cout x “,“ y “,“ z end1; ( A) 1,1,1 ( B) 1,1,0 ( C) 1,0,0 ( D) 0,0,0 22 有下列程序段 : #include iostream using namespace std; int main() char b = “Hello,you“; b5 = 0; cout b end1; return 0; 执行此程序后,得到的输出结果是 ( )。 ( A) Hello,you ( B) Hello0you ( C) Hello ( D) 0 23 若有以下程序 : #include iostream us
9、ing namespace std; int f() static int i = 0; int s = 1; s+=i; i+; return s; int main ( ) int i,a = 0; for(i = 0;i 5;i+) a+=f ( ); cout ( A) 20 ( B) 24 ( C) 25 ( D) 15 24 有如下类的定义。应在空格处填入的语句是 ( )。 class MyClass _ int x, y; public: MyClass(int a=0,int b=0) x=a; y=b; static void change) x-=10; y-=10; ;
10、( A) static ( B) const ( C) mutable ( D)不需 要填入内容 25 若有以下程序: #include iostream using namespace std; class point private: int x, y; public: point ( ) x=0; y=0; void setpoint(int x1,int y1) x=x1; y=y1; ( A) 12,12 ( B) 5,5 ( C) 12,5 ( D) 5,12 26 以下程序的执行结果是 ( )。 #include iostream using namespace std; cla
11、ss sample private: int x; public: sample (int A) x=a; friend double square(sample s); ; double square(sample s) ( A) 20 ( B) 30 ( C) 900 ( D) 400 27 若有以下程序: #include iostream using namespace std; class Base private: int x; protected: int y; public: int z; void setx(int i) x=i; int getx () return x;
12、( A) 1,2,3,4 ( B)产生语法错误 ( C) 4,3,2,1 ( D) 2,3,4,5 28 若有以下程序: #include iost ream using namespace std; class A private: int a; public: A(int i) a=i; void disp () cout a “, “; ; class B private: ( A) 10,10,10 ( B) 10,12,14 ( C) 8,10,12 ( D) 8,12,10 29 有如下程序 : #include iostream using namespace std; clas
13、s x protected: int a; public: x() a=1; ; class x1 : virtual public x public: x1() a+=1; cout a; ; ( A) 1 ( B) 123 ( C) 242 ( D) 244 30 阅读下面程序: #include iomanip. h int main () coutsetfill( * ) setw( 8 ); cout setprecision( 5 ) 3.1415926 end1; return 0; 则该程序的输出结果是 ( )。 ( A) 3.1415* ( B) *3.1416 ( C) 3
14、.141593 ( D) *3.14159 31 算法的空间复杂度是指【 】。 32 树 L中,度为 1、 2、 3、 4、 5和 6的节点个数为 6、 4、 3、 3、 5、 1,则 L中叶子的个数是【 】。 33 程序设计中最基本、最常用的控制结构是【 】。 34 软件是程序、数据和【 】的集合。 35 一个工人可以加工多种零件,每一种零件可以由不同的工人来加工,工人和零件之间为【 】的联系。 36 有以下程序: #include iostream using namespace std; int main ( ) int X = 4; do cout (x-=3) end1; while
15、(-X); return 0; 运行后的打印结果是【 】。 37 定义如下变量和数组: int i; int y23=2, 4, 6, 8, 10, 12; 则下面语句的输出结果是【 】。 for(i=0; i 2; i+) cout y1-i)i+1 “,“; 38 有以下程序: #include iostream using namespace std; const xnt N=5; int fun(char *s, char a, int n) int j; *s=a; j=n; while(a sj) j-; return j; int main() char sN+1; int k;
16、 39 有以下程序: #include iostream using namespace std; int f(int); int main() int i; for(i=0; i 5; i+) cout f(i) “ “; return 0; int f(int i) static int k=1; for(; i 0; i-) k+=i; 40 在用 class定义一个类时,数据成员和成员函数的默认权限是【 】。 41 含有纯虚函数的类称为【 】。 42 已知 int DBL(int n)return n+n; 和 long DBL(long n)return n+n)是一个函数模板的两个
17、实例,则该函数模板的定义是【 】。 43 在下面程序的横线处填上适当的语句,使该程序执行结果为 10。 #include iostream using namespace std; class MyClass public: MyClasS(int A) X=a; 【 】 /取 x的值 private: int x; ; int main() MyClass my(10); 44 有以下程序: #include iostream using namespace std; class Base int a; public: Base(int x) a-x; void show() cout a;
18、 ; class Derived : public Base int b; public: Derived 45 执行如下程序后的输出结果是【 】。 #include iostream #include fstream using namespace std; int main ( ) char s25; ofstream fl(“data.txt“); f1 “C+ Programming“; f1.close (); ifstream f2 (“data.txt“); 国家二级( C+)笔试模拟试卷 112答案与解析 1 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性
19、表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出 ”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”的线性表。 2 【正确答案】 D 【试题解析】 依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如下图所示。求得该二叉树的前序遍历序列为选项 D)。 3 【正确答案】 B 【试题解析】 链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态
20、申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处: 每个结点中的指针域需额外占用存储空间; 链式存储结构是一种非随机存储结构。 4 【正确答案】 D 【试题解析】 顺序结构、选择结构和循环结构 (或重复结构 )是结构化程序设计的3种基本结构。 5 【正确答案】 D 【试题解析】 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序 中已发现的错误数成正比。这一现象说明,为了提高测试效率,测试人员应该集中对付那些错误群集的程序。 6 【正确答案】 C 【试题解析】 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算
21、法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。 7 【正确答案】 D 【试题解析】 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时 间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 8 【正确答案】 C 【试题解析】 选项 A)、选项 B)显然不合题意。数据定义语言 (Data Definition Language,简称 DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言
22、(Data Manipulation Language,简称 DML)负责数据的操纵,包括查询及增、删、改等操作。 9 【正确答案】 C 【试题解析】 数据库 (Database,简称 DB)是数据的集合, 它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有 “集成 ”、 “共享 ”之特点。 10 【正确答案】 D 【试题解析】 数据处理是指将数据转换成信息的过程,故选项 A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属
23、性,对应存储文件中的字段,故选项 C)叙述错误。 11 【正确答案】 A 【试题解析】 面向对象语言包含 3个要素 ,即对象、类和继承。这 3个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。 12 【正确答案】 B 【试题解析】 本题考核字符型常量的表示。选项 A中是字符串的表示方法。选项 B所表示的是一个转义字符,是特殊的字符常量。选项 C中所表示的是整型常量。选项 D中不是常量的表示。 13 【正确答案】 B 【试题解析】 本题考核 if-else语句中 if与 91se的匹配原则。当多个 ifelse 语句嵌套时, else与哪个 if匹配
24、呢 ?为解决语义上的这种歧义 性, C+语言规定, else连接到在同一层中最接近它而又没有其他 else语句与之相匹配的 if语句。 14 【正确答案】 A 【试题解析】 本题考核对数组的引用。在 C+语言中,数组的下标是从 0开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是, C+语言中,编译和执行时并不检查数组下标是否越界。因此 value30在编译阶段是正确的,但是在运行时会出现错误。 15 【正确答案】 B 【试题解析】 本题考核函数的基本知识点。当函数有返回值时,调用函数可以作为一个表达式的子表 达式,而不是作为一条独立的语句存在。故选项 B的说法是错误的。 16
25、 【正确答案】 B 【试题解析】 类的私有数据成员也可以被类成员函数访问,不管是公有、私有或是保护成员,所以选项 B是错误的,其他选项是正确的。 17 【正确答案】 B 【试题解析】 对于类中的私有成员,除了类的成员函数外,类的友元函数和友元类的成员函数也可以访问。 18 【正确答案】 B 【试题解析】 在一个派生类中,其成员由两部分构成:一部分是从基类继承得到的,另一部分是自己定义的新成员。当基类本身也是一个派生 类时,它必然包含了它的直接基类成员,这些成员相应地也存在于该基类的派生类中。因此,继承是具有传递性的。 19 【正确答案】 D 【试题解析】 本题考核虚函数的定义。虚函数是非静态的
26、成员函数。它不能是友元函数,但可以在另一个类中被声明为友元函数。虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方。派生类的虚函数与基类中对应的虚函数必须满足下列条件,否则派生类中的虚函数将丢失其虚函数特性,在调用时进行静态联编: 派生类中的虚函数与基类中的虚函数具有相同的名称。 派生类中的虚 函数与基类中的虚函数具有相同的参数个数和相同的对应参数类型。 派生类中的虚函数与基类中的虚函数的返回值,或者相同,或者都返回指针或引用。并且派生类中虚函数所返回的指针或引用的基类型,是基类型中的虚函数所返回的指针或引用的基类型的子类型。 20 【正确答案】 D 【试题解析】
27、模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表 (用和括起来的参数表 )或从模板函数实参表 (用 ()括起来的参数表 ),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;
28、或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。 由此可知,只有选项 D的说法是正确的。 21 【正确 答案】 C 【试题解析】 本题考查自增运算符和逻辑运算符两个知识点。错误解答: x, y,z都参 与逻辑运算 +x|+y&+z;,最后得到 x=y=z=1。 在正确解答此题前,我们先来看看以下两个表达式: a+&b+; a+|b+; 其中: 式中,若 a的值为 0,表达式先去求 a+的值,系统完全可以确定逻辑表达式的运算结果为 0,因此跳过 b+不再对它进行求值,所以 a的值将自增 1,由 0变成 1,而 b值将不变。 式中若 a值为 1,表达式先去求 a
29、+的值,由于表达式 a+的值为 1,无论表达式 b+为何值,系统完全可以确定逻辑表达式的运算结果为 1,因此也将跳过b+不再对它进行求值,所以 b将保持不变。 现在我们来看题目,首先我们对 +x进行计算,由于开始 x值为 0,所以 +x的值为 1,由上述第 点可知 “|”后面已不再进行运算了,也就是 y, z保持原值不变。所以输出结果应为 1, 0, 0。 22 【正确答案】 C 【试题解析】 本题考核字符数组的特性。本题表面上看起来很简单,其实不然,出题者在题中隐藏了一个陷阱。常见的错误答案是:字符数组 b初始化后,得b5=,执行 “b5=0; ”后,把 0代替 b5中的 , 即可。最后输出
30、整个字符串“Hello0you”。下面是正确解答:在 C+语言中规定:以字符 0作为字符串结束标志。语句 “b5=0; ”就相当于语句 b5=0,即在数组 b的 b5加上了字符串结束标志,故执行该语句后,数组中存放的内容变为 Hello。 23 【正确答案】 D 【试题解析】 本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性 (即变量只能 在变量的作用范围内被访问 ),又可以永久存在 (变量的值得以保留,并可继续使用 )。静态局部变量只在第 1次执行时初始化一次。在函数 f()中定义了一个静态局部变量 i,它的初始值为 0,还定义了
31、一个局部变量 s(它的初始值为 1),用来返回计算所得值。函数 f()中所进行的数据加工是 s+=i和 i+。即每调用一次函数 f(),返回 (i+1)的值后, i的值增 1。再看主函数,在主函数中,通过一个 for语句连续调用 f函数5次,并把每次调用 f函数的返回值相加并存入 a,最后输出 a的值。在了解各函数功能以及调用关系后就可计算出 a的值为 15。 24 【正确答案】 A 【试题解析】 本题考核静态成员函数的使用。由题可知,函数 change()为类MyClass的静态成员函数。先来了解静态成员函数:静态成员函数与静态数据成员相似,也从属于类,只要类存在,静态成员函数就可以使用,静
32、态成员函数的定义是在一般函数的定义前加上关键词 static。调用静态成员函数的格式如下:类名:静态成员函数名 (参数表 ); 静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员 (因为非静态数据成员只有对象存在时才有意义 )。但静态数据成员和静态成员函数可由任意访问权限许可的函数访问。和一般成员函数类似,静态成员函数也有访问限制,私有静态成员函数不能由外界访问。 由静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问类中的非静态数据成员可知,变量 x和 y只能是类 MyClass的静态数据成员,所以 x和 y的定义为 “s
33、tatic int x, y; ”。 25 【正确答案】 D 【试题解析】 本题考核对象指针的定义与使用。分析程序:程序首先定义一个类point。类 point中有两个私有成员,整型变量 x和 y,还有两个公有成员函数setpoint(int x1,int y1)和 dispoint()。函数 setpoint()用来设置私有成员 x和 y的值,而函数 dispoint()用来显示私有成员 x和 y的值。主函数中,首先定义了类 point的指针对象 p,并申请了内存空间,然后调用对象 p中公有成员 setpoint给对象 p中的私有成员 x和 y赋值,然后调用成员函数 dispoint显示 x
34、和 y的值。由此可知,最后输出的值应该是 5,12。 26 【正确答案】 C 【试题解析】 本题考核友元函数的应用。程序中函数 square()是类 sample的一个友元函数,它可以直接访问类 sample的所有成员。它的功能是返回类 sample的私有数据成员 x的平方。所以程序的执行结果是: 900。注意:友元函数不是类的成员函数,在类外定义时不要加上类名及其作用域运算符 (:)。友元函数的调用与一般函数的调用的方式和原理一致,可以在程序的任何地方调用它。 27 【正确答案】 A 【试题解析】 本题考核私有继承中类成员的访问权限。当类的继承方式为私有继承时,基类公有成员和保护成员都以私有
35、成员属性出现在派生类中。私有派生类的成员 对其基类成员的访问权和公共派生的方式相同,但是,由私有派生的类声明的对象,不能访问任何基类的成员。本题中,基类 Base中的保护成员 y和公有成员 setx和 getx,经过私有继承以后,称为派生类 Inherit的私有成员,所以可以在派生类 Inherit的函数成员中对它们进行访问。类 Inherit中的函数成员 setvalue和 display都是公有成员,所以可以通过 Inherit的对象对它们进行访问。本程序的功能是对类中各数据成员进行赋值,然后查看赋值是否正确。 28 【正确答案】 D 【试题解析】 本题 考核派生类构造函数的使用。本题中,
36、派生 C具有多重继承关系,所以在派生类 C的构造函数中应该包含基类 A和 B的成员初始化列表。而且派生类 C中的成员函数 disp分别调用了基类 A、 B的公有成员函数 disp()用于输出基类中私有数据变量初始化后的值。所以由类 C构造函数的初始化形式可知,程序最后输出为 8, 12, 10,即 D选项。 29 【正确答案】 D 【试题解析】 本题程序中引入了虚基类。在主函数中,执行语句 “y obj; ”时,先执行虚基类 x的构造函数,使 a=1,然后执行类 x1的构造函数,使 a=2,并输出值 2。再执行类 x2的构造函数,使 a=4,并输出值 4。最后执行类 y的构造函数,输出值 4。
37、 30 【正确答案】 B 【试题解析】 本题主要考察 C+中输入输出流的格式控制操作。 C+允许使用 setprecision操纵符来控制输出对象的输出精度,若程序中没有指定输出精度,则其默认值为 6。 C+同时允许使用 setfill()操纵符设置填充符,默认填充字符为空格符 “”。本题程序中,首先通过 setfill()操纵符设置填充字符为星号 “*”,并设置输出宽度为 8位;输出对象前,设置对象的输出精度为 5,因此对象 3.1415926的实际输出数值为 3.1416(自动进行四舍五入 );再把宽度设置考虑进去,由于默认对齐方式为右对齐,因此数值左边需要加填充符,即应该填充三个 “*”
38、符号以满足输出宽度为 8位的要求。故程序的最终输出应该是 “*3.1416”。 31 【正确答案】 算法执行过程中所需要的存储空间 【试题解析】 算法的空间复杂度是重要考点之一,应该理解记忆。算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。 32 【正确答案】 45 【试题解析】 节点的度 节点拥有子树的个数。 树中节点总数为: 1*6+2*4+3*3+4*3+5*5+6*1=66与根节点之和, 即 66+1=67
39、 树中非叶子节点数为 6+4+3+3+5+1=22 树中叶子节点数为: 67-22=45 33 【正确答案】 顺序结构 【试题解析】 顺序结构是一种简单的程序设计,它是最基本、最常用的结构。 34 【正确答案】 文档 【试题解析】 本题是基础题。计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 35 【正确答案】 多对多 【试题解析】 联系是指现实世界中事物间的关联,在概念世界中联系反映了实体集间的一定关系。一个工人可以加工多种零件,每一种零件可以由不同的工人来加工,因此它们之间的联系属于多对多的联系。 36 【正确答案】 1 【试题解析】 程序进入
40、do-while循环后,执行 x-=3后,输出 x的值 1。然后判断 (-x)为假,退出循环。 37 【正确答案】 10,6 【试题解析】 for循环所输出的数组元素分别为 y11、 yO2,即输出 10和6。 38 【正确答案】 3 【试题解析】 函数 fun()的功能是在字符数组 s中找到大于或等于字符 a第 1个元素,并返回其下标值。在主函数中,通过 for循环给字符数组 s分别赋值 B、CJ 。然后通过调用函数 fun(),找到字符 E的位置。 39 【正确答案】 1 2 5 11 21 【试题解析】 函数 f()中定义了一个内部静态变量 k,其作用域仍在定义它的函数内。但该类 型变量
41、采用静态存储分配,当函数执行完,返回调用点时,该变量并不撤销,其值将继续保留,若下次再进入该函数时,其值仍然存在。内部静态变量有隐含初值 0,并且只在编译时初始化一次。 40 【正确答案】 私有 【试题解析】 类中数据成员和成员函数的默认访问权限是 private(私有 )。 41 【正确答案】 抽象类 【试题解析】 拥有纯虚函数的类称为抽象类,抽象类不能用来定义对象。 42 【正确答案】 template class T TDBL(Tn)return n+n; 【试题解析 】 本题考核函数模板的使用。 函数模板的一般说明形式如下: template类型形参表返回类型函数名 (形参表 )/函数
42、体 函数调用方式为: 函数名 (实参表 ); 形参表中的类型以实参表中的实际类型为依据。由此易得答案。 43 【正确答案】 int GetNum()return x; 【试题解析】 由主函数中调用对象 my成员函数 GetNum()可得到,成员函数GetNum()的功能是返回其私有数据成员 x的值。 44 【正确答案】 2 【试题解析 】 本例程序中类 Derived是从基类 Base公有继承来的。主函数中定义了基类对象 b和一个基类指针 pb,又定义了派生类 Derived的对象 d。由于Derived是 Base的子类型,因此可以将派生类 Derived的对象 d的地址赋值给指向基类 Base的指针 pb,但这时指针 pb只能使用从基类 Base继承的成员。所以通过对象指针 pb调用的 show函数是基类的成员函数 show(),从而输出基类私有数据成员 a的值 2。 45 【正确答案】 C+ 【试题解析】 程序先在当前目录下建立一个 data文本文件,并写入 “C+ Programming”。然后打开该文件,将其中的数据输入到变量 s中,由于采用提取符 “ ”读时遇到空格终止,所以最后字符数组 s中存放的是 “C+”。