1、国家二级( C+)笔试模拟试卷 138及答案与解析 1 在长度为 n的有序线性表中进行二分查找,需要的比较次数为 ( A) log2n ( B) nlog2n ( C) n/2 ( D) (n+1)/2 2 下列数据结构中能应用二分查找的是 ( A)有序线性链表 ( B)有序顺序表 ( C)顺序存储的栈 ( D)顺序存储的队列 3 设有下列二叉树: 对此二叉树中序遍历的结果为 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 4 对建立良好的程序设计风格,下面描述正确 的是 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 (
2、C)充分考虑程序的执行效率 ( D)程序的注释可有可无 5 结构化程序设计的主要特点是 ( A)每个控制结构要模块化 ( B)每个控制结构具有封装性 ( C)每个控制结构具有独立性 ( D)每个控制结构只有一个入口和一个出口 6 下面不属于软件工程 3个要素的是 ( A)工具 ( B)过程 ( C)方法 ( D)环境 7 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数 据流图合法图符的是 ( A)控制流 ( B)加工 ( C)数据存储 ( D)源和潭 8 下列关于关系运算的叙述中正确的是 ( A)投影、选择、连接是从二维表的行的方向来进行运算
3、 ( B)并、交、差是从二维表的列的方向来进行运算 ( C)投影、选择、连接是从二维表的列的方向来进行运算 ( D)以上三种说法都不对 9 数据库设计包括两个方面的设计内容,它们是 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 10 下列叙述中正 确的是 ( A)实体集之间一对一的联系实际上就是一一对应的关系 ( B)关系模型只能处理实体集之间一对一的联系 ( C)关系模型属于格式化模型 ( D)以上三种说法都不对 11 关于面向对象的程序设计方法,下列说法正确的是 ( A) “封装性 ”指的是将不同类型的相关数据组
4、合在一起,作为一个整体进行处理 ( B) “多态性 ”指的是对象的状态会根据运行时要求自动变化 ( C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 ( D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 12 下列关于类和对象的叙述中,错误的是 ( A)一个类只能有一个对象 ( B)对象是类的具体实例 ( C)类是对某一类对象的抽象 ( D)类和对象的关系是一种数据类型与变量的关系 13 设有 a、 b、 c、 d、 m、 n均为血型变量,且 a=5、 b=6、 c=7、 d=8、 m=2、 n=2,则逻辑表达式 (m=a B) case 3: case 4: cout
5、2: break; default: cout 3: 时,若键盘输入 1,则屏幕显示 ( A) 1 ( B) 2 ( C) 3 ( D) 12 15 下列程序的输出结果是 #include iostream using namespace std; int main () char a = “Hello,World“: char*ptr = a; while (*ptr) if(*ptr = a else cout *ptr; ptr+; return 0; ( A) HELLO. WORLD ( B) Hello, World ( C) hELLO, wORLD ( D) hello, wo
6、rld 16 若执行语句: cout setfill(*) setw(10) 123 “OK“ end1后将输出 ( A) *123OK ( B) 123*OK ( C) *123*OK ( D) 123*OK* 17 C+语言中 while循环和 do-while循环的主要区别是 ( A) do-while的循环体至少无条件执行一次 ( B) while的循环控制条件比 do-while的循环控制条件严格 ( C) do-while允许从外部转到循环体内 ( D) do-while的循环体不能是复合语句 18 定义如下枚举类型: enumMonday, Tuesday, Wednesday,
7、 Thrusday, Friday=2;则下列语句正确的是 ( A)表达式 Wednesday=Friday的值是 true ( B) Day day; day=3; ( C) Day day; day=Monday+3; ( D) Day day; day=Tuesday+10; 19 有以下程序 #include iostream int i = 0; void fun( ) static int i = 1; std:cout i+ ,; std:cout i ,; int main() fun(); fun(); return 0; 程序执行后的输出结果是 ( A) 1,2,1,2,
8、( B) 1,2,2,3, ( C) 2,0,3,0, ( D) 1,0,2,0, 20 要定义一个具有 5个元素的一维数组 vect,并使其各元素的初值依次是 30,50, -88, 0和 0,则下列定义语句中错误的是 ( A) int vect =30,50,-88; ( B) int vect=30,50,-88,0,0; ( C) int veer5=30,50,-88; ( D) int vect5=30,50,-88,0,0; 21 函数定义为 Fun(int ( C) Fun(n); ( D) Fun( 22 有如下程序: #include iostream.h using na
9、mespace std; class Base protected: int i: public: int j; ; class Derived: public Base int m: public: int n; int main() Derived d: d.i=0; /1 d.J=0; /2 d.m=0; /3 d.n=0: /4 return 0; 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是 ( A) 1和 2 ( B) 1和 3 ( C) 2和 3 ( D) 2和 4 23 下列关于 new运算符的描述中错误的是 ( A)使用运算符 new创建对象数组时必须定义初始值 (
10、 B)使用运算符 new创建对象时,会调用类的构造函数 ( C)运算符 new可以用来动态创建对象和对象数组 ( D)使用 new运算符创建的对象可以使用运算符 delete删除 24 有如下函数模板定义: template typename T1, typename T2 typename T3 T2 plus(T1 t1, T3 t3)return t1+t3; 则以下调用中正确是 ( A) plus(3,5L); ( B) plus (3,5L); ( C) plus int (3,5L); ( D) plus int, double (3,5L); 25 有如下函数模板定义: temp
11、late 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 在 C+中用来实现运行时多态性的是 ( A)重载函数 ( B)析构函数 ( C)构造函数 ( D)虚函数 27 派生类的构造函数的成员初始化列表中,不能包含 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类的子对象初始化 ( D)派生类中一般数据成员的初始化 28 有以下程序: #incl
12、ude iostream using namespace std; class sample private: int n: public: sample () sample(int m) n=m; sample add(sample s1, sample s2) this- n=s1.n+s2.n; return (*this); void disp () cout “n=“ n end1; ; int main() sample s1(1)0,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是 ( A) n=10 ( B)
13、n=5 ( C) n=20 ( D) n=15 29 已知类 Myst有一个只需要一个 double型参数的构造函数,且将运算符 “-”重载为 友元函数。要使语句序列 Myst x3.2), y(5.5), z (0.0); z=8.9-y; y=x-6.3; 能够正常运行,运算符函数 operator-应该在类中声明为, ( A) friend Myst operator- (Myst ( B) friend Myst operator-(Myst,Myst); ( C) friend Myst operator-(Myst,Myst ( D) friend Myst operator-(M
14、yst 30 下列对派生类的描述中,错误的是 ( A)一个派生类可以作为另一个派生类的基类 ( B)派生类至少有一个基类 ( C)派生类的成员除了它自己的成员外,还包含了它的基类的成员 ( D)派生类中继承的基类成员的访问权限到派生类中保持不变 31 在进行任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是 ( A) fail ( B) eof ( C) bad ( D) good 32 C+流中重载的运算符是一个 ( A)用于输出操 作的非成员函数 ( B)用于输入操作的非成员函数 ( C)用于输出操作的成员函数 ( D)用于输入操作
15、的成员函数 33 有以下类定义 class Point public: Pointint x = 0, int y=0) _x = x; _y = y; void Move int xoff, int yoff) _x +=xoff;_y+=yoff; void Print() const cout ( _x , _y ) end1; private: int_x,_y; ; 下列语句中会发生编译错误的是 ( A) Point pt;pt.Print(); ( B) const Point pt;pt.Print(); ( C) Point pt;pt.Move(1, 2); ( D) con
16、st Point pt;pt.Move(1, 2) 34 有以下程序 #include iostream using namespace std; static int days =31,28.31,30,31,30,31,31,30,31,30,31; class date private: int month, day, year: public: date (int m, int d, int y month = m; day = d; year = y; date void disp ) cout year “ - “ month “- “ dayend1; date operator
17、+(int day) date dt = *this: day += dt.day; while day days dt.month - 1 ) day -= tays dt.month - 1 ; if ( +dt.month = 13 dt.month = 1; dt.yeare+; dr. day = day; return dt; ; int main() date d1( 6, 20, 2004 ), d2; d2.= d1 + 20; d2.disp (); return 0; 执行后的输出结果是 ( A) 2004-7-10 ( B) 2004-6-20 ( C) 2004-7-
18、20 ( D)程序编译时出错 35 有以下程序 #include iostream using namespace std; class Complex public: Complex (double r=0, double i =0 :re(r) ,im (i) double real() const return re; double imag() const return im; Complex operator + (Complex c const return Complex(re+c.re, im+c.im); privane: double re,im; ; int main C
19、omplex a =Complex (1,1)+Complex(5); cout a.real() + a.imag() i endl return 0; 程序执行后的输出结果是 ( A) 6+6i ( B) 6+1i ( C) 1+6i ( D) 1+1i 36 在深度为 5的完全二叉树中,度为 2的结点数最多为 _。 37 在面向对象方法中, 属性与操作相似的一组对象称为 _。 38 诊断和改正程序中错误的工作通常称为 _。 39 在关系运算中, _运算是对两个具有公共属性的关系所进行的运算。 40 数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基
20、于逻辑结构的应用程序不必修改,称为 _。 41 写出执行完下列代码段之后指定变量的值: bool x=true, y=false, z=false; x=x cout _ setw(14) i couu end1 _ setw(14) i; 国家二级( C+)笔试模拟试卷 138答案与解析 1 【正确答案】 A 【试题解析】 在长度为 n的有序线性表中进行二分查找,需要的比较次数为log2n。选项 A正确。 2 【正确答案】 B 【 试题解析】 二分查找的具体过程为:将 x与线性表的中间项进行比较,若中间项的值等于 x,则说明查到,查找结束;若 x小于中间项的值,则在线性表的前半部分 (即中间
21、项以前的部分 )以相同的方法进行查找;若 x大于中间项的值,则在线性表的后半部分 (即中间项以后的部分 )以相同的方法进行查找。这个过程一直进行到查找成功或子表长度为 0(说明线性表中没有这个元素 )为止。由此可知,有序线性表顺序存储时才能采用二分查找。所以,本题的正确答案为 B。 3 【正确答案】 B 【试题解析】 二叉树的遍历分为先序、中序、后序三种不同方 式。本题要求中序遍历,其遍历顺序应该为:中序遍历左子树 访问根结点 中序遍历右子树。按照定义,中序遍历序列是 DBEAFC,故答案为 B。 4 【正确答案】 A 【试题解析】 符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含
22、义,以便于对程序功能的理解。所以,选项 B错误。程序设计风格强调 “清晰第一,效率第二 ”,而不是效率第一。所以,选项 C错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。所 以,选项 D错误。本题的正确答案为 A。 5 【正确答案】 D 【试题解析】 结构化程序设计要求把程序的结构限制为顺序、选择和循环三种基本结构,以便提高程序的可读性。这种结构化程序具有以下两个特点:首先,以控制结构为单位,只有一个入口和一个出口,使各单位之间的接口比较简单,每个单位也容易被人们所理解;其次,缩小了程序的静
23、态结构与动态执行之间的差异,使人们能方便、正确地理解程序的功能。本题的正确答案是 D。 6 【正确答案】 D 【试题解析】 软件工程包括 3个要素,即方法、工具和过程。方法是完成 软件工程项目的技术手段;工具是指支持软件的开发、管理、文档生成;过程是支持软件开发的各个环节的控制、管理。环境不属于软件工程的 3个要素之一。本题的正确答案为 D。 7 【正确答案】 A 【试题解析】 数据流图由 4种基本成分构成:数据流,数据处理 (即加工 ),数据存储,外部实体 (即源和潭 )而控制流是程序流程图中的图符,它不属于数据流图的合法图符。选项 A正确。 8 【正确答案】 C 【试题解析】 在关系模型的
24、数据语言中,一般除了运用常规的集合运算 (并、交、差、笛卡尔积等 )外,还定义了一些专门的 关系运算,如投影、选择,连接等运算前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。周此,选项 A与 B错误,选项 C正确。 9 【正确答案】 A 【试题解析】 数据库设计包括两个方面的设计内容:概念设计和逻辑设计。选项A正确 10 【正确答案】 D 【试题解析】 实体集之间一对一的联系不一定是一一对应的关系如在图书馆,“学生 ”与 “座位 ”之间是一对一的联系,但学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有 学生去坐
25、。选项 A错误。在关系模型中,由于使用表格数据来表示实体之间的联系,所以,可以直接描述多对多的实体联系。选项 B错误。关系模型是与格式化模型完全不同的数据模型,它与层次模型,网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。选项 C错误。本题的正确答案是 D。 11 【正确答案】 D 【试题解析】 本题考核 C+程序的基本框架。 “封装性 ”指将数据和算法捆绑成一个整体,而不是将不同类型的相关数据组合在一起 C+中的多态性是指一个面向对象的系 统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务。基类的私有成员在派生类的
26、对象中不可访问,但是也占据内存空间。 C+同时支持结构化和面向对象两种程序设计的基本框架,所以在面向对象的程序设计中,结构化程序设计方法仍有着重要作用。 12 【正确答案】 A 【试题解析】 本题考核类和对象的概念类是用户定义的一种类型,程序员可以使用这个类型来说明多个变量,即对象。 13 【正确答案】 C 【试题解析】 在 ”输出 1,然后进入第 3、 4个分支,执行 “cout 2;”,然后执行 break,跳出 switch语句所以最后输出为 12。 15 【正确答案】 A 【试题解析】 本题考核 while语句和 if语句, while语句中 if语句的作用是将小写字母变成大写字母输出
27、、所以 main函数的字符串通过 while语句全部输出为大写字母。 16 【正确答案】 A 【试题解析】 本题考核格式控制数据的输入 输出。函数 setfill(char c) 用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满。函数 setw(int n)用于设置输入输出宽度,宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出或输入后,宽度设置自动恢复为 0,例如题中语句以宽度 10输出数据 “123”后,字符串 “OK”的输出宽度就自动恢复为 0了。而且输出的初始状态为右对齐,所以最终的输出为 *123OK。 17 【正确答案】 A 【试题解析
28、】 本题考核 C+语言中 while循环和 do-while循环之间的区别。 do-while语句与 while语句不同的是, do-while循环中的语句至少会执行一次,而 while语句中当条件在第一次循环就不满足时,语句一次也不会执行。 18 【正确答案】 A 【试题解析】 本题考查枚举类型的定义和使用。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点:枚举类型的第一个常量默认值是0;枚举类型常量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数 进行比较。根据以上知识我们可以得出 B、 C、
29、D选项都不正确。 19 【正确答案】 D 【试题解析】 本题考核变量的作用域、生存周期和存储类别 (自动、静态、存储器、外部 )。题中即定义全局变量 i,又在函数 fun内部定义了局部静态变量 i, 当进入函数 fun里面的大括号时,局部静态变量 i有效,所以输出 1,然后局部静态变量 i加 1,出了里面的大括号后,全局变量 i有效,所以输出 0。同理,第二次调用 fun后,输出 2和 0。 20 【正确答案】 A 【试题解析】 本题考核一维数组在定义时的初始化。当数组声明 时没有给出数组的大小,但是有初始化列表时,数组的大小就由列表中元素的个数来确定, 由此可知 A) 选项中数组 vect只
30、有 3个元素,与题目要求不符。 21 【正确答案】 C 【试题解析】 本题考核函数的调用。当函数的参数是引用类型时,参数不能是常量、表达式和变量地址,只能是变量本身。 22 【正确答案】 B 【试题解析】 本题考核类和派生类的访问权限。类 Derived共有继承 Base,那么d对基类 Base成员变量的访问权限不变,由于数据成员 i为保护的,不能通过对象访问。派生类 Derived中变量 m为私有的,同样不能通过对象访问,所以错误的赋值语句为 1和 3。 23 【正确答案】 A 【试题解析】 本题考核运算符 Dew。先来 7解运算符 new:运算符 new返回指定类型的一个指针,如果分配失败
31、 (如没有足够的内存空间 ),则返回 0。它与delete运算符一起使用,以达到直接进行动态内存分配和释放的目的。对于 A选项,使用运算符 Flew创建对柬数组时只能指定分配内存的大小,不能为该数组指定初始值,其初始值为缺省值,因此类中必须定义缺省构造函数。所以 A选项的描述是错误的。 B、 C和 D选项的描 述都是正确的。 24 【正确答案】 D 【试题解析】 本题考核函数模板的使用。 C+中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返
32、回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数 T2没有出现在模板函数的形参列表中,所以在调用时不能省略, D选项的调用省略了 T3,这是允许的 。 25 【正确答案】 C 【试题解析】 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的,但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的 C) 选项,编译系统从第一个参数 “3”获得的信息是 “T对应于 int”
33、,而从第二个参数 “5.5”处获得的信息是 “T对应于 double”,二者相互矛盾,在编译时会产生错误。对于 D) 选项中紧跟在函数名后的 int就是模板实参表,通过它通知编译系统在调用过程中, double型的参数 “5.5”将被自动换成 int型。 26 【正确答案】 D 【试题解析】 本题考核虚函数。在 C+语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现。其实现机制称为静态联编 (也译为静态绑定 ),即在编译阶段决定执行哪个同名的被调用函数;运行时的多态性是通过体现的,其实现机制称为动态联编 (也译为动态绑定 ),印在编译阶段不能决定执
34、行哪个同名的被调用函数,只在执行阶段才能依据要处理的 对象类型来决定执行哪个类的成员函数。用来实现运行时多态性的是虚函数。 27 【正确答案】 C 【试题解析】 本题考核构造函数。在 C+中,构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数但是它不负责基类中子对象的初始化。 28 【正确答案】 D 【试题解析】 本题考核 this指针的使用。类成员函数 add中通过 this指针实
35、现私有数据成员 n的赋值。 29 【正确答案】 B 【试题解析】 本题考核运算符的重载。题中将运算符 “-”重载为友元函数,其声明格式如 B选项所描述的。 30 【正确答案】 D 【试题解析】 本题考核继承与派生。基类与派生类的关系为:基类是对派生类的抽象,派生类是对基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加信息将抽象的基类变为某种有用的类型,派生类是基类定义的延续。派生类是基类的组合。公有派生类的对象可以作为基类的对象处理 。由此可知 A、 B和 C选项都是正确的。而在继承中,采用不同的继承方式,将限制派生类对基类成员的访问。所以 D选项是错误的。 31 【正确答案】 B
36、 【试题解析】 本题考核 C+流的文件操作。 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is_open():判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false;函数 good():刚进行的操作成功时返回 true,否则返回 false。函数 fail():与 good ()相反,刚进行的操作失败时返回true,否则返回 false函数 bad():如果进行 7非法操作返回 true,否则返回false函数 eof():进行输入操作时,若到达文件尾返回 true,否则返回 false。其中, eof函数只能用于输入流操作。 32 【正确答案】
37、 B 【试题解析】 本题考核运算符重载。 C+中重载输入流运算符和输出流运算符只能作为非类成员函数重载,且必须使用如下原形: istream ostream 33 【正确答案】 D 【试题解析】 本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数, D选项中对象 pt为常对象,而成员函数 Move()不是常成员函数,所以这样调用会发生编译错误。 34 【正确答案】 A 【试题解析】 本题考核运算符的重载。本题通过将 “+”运算符重载为类 date的成员函数实现简单的对象加法。 35 【正确答案】 B 【试题解析】 本
38、题考核类与对象、运算符重载。运算符 “+”在类 Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以 main函数中语句“Complex a =Complex(1, 1) + Complex(5);”的作用相当于 “Complex a(1+5, 1);”即对象 a的数据成员 re的值为 6, imag的值为 1,所以输出为 6+1i。 36 【正确答案】 15 【试题解析】 在深度为 5的完全二叉树中,度为 2的结点数最多的是深度为 5的满二叉树。在深度为 5的满二叉树中,前 4层中所有结点的度为 2。即在深度为 5的完全二叉树中,度为 2的结点数最多 相当于深度为 4的满二叉
39、树中的结点数。深度为 4的满二叉树中的结点数为 2的 4次方 -1=15。 37 【正确答案】 类 【试题解析】 在面向对象方法中,类描述的是具有相似性质的一组对象。所以,属性与操作相似的一组对象称为类。 38 【正确答案】 调试或程序调试或软件调试或 Debug或调试程序或调试软件或debug 【试题解析】 调试也称排错,调试的目的是发现错误的位置,并改正错误。一般的调试过程分为错误侦查、错误诊断和改正错误。 39 【正确答案】 自然连接 【试题解析】 在关系运 算中,自然连接运算是对两个具有公共属性的关系所进行的运算。 40 【正确答案】 物理独立性 【试题解析】 逻辑独立性是指,由于数据
40、的局部逻辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。物理独立性是指,由于数据的存储结构与逻辑结构之间由系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改。 41 【正确答案】 true 【试题解析】 本题考核 C+运 算符运算优先级和结合性。执行语句 “xx”时,就会先调用虚基类 Base的构造函数,使得 x=0,然后执行类 Derived1的构造函数使得 x=10,再执行类 Derived2的构造函数,使得 x=20。最后输出 x的值为 20。 5
41、0 【正确答案】 xxxxxHello 【 试题解析】 本题考核 I/O的格式化输出。 setfill(x)表示填充字符为 x,并且一直有效,直到再次设置填充字符为止。 setw(10)表示将输入输出宽度设置为 10,当实际数据宽度小于指定的宽度时,多余的位置用填充字符填满;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出。宽度设置的效果只对一次输入或输出有效,在完成一个数据的输入或输出后,宽度设置自动恢复为 0(表示按数据实际宽度输入输出 )。题中字符串 “Hello”的宽度不够 10,所以其前面将有 5个填充符 x。 51 【正确答案】 setfill(*); left 【试题解析】 本题考核格式控制数据的输入输出函数 setfill(char C) 用于设置填充字符,在输出数据时、如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满。函数 setw(int n)用于设置输入输出宽度,宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出或输入后,宽度设置自动恢复为 0。输出的初始状态为右对齐,所以第一行输出的为右对齐,而第二行为左对齐,所以要填入关键字 “left”。