1、二级 C+-230 及答案解析(总分:65.50,做题时间:90 分钟)一、选择题(总题数:38,分数:65.50)1.关于函数中的返回类型,下列表述中错误的是 _ 。(分数:2.00)A.返回类型中有可能包含关键字 intB.返回类型中有可能包含自定义标识符C.返回类型中有可能包含字符*D.返回类型中可能包含口2.有如下程序: #includeiostream using namespace std; void fl(intx,inty) int z=x;x=y;y=z; void f2(int x,int y) int z=x;x=y;y=z; int main() int x=10,y=
2、26; f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是_。(分数:2.50)A.10B.16C.26D.363.已知在一个类体中包含如下函数原型:VOLUMEOPER ATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是_。(分数:1.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值4.有如下类声明: class Foo int bar; 则 Foo 类的成员 bar 是_。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数
3、据成员D.私有成员函数5.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前6.下列叙述中正确的是_。(分数:1.00)A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对7.下列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:1.00)A.派生类的构造函数会隐含调用基类的构造
4、函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数8.有下列程序: #include stdio.h void main() int a=1,b=2,c=3,d=0; if(a=1b+=2) if(b!=2|c-!=3) printf(“%d,%d,%d/n“,a,b,c); else prinif(“%d,%d,%d/n“,a,b,c); else printf(“%d,%d,%d/n“,a,b,c); 程序运行后的输出结果是_。(分数:2.50
5、)A.1,2,3B.1,3,2C.1,3,3D.3,2,19.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构10.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构11.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算D.以上三种说法都不对12.为类 Ma
6、trix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.50)A.+B.=C.D.+13.下列关于函数重载的叙述中,错误的是_。(分数:2.50)A.重载函数的参数个数可以不同B.重载函数的参数类型可以不同C.重载函数的返回值类型必须不同D.重载函数的参数个数或参数类型必须有所不同14.语句 ofstream f(“SALARY.DAT“,ios:appl ios:binary);的功能是建立流对象 f,试图打开文件SALARY.DAT 并与之连接,并且 _ 。(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件
7、存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件15.在深度为 5 的满二叉树中,叶子节点的个数为(分数:2.00)A.32B.31C.16D.1516.有如下类模板定义: templatetypename T class BigNumber long n; public; BigNumberT i:n(i) BigNumber operator+(BigNumber b) return BigNumbern+b.n); ; 已知 b1、b2 是 BigNumber 的两个对
8、象,则下列表达中错误的是_。(分数:1.00)A.b1+b2B.b1+3C.3+b1D.3+317.下列选项中正确的定义语句是_。(分数:2.50)A.double a;b;B.double a=b=7;C.double a=7,b=7;D.double,a,b;18.已知函数 FA 调用函数 FB,若要把这两个函数定义在同一个文件中,则_。(分数:1.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前19.下列关于单目
9、运算符+、-的叙述中,正确的是 _ 。(分数:1.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和血型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 doule 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量20.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是_。(分数:1.00)A.*p+9B.*(p+8)C.*p+=9D.p+821.下面的语句中错误的是(分数:2.00)A.int a5;i
10、nt xa ;B.const int a5;int xa ;C.int n5;int * pnew inta ;D.const int n5;int * pnew inta ;22.计算机能直接执行的程序是_。(分数:2.50)A.源程序B.目标程序C.汇编程序D.可执行程序23.语句 ofstream outf(“TEST.DAT“,ios_base:app);的功能是建立流对象 outf,并试图打开文件TEST.DAT 与 outf 关联,而且 _ 。(分数:2.00)A.如果文件存在,打开失败:如果文件不存在,建立一个新文件B.如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失
11、败C.如果文件存在,将文件指针定位于文件尾:如果文件不存在,建立一个新文件D.如果文件存在,将其置为空文件;如果文件不存在,打开失败24.下列有关指针的用法中错误的是 _ 。(分数:2.00)A.int i;int *ptr=B.int i;int *ptr;i=*ptr;C.int *ptr;ptr=0;D.inti=5;int *ptr;*ptr25.有如下程序: #includeiostream using namespace std; class Power public: Power(int x):val(x) _ protected: int val; ; class Square
12、:public Power public: Square(int x):Power(x) void Display() coutval“的平方是“val*valendl; ; int main() Power*p=new Square(3); p-Display(); delete p; return 0; 若运行时的输出结果为“3 的平方是 9”,则划线处缺失的语句可能是_。(分数:1.00)A.void Display()B.virtual void Display()=0C.void virtual Display()=0;D.void Display()virtual 26.在开发一个
13、 C+程序的整个过程中,第 3 个步骤为_。(分数:2.50)A.链接B.运行C.编辑D.编译27.有如下 4 个语句: cout“A“setfill(“*“)leftsetw(7)“B“endl; coutsetfill(“*“)leftsetw(7)“A“B“endl; cout“A“serfill(“*“)rightsetw(7)“B“endl; coutsetfill(“*“)rightsetw(7)“A“B“endl; 其中能显示 A*B 的是_。(分数:2.00)A.和B.和C.和D.和28.有如下类定义: class AA int a; public: AA(int n=0):a
14、(n) ; class BB:public AA public: BB(int n)_ ; 其中横线处缺失部分是_。(分数:3.00)A.:a(n)B.:AA(n)C.a(n);D.a=n;29.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ; class YY: protected XX private: double y1; protected: double y2; public: double y3; ; 在类 YY 中保护成员变量的个数是_。(分数:1.00)A.1B.2
15、C.3D.430.有下列程序: #include stdio.h int b=2; int fun(int*k) b=*k+b;return(b); void main() int a10=1,2,3,4,5,6,7,8,i; for(i=2;i4;i+)b=fun(ai)+b;printf (“%d“,b);) printf(“/n“); 程序运行后的输出结果是_。(分数:2.50)A.10 12B.8 10C.10 28D.10 1631.下列关于数据库设计的叙述中,正确的是_。(分数:1.00)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.
16、在物理设计阶段建立数据字典32.下列函数的运行结果是 _ 。 #includeiostream.h int f(int a,int b) int c; if(ab) c=1; else if(a=b)c=0 elsec=-1; return(c); void main() int i=2,j=3; int p=f(i,j); coutp:(分数:1.00)A.-1B.1C.2D.编译出错,无法运行33.已知 n 是一个 int 型变量,下列语句中错误的是_ 。(分数:2.00)A.long *p=new long n;B.long pn;C.long *p=new long (n);D.lon
17、g p1034.下列程序的运行结果为 #includeiostream.h templateclass TT class FF TTa1,a2,a3; public: FF(TT b1,TT b2,TT b3) a1b1;a2b2;a3b3; TT Sum( ) return a1a2a3; void main( ) FF int x(int(1.1) ,2,3) ,y(int(4.2) ,5,6) ; cout x. Sum( ) “ “ y. Sum( ) endl;(分数:2.00)A.6.1 15.2B.6 15C.6 15.2D.6.1 1535.下列关于 dowhile 语句的叙述
18、中,正确的是_。(分数:2.50)A.dowhile 语句所构成的循环不能用其他语句构成的循环来代替B.dowhile 语句所构成的循环只能用 break 语句跳出C.dowhile 语句所构成的循环只有在 while 后面的表达式非零时才结束D.dowhile 语句所构成的循环只有在 while 后面的表达式为零时才结束36.C+语言中标点符号中表示一条预处理命令开始的是(分数:1.00)A.#B.;C.*D.37.数据处理的最小单位是_。(分数:1.00)A.数据B.数据元素C.数据项D.数据结构38.有如下类定义: class Foo public: Foo(int v):value(v
19、) / Foo() / private: Foo() / int value=0; / ; 其中存在语法错误的行是_。(分数:1.00)A.B.C.D.二级 C+-230 答案解析(总分:65.50,做题时间:90 分钟)一、选择题(总题数:38,分数:65.50)1.关于函数中的返回类型,下列表述中错误的是 _ 。(分数:2.00)A.返回类型中有可能包含关键字 intB.返回类型中有可能包含自定义标识符 C.返回类型中有可能包含字符*D.返回类型中可能包含口解析:解析 返回类型又称函数类型,表示一个函数所计算(或运行)的结果值类型,这里的类型可以是预定义类型(如 int)、复合类型(如 d
20、ouble*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等操作,则该函数返回类型为 void 类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。2.有如下程序: #includeiostream using namespace std; void fl(intx,inty) int z=x;x=y;y=z; void f2(int x,int y) int z=x;x=y;y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); coutyendl; return 0; 运行时的输出结果是_。(分数:2.50)A.1
21、0 B.16C.26D.36解析:解析 该题考查了函数参数传递的两种方式:引用传递和值传递。引用传递时 x 和 y 会交换,而值传递时二者不交换,因此选 10。3.已知在一个类体中包含如下函数原型:VOLUMEOPER ATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是_。(分数:1.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析 本题考核运算符的重载。题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有
22、用 const 修饰的成员函数。4.有如下类声明: class Foo int bar; 则 Foo 类的成员 bar 是_。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析 此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为 private 私有权限。5.已知函数 FA 调用 FB,若要把这两个函数定义在同一个文件中,则_。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,
23、则 FB 的原型必须出现在 FA 的定义之前 解析:解析 在 C+中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数 FA 调用 FB 时,函数 FB 可以定义在 FA 的后面,但是 FB 的原型必须出现在 FA 的定义之前,因而选项 D 为正确答案。6.下列叙述中正确的是_。(分数:1.00)A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对 解析:解析 栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。7.下列关于派生类构造
24、函数和析构函数的说法中,错误的是_。(分数:1.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。8.有下列程序: #include stdio.h void main() int a=1,b=2,c=3,d=0; if(a=1b+=2) if(b!=2|c-!=3) printf(“%d,%d,%d/n“,a,b,c);
25、else prinif(“%d,%d,%d/n“,a,b,c); else printf(“%d,%d,%d/n“,a,b,c); 程序运行后的输出结果是_。(分数:2.50)A.1,2,3B.1,3,2C.1,3,3 D.3,2,1解析:解析 在程序中,当执行第一条 if 语句时,进行逻辑语句的判断,因为变量 b 的初值为 2,所以其值加 1 后为 3,与 2 不相等,所以 if 语句中的逻辑表达式的值为假,则程序执行最后一条 else printf语句,输出变量为 a,b,c,当前数值为 1,3,3。所以正确答案为选项 C。9.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的
26、数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构 解析:解析 线性表的特点是:在数据元素的非空有限集合中,存在唯一的一个被称为“第一个”的数据元素;存在唯一一个被称为“最后一个”的数据元素;除第一个以外,集合中的每个数据元素均只有一个后继;除最后一个以外,集合中的每个数据元素均只有一个后继。因此,双向表是非线性结构。10.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构 D.物理和存储结构解析:解析 数据结构概念一般包括 3 个方面的内容,数据的逻辑结构、存储结构及数据上的运算
27、集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。11.下列关于关系运算的叙述中正确的是(分数:2.00)A.投影、选择、连接是从二维表的行的方向来进行运算B.并、交、差是从二维表的列的方向来进行运算C.投影、选择、连接是从二维表的列的方向来进行运算 D.以上三种说法都不对解析:解析 在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择,连接等运算前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。周此,选项 A 与 B 错误,
28、选项 C 正确。12.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.50)A.+B.= C.D.+解析:13.下列关于函数重载的叙述中,错误的是_。(分数:2.50)A.重载函数的参数个数可以不同B.重载函数的参数类型可以不同C.重载函数的返回值类型必须不同 D.重载函数的参数个数或参数类型必须有所不同解析:解析 重载函数是函数的一种特殊情况,为方便使用,C+允许在同一范围中声明几个功能类似的函数同名,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。14.语句 ofstream
29、f(“SALARY.DAT“,ios:appl ios:binary);的功能是建立流对象 f,试图打开文件SALARY.DAT 并与之连接,并且 _ 。(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:15.在深度为 5 的满二叉树中,叶子节点的个数为(分数:2.00)A.32B.31 C.16D.15解析:解析 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的
30、所有节点都有两个叶子节点。这就是说,在满二叉树中,层上的节点数都达到最大值,即在满二叉树的第 k 层上有 2 k1 个节点,且深度为 m 的满二叉树有 2 m 1 个节点。16.有如下类模板定义: templatetypename T class BigNumber long n; public; BigNumberT i:n(i) BigNumber operator+(BigNumber b) return BigNumbern+b.n); ; 已知 b1、b2 是 BigNumber 的两个对象,则下列表达中错误的是_。(分数:1.00)A.b1+b2B.b1+3C.3+b1 D.3+3
31、解析:解析 该题考查了 C+模板类和十运算符重载的知识,3+b1 时,程序不能将 bl 转化为整型,所以编译会出错。17.下列选项中正确的定义语句是_。(分数:2.50)A.double a;b;B.double a=b=7;C.double a=7,b=7; D.double,a,b;解析:解析 本题考查变量昀定义。选项 A 是两条语句,用分号隔开,只定义了 a 为 double 型;选项 B中,不允许这种声明赋值方式,语法错误;选项 D 中,类型与变量名之间不加逗号;选项 C 为正确的。18.已知函数 FA 调用函数 FB,若要把这两个函数定义在同一个文件中,则_。(分数:1.00)A.F
32、A 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前 解析:解析 如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数作声明。19.下列关于单目运算符+、-的叙述中,正确的是 _ 。(分数:1.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和血型变量,但不能是 float 型变量C.它们的运算对象可以是
33、int 型变量,但不能是 doule 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量 解析:解析 本题考核 C+的-和+运算符。在 C+中,-和+这两种运算符是单目运算符,其运算对象可以是整型、字符型、float 型和 double 型等基本数据类型。20.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是_。(分数:1.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析 本题考查指向数组的指针,本题中指针变量 p 指向数组 a,那么*p 的值就是 1,即
34、表示数组的第一个元素,那么数值为 9 的表达式就是将指针向后移动 8 个地址,即 p+8 指向的是数组元素值为9,所以数值为 9 的表达式是*(p+8)。21.下面的语句中错误的是(分数:2.00)A.int a5;int xa ; B.const int a5;int xa ;C.int n5;int * pnew inta ;D.const int n5;int * pnew inta ;解析:解析 在 C中定义数组时,数组的范围参数在静态定义时必须是一个常数,而在动态分配内存定义时可以是常数,也可以是一个赋了值的参数。故选项 A 是错误的定义方法。22.计算机能直接执行的程序是_。(分数
35、:2.50)A.源程序B.目标程序C.汇编程序D.可执行程序 解析:解析 由高级语言编写的程序称为“源程序”;由二进制代码表示的程序称为“目标程序”;由汇编语言编写的程序称为“汇编程序”。对于计算机本身来说,它只能接收和处理由 0 到 1 的代码构成的二进制指令和数据。所以计算机能识别的程序是“目标程序”。而计算可以直接执行的程序是可执行程序,即后缀为.exe 的程序。23.语句 ofstream outf(“TEST.DAT“,ios_base:app);的功能是建立流对象 outf,并试图打开文件TEST.DAT 与 outf 关联,而且 _ 。(分数:2.00)A.如果文件存在,打开失败
36、:如果文件不存在,建立一个新文件B.如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失败C.如果文件存在,将文件指针定位于文件尾:如果文件不存在,建立一个新文件 D.如果文件存在,将其置为空文件;如果文件不存在,打开失败解析:解析 ofstream outf(“TEST.DAT“,ios_base:app);是以 ios_base:app 疗式打开文件,若文件存在,将文件指针定位于文件尾。若文件不存在,建立一个新文件。24.下列有关指针的用法中错误的是 _ 。(分数:2.00)A.int i;int *ptr=B.int i;int *ptr;i=*ptr; C.int *ptr;p
37、tr=0;D.inti=5;int *ptr;*ptr解析:25.有如下程序: #includeiostream using namespace std; class Power public: Power(int x):val(x) _ protected: int val; ; class Square:public Power public: Square(int x):Power(x) void Display() coutval“的平方是“val*valendl; ; int main() Power*p=new Square(3); p-Display(); delete p; r
38、eturn 0; 若运行时的输出结果为“3 的平方是 9”,则划线处缺失的语句可能是_。(分数:1.00)A.void Display()B.virtual void Display()=0 C.void virtual Display()=0;D.void Display()virtual 解析:解析 由题意可知,基类指针 p 指向的是派生类的对象,当 p 调用 Display()时,输出的结果是派生类中的 Display(),可知 Display()必为虚函数,这样才能满足动态联编。虚函数的定义是在声明前加关键字 virtual,选项 A 不是虚函数,错误;选项 C、D 定义虚函数的格式不
39、对,错误;答案为 B 选项。26.在开发一个 C+程序的整个过程中,第 3 个步骤为_。(分数:2.50)A.链接 B.运行C.编辑D.编译解析:解析 在开发一个 C+程序的整个过程中,经过以下几个步骤:编辑编洋链接运行。故答案为 A。27.有如下 4 个语句: cout“A“setfill(“*“)leftsetw(7)“B“endl; coutsetfill(“*“)leftsetw(7)“A“B“endl; cout“A“serfill(“*“)rightsetw(7)“B“endl; coutsetfill(“*“)rightsetw(7)“A“B“endl; 其中能显示 A*B 的是
40、_。(分数:2.00)A.和B.和C.和 D.和解析:解析 此题考查 C+流的使用。setfill()作用是设置填充字符;left 是使输出数据在指定宽度内左对齐;right 是使输出数据在指定宽度内右对齐。28.有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB:public AA public: BB(int n)_ ; 其中横线处缺失部分是_。(分数:3.00)A.:a(n)B.:AA(n) C.a(n);D.a=n;解析:解析 根据派生类构造函数的一般格式:派生类名(总参数表):基类名 1(参数表1),基类名 n(参数
41、表 n),成员对象名 1(参数表 n+1),成员对象名 m(参数表 n+m)派生类构造函数体。在派生类 BB 的构造函数总参数表后面应该接上基类名从和其参数。29.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ; class YY: protected XX private: double y1; protected: double y2; public: double y3; ; 在类 YY 中保护成员变量的个数是_。(分数:1.00)A.1B.2C.3 D.4解析:解析 本题考
42、查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员 x2、x3 变成了保护成员,派生类中的 y2 也是保护成员,所以共有 3 个保护成员。本题答案为 C。30.有下列程序: #include stdio.h int b=2; int fun(int*k) b=*k+b;return(b); void main() int a10=1,2,3,4,5,6,7,8,i; for(i=2;i4;i+)b=fun(ai)+b;printf (“%d“,b);) printf(“/n“); 程序运行后的输出结果是_。(分数:2.50)A.1
43、0 12B.8 10C.10 28 D.10 16解析:解析 在程序中子函数 fun(int* k)的作用是给静态全局变量加上形参*k 的值。在主函数中进行第一次 for 循环执行时,fun(a2l)的返回值为 5,所以 5+5=10,因而输出结果为 10,第二次 for 循环执行时,fun(a3)的返回值为 14,所以 14+14=28。31.下列关于数据库设计的叙述中,正确的是_。(分数:1.00)A.在需求分析阶段建立数据字典 B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典解析:解析 建立数据字典应在需求分析阶段。32.下列函数的运行结果是 _
44、 。 #includeiostream.h int f(int a,int b) int c; if(ab) c=1; else if(a=b)c=0 elsec=-1; return(c); void main() int i=2,j=3; int p=f(i,j); coutp:(分数:1.00)A.-1 B.1C.2D.编译出错,无法运行解析:33.已知 n 是一个 int 型变量,下列语句中错误的是_ 。(分数:2.00)A.long *p=new long n;B.long pn; C.long *p=new long (n);D.long p10解析:解析 静态数组的大小应确定。3
45、4.下列程序的运行结果为 #includeiostream.h templateclass TT class FF TTa1,a2,a3; public: FF(TT b1,TT b2,TT b3) a1b1;a2b2;a3b3; TT Sum( ) return a1a2a3; void main( ) FF int x(int(1.1) ,2,3) ,y(int(4.2) ,5,6) ; cout x. Sum( ) “ “ y. Sum( ) endl;(分数:2.00)A.6.1 15.2B.6 15 C.6 15.2D.6.1 15解析:解析 本题考查模板函数的应用,表达式 int(
46、1.1) 和 int(4.2) 是将 1.1 和 4.2 强制转换为整型。35.下列关于 dowhile 语句的叙述中,正确的是_。(分数:2.50)A.dowhile 语句所构成的循环不能用其他语句构成的循环来代替B.dowhile 语句所构成的循环只能用 break 语句跳出C.dowhile 语句所构成的循环只有在 while 后面的表达式非零时才结束D.dowhile 语句所构成的循环只有在 while 后面的表达式为零时才结束 解析:36.C+语言中标点符号中表示一条预处理命令开始的是(分数:1.00)A.# B.;C.*D.解析:解析:C+语言中预处理语句的开始符号是#。37.数据处理的最小单位是_。(分数:1.00)A.数据B.数据元素C.数据项 D.数据结构解析:解析 数据处理的最小单位是数据项。38.有如下类定义: class Foo public: Foo(int v):value(v) / Foo() / private: Foo() / int