1、二级 C+笔试 48 及答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.请找出下列程序中错误之处 _。 #includeiostream.h class A private: int x1; protected: int x2; public: int x3; ; class B:public A private: int y1; protected: int y2; public: int y3; void disp()coutx1y1end1: /A void set(int i) x2=i; /B ; void main() B b
2、b; bb.x3=10; /C bb.y3=10; /D (分数:2.00)A.B.C.D.2.在面向对象程序设计语言中, _ 是在类和子类之间自动地共享数据和方法地一种机制(分数:2.00)A.封装B.调用C.引用D.继承3.E-R 模型设计属于数据库的 _。(分数:2.00)A.概念设计B.逻辑设计C.物理设计D.程序设计4.以下程序段的输出结果是 _。 char ch35=“xxxx”,“yy”,“zz”: coutch1;(分数:2.00)A.“xxxx”B.“yy”C.“yyzz”D.“zz”5.在数据流图中,(椭圆)代表 _。(分数:2.00)A.源点B.终点C.加工D.模块6.若
3、结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 _。(分数:2.00)A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构7.有如下程序 #includeiostream.h viod main() int i,sum=0; for(i=1;i3;sum+) sum+=i; coutsumend1; 该程序的执行结果是 _。(分数:2.00)A.6B.3C.死循环D.08.若从键盘输入 83,则以下程序输出的结果是 _。 #includeiostream.h viod main() int a; cina; if(a60) couta; if(a70) couta
4、; if(a80) couta; (分数:2.00)A.83B.8383C.838383D.无任何输入9.若有以下定义和语句,则对 w 数组元素的非法引用是 _。 int w24,(*pw)4;pw=w;(分数:2.00)A.*(w0+2)B.*pw2C.pv00D.*(pw1+2)10.下列叙述中不属于结构化程序设计方法的主要原理的是 _。(分数:2.00)A.自顶向下B.由底向上C.模块化D.限制使用 GOTO 语句11.下面 _ 机制允许对一个函数名给出多个函数定义(分数:2.00)A.封装性B.继承性C.函数重载D.多态性12.有如下表达式 19/30*.sqrt(4.0)/5,则该表
5、达式值数据类型为 _。(分数:2.00)A.intB.floatC.doubleD.不确定13.函数调用“streat(strcpy(str1,str2),str3)”的功能是 _。(分数:2.00)A.将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B.将字符串 str1 连接到字符串 str2 中后再复制到字符串 str3 之后C.将字符串 str2 复制到字符串 str1 中后再将字符串 str3 连接到字符串 str1 之后D.将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中14.结构化程序设计主要强调的是
6、_。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性15.线性表最常用的操作是存取第 i 个元素及其前趋的值,则采用 _ 存储方式节省时间(分数:2.00)A.单链表B.双向链表C.单循环链表D.顺序表16.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 _。(分数:2.00)A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针17.在下面程序运行后,输出结果为 _。 #includeiostream.h void count(int x
7、,int n,int y=0; for(k=0:kn;k+) if(xk0) y+; void main() int b=2,1,-8,-3,7,2,4,6,0,-13; int x; count(b,10,x); cout“x”xend1; (分数:2.00)A.x=3B.x=5C.出错D.x=018.类模板的使用实际上是将类模板实例化为一个具体的 _。(分数:2.00)A.类B.对象C.函数D.模板类19.有以下函数 char fun(char *P) return p; 该函数的返回值是 _。(分数:2.00)A.无确切的值B.形参 p 中存放的地址值C.一个临时存储单元的地址D.形参
8、p 自身的地址值20.下列静态数据成员的特性中,错误的是 _。(分数:2.00)A.静态数据成员的声明以关键字 static 开头B.静态数据成员必须在文件作用域内初始化C.引导数据成员时,要在静态数据成员前加类名和作用域运算符D.静态数据成员不是一个类所有对象共享的21.下面程序输出结果是 _。 #includeiostream. h void main() int a,b,c; a=6;b=c=4; if(a!=B) if(a!=B) if(a) cout(a-2); else a+; else a+=a; couta; (分数:2.00)A.15B.07C.12D.1722.有如下定义
9、int a; float f; double i; 则表达式 4+a+i*f 的值的数据类型是 _。(分数:2.00)A.intB.floatC.doubleD.不确定23.请指出程序片段的语法错误 _。(分数:2.00)A.int *age_ptr;B.int m=3;C.*age_ptr= ; void fun() X a(10),*p= _ (分数:2.00)A.p-set(678);B.X(678):C.p-k=678;D.set(678);27.类 K 是类 Y 及类 Z 的虚基类,类 D 是类 Y 及类 Z 的多继承派生类,则在构造类 D 的对象时,类 X 的构造函数将被调用 _。
10、(分数:2.00)A.1 次B.2 次C.3 次D.0 次28.设 int x =2,4,6,8,y,*p= ; void main() A*a=new B(8); Delete a; (分数:2.00)A.call B: B()B.call B: B()C.call A:A()D.call A:A()32.整型变量 a 定义后赋初值的结果是 _。 int a=2.8*6(分数:2.00)A.12B.16C.17D.1833.在数据库系统中,把具有以下特征中之 _ 两个特征的数据模型称为网状模型。(分数:2.00)A.允许有一个以上的结点没有双亲B.有且仅有一个结点无双亲C.根以外的结点有且仅
11、有一个双亲D.一个结点可以有多个双亲34.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为 _。(分数:2.00)A.顺序表B.用头指针表示的单循环链表C.用尾指针表示的单循环链表D.单链表35.在下列概念中,不属于面向对象方法的是 _。(分数:2.00)A.类B.过程调用C.对象D.多态性二、B填空题/B(总题数:13,分数:26.00)36.某二叉树的先根遍历序列为 CEDBA,中根遍历序列为 DEBAC,则其后根遍历序列为U 1 /U。(分数:2.00)填空项 1:_37.在 C+中封装性、继承性和U 2 /U是面向对象思想的主要特征。(分数:2.00)填空项 1:_38.
12、在 C+语言编辑过程中,包含预处理过程,编译过程,和U 3 /U三个过程。(分数:2.00)填空项 1:_39.结构化方式由结构化分析,结构化设计和U 4 /U构成,它是一种面向数据流的开发方法。(分数:2.00)填空项 1:_40.DBMS 的数据控制功能包括完整性控制、并发控制、安全性控制和U 5 /U。(分数:2.00)填空项 1:_41.C+中使用U 6 /U代替 C 语言中的宏。(分数:2.00)填空项 1:_42.程序段的输出结果是U 7 /U。 int a=12,b=12; cout- -a“”b;(分数:2.00)填空项 1:_43.程序段的输出结果是U 8 /U。 int x
13、=3,y=2,z=1; count(x/y cout“请输入整数”; cinn; for(i=1;in;i+) if(n%i= =0) k=k+i; if(n= =k)coutn“是完数/n”; else coutn“不是完数/n”; (分数:2.00)填空项 1:_45.根据变量定义“static int x5,y23=9,6,3,1,4,7;”,x4=U 10 /U,y12=U 11 /U。(分数:2.00)填空项 1:_46.每个对象都维护了一个指向自身的指针,这个指针称为U 12 /U指针(分数:2.00)填空项 1:_47.定义重载函数时,应在参数个数或参数类型上U 13 /U。(分
14、数:2.00)填空项 1:_48.写出下列程序的运行结果。 #includeiostream. h class X public: virtual void disp()cout”X 类的 disp 函数”end1; ; class Y:public X public: void disp()cout”Y 类的 disp 函数”end1; ; void main() X a, *p= p-disp(); p= class B:public A private: int y1; protected: int y2; public: int y3; void disp()coutx1y1end1:
15、 /A void set(int i) x2=i; /B ; void main() B bb; bb.x3=10; /C bb.y3=10; /D (分数:2.00)A. B.C.D.解析:2.在面向对象程序设计语言中, _ 是在类和子类之间自动地共享数据和方法地一种机制(分数:2.00)A.封装B.调用C.引用D.继承 解析:3.E-R 模型设计属于数据库的 _。(分数:2.00)A.概念设计 B.逻辑设计C.物理设计D.程序设计解析:4.以下程序段的输出结果是 _。 char ch35=“xxxx”,“yy”,“zz”: coutch1;(分数:2.00)A.“xxxx”B.“yy” C
16、.“yyzz”D.“zz”解析:5.在数据流图中,(椭圆)代表 _。(分数:2.00)A.源点B.终点C.加工 D.模块解析:6.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 _。(分数:2.00)A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构 解析:7.有如下程序 #includeiostream.h viod main() int i,sum=0; for(i=1;i3;sum+) sum+=i; coutsumend1; 该程序的执行结果是 _。(分数:2.00)A.6B.3C.死循环 D.0解析:8.若从键盘输入 83,则以下程序输出的结果是 _
17、。 #includeiostream.h viod main() int a; cina; if(a60) couta; if(a70) couta; if(a80) couta; (分数:2.00)A.83B.8383C.838383 D.无任何输入解析:9.若有以下定义和语句,则对 w 数组元素的非法引用是 _。 int w24,(*pw)4;pw=w;(分数:2.00)A.*(w0+2)B.*pw2 C.pv00D.*(pw1+2)解析:10.下列叙述中不属于结构化程序设计方法的主要原理的是 _。(分数:2.00)A.自顶向下B.由底向上 C.模块化D.限制使用 GOTO 语句解析:11
18、.下面 _ 机制允许对一个函数名给出多个函数定义(分数:2.00)A.封装性B.继承性C.函数重载D.多态性 解析:12.有如下表达式 19/30*.sqrt(4.0)/5,则该表达式值数据类型为 _。(分数:2.00)A.intB.floatC.double D.不确定解析:13.函数调用“streat(strcpy(str1,str2),str3)”的功能是 _。(分数:2.00)A.将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B.将字符串 str1 连接到字符串 str2 中后再复制到字符串 str3 之后C.将字符串 str2 复制到字符串 str1
19、中后再将字符串 str3 连接到字符串 str1 之后 D.将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中解析:14.结构化程序设计主要强调的是 _。(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性 解析:15.线性表最常用的操作是存取第 i 个元素及其前趋的值,则采用 _ 存储方式节省时间(分数:2.00)A.单链表B.双向链表 C.单循环链表D.顺序表解析:16.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 _。(分数:2.00)A.派生类的对象可以赋给基类的对象B.派生类的对象可以
20、初始化基类的引用C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针解析:17.在下面程序运行后,输出结果为 _。 #includeiostream.h void count(int x,int n,int y=0; for(k=0:kn;k+) if(xk0) y+; void main() int b=2,1,-8,-3,7,2,4,6,0,-13; int x; count(b,10,x); cout“x”xend1; (分数:2.00)A.x=3 B.x=5C.出错D.x=0解析:18.类模板的使用实际上是将类模板实例化为一个具体的 _。(分数:2.0
21、0)A.类B.对象 C.函数D.模板类解析:19.有以下函数 char fun(char *P) return p; 该函数的返回值是 _。(分数:2.00)A.无确切的值B.形参 p 中存放的地址值 C.一个临时存储单元的地址D.形参 p 自身的地址值解析:20.下列静态数据成员的特性中,错误的是 _。(分数:2.00)A.静态数据成员的声明以关键字 static 开头B.静态数据成员必须在文件作用域内初始化C.引导数据成员时,要在静态数据成员前加类名和作用域运算符D.静态数据成员不是一个类所有对象共享的 解析:21.下面程序输出结果是 _。 #includeiostream. h void
22、 main() int a,b,c; a=6;b=c=4; if(a!=B) if(a!=B) if(a) cout(a-2); else a+; else a+=a; couta; (分数:2.00)A.15 B.07C.12D.17解析:22.有如下定义 int a; float f; double i; 则表达式 4+a+i*f 的值的数据类型是 _。(分数:2.00)A.intB.floatC.double D.不确定解析:23.请指出程序片段的语法错误 _。(分数:2.00)A.int *age_ptr;B.int m=3;C.*age_ptr= ; void fun() X a(1
23、0),*p= _ (分数:2.00)A.p-set(678); B.X(678):C.p-k=678;D.set(678);解析:27.类 K 是类 Y 及类 Z 的虚基类,类 D 是类 Y 及类 Z 的多继承派生类,则在构造类 D 的对象时,类 X 的构造函数将被调用 _。(分数:2.00)A.1 次 B.2 次C.3 次D.0 次解析:28.设 int x =2,4,6,8,y,*p= ; void main() A*a=new B(8); Delete a; (分数:2.00)A.call B: B() B.call B: B()C.call A:A()D.call A:A()解析:32
24、.整型变量 a 定义后赋初值的结果是 _。 int a=2.8*6(分数:2.00)A.12B.16 C.17D.18解析:33.在数据库系统中,把具有以下特征中之 _ 两个特征的数据模型称为网状模型。(分数:2.00)A.允许有一个以上的结点没有双亲B.有且仅有一个结点无双亲 C.根以外的结点有且仅有一个双亲D.一个结点可以有多个双亲解析:34.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为 _。(分数:2.00)A.顺序表B.用头指针表示的单循环链表C.用尾指针表示的单循环链表 D.单链表解析:35.在下列概念中,不属于面向对象方法的是 _。(分数:2.00)A.类B.过程
25、调用 C.对象D.多态性解析:二、B填空题/B(总题数:13,分数:26.00)36.某二叉树的先根遍历序列为 CEDBA,中根遍历序列为 DEBAC,则其后根遍历序列为U 1 /U。(分数:2.00)填空项 1:_ (正确答案:DABEC)解析:37.在 C+中封装性、继承性和U 2 /U是面向对象思想的主要特征。(分数:2.00)填空项 1:_ (正确答案:多态性)解析:38.在 C+语言编辑过程中,包含预处理过程,编译过程,和U 3 /U三个过程。(分数:2.00)填空项 1:_ (正确答案:连接过程)解析:39.结构化方式由结构化分析,结构化设计和U 4 /U构成,它是一种面向数据流的
26、开发方法。(分数:2.00)填空项 1:_ (正确答案:结构化程序设计)解析:40.DBMS 的数据控制功能包括完整性控制、并发控制、安全性控制和U 5 /U。(分数:2.00)填空项 1:_ (正确答案:故障恢复)解析:41.C+中使用U 6 /U代替 C 语言中的宏。(分数:2.00)填空项 1:_ (正确答案:内联函数)解析:42.程序段的输出结果是U 7 /U。 int a=12,b=12; cout- -a“”b;(分数:2.00)填空项 1:_ (正确答案:11 13)解析:43.程序段的输出结果是U 8 /U。 int x=3,y=2,z=1; count(x/y cout“请输
27、入整数”; cinn; for(i=1;in;i+) if(n%i= =0) k=k+i; if(n= =k)coutn“是完数/n”; else coutn“不是完数/n”; (分数:2.00)填空项 1:_ (正确答案:请输入整数: 28)解析:28 是完数45.根据变量定义“static int x5,y23=9,6,3,1,4,7;”,x4=U 10 /U,y12=U 11 /U。(分数:2.00)填空项 1:_ (正确答案:10 0 11 7)解析:46.每个对象都维护了一个指向自身的指针,这个指针称为U 12 /U指针(分数:2.00)填空项 1:_ (正确答案:this)解析:4
28、7.定义重载函数时,应在参数个数或参数类型上U 13 /U。(分数:2.00)填空项 1:_ (正确答案:不同)解析:48.写出下列程序的运行结果。 #includeiostream. h class X public: virtual void disp()cout”X 类的 disp 函数”end1; ; class Y:public X public: void disp()cout”Y 类的 disp 函数”end1; ; void main() X a, *p= p-disp(); p=&b; p-disp(); 运行结果为:U 14 /U U15 /U(分数:2.00)填空项 1:_ (正确答案:14X 类的 disp 函数)解析:15Y 类的 disp 函数