1、二级 C+笔试 44及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.执行下列程序 int fun(int x1,int x2) int x; x1x2 ?(x=3):(x=4); return x+x1; void main() coutfun(7,8); 后输出结果是 _。(分数:2.00)A.9B.10C.11D.122.使用白盒测试方法时,确定测试数据应根据 _ 和指定的覆盖标准。(分数:2.00)A.程序的内部逻辑B.程序的复杂结构C.使用说明书D.程序的功能3.下列 for循环语句执行的次数是 _。 for (int i=0
2、, x=0; !xi+)(分数:2.00)A.5B.6C.1D.无限4.若关系 R所有的属性都是不可再分的数据项,则称 R属于 _。(分数:2.00)A.第一范式B.第二范式C.第三范式D.第四范式5.类的说明如下,请指出错误的地方 _。 class Myclass int a=111; public: Myclass(int x, int y); Myclass(int val); Myclass(); (分数:2.00)A.int a=111;B.Myclass(Int x, int ;C.Myclass(int va;D.Myclass();6.阅读程序段,当输入数据形式为 25,13,
3、10 时,正确的输出结果为 _。 int x, y, z; cinxyz; cout “x+y+z=%d/n“ x+y+z;(分数:2.00)A.x+y+z=48B.x+y+z=35C.x+z=35D.不确定值7.以下说法中正确的是 _。(分数:2.00)A.C+程序总是从第一个定义的函数开始执行的B.在 C+程序中,要调用的函数必须在 main()函数中定义的C.C+程序总是从 main()函数开始执行的D.C+程序中的 main()函数必须放在程序的开始部分8.对于类定义 class A public: virtual void funcl() void func2() ; class D
4、:public A public: void funcl()cout “class B rune 1“end1; virtual void func2()cout “class B func 2“end1; ; 下面正确的叙述是 _。(分数:2.00)A.A:func2()和 B:funcl()都是虚函数B.A:func2()和 B:funcl()都不是虚函数C.B:func1()是虚函数,而 A:func2()不是虚函数D.B:func1()不是虚函数,而 A:func2()是虚函数9.以下程序的输出结果是 _。 #includeiostream.h void main() char w10
5、= “ABC“, “DEFGH“, “IJKL“ , “MNOP“ ; int k; for (k=1 ;k3 ;k+) coutwk “ “ (分数:2.00)A.ABC FGH KLB.ABC EFG IJ MC.EFG JK 0D.DEFGH IJKL10.下述关于 break语句的描述中, _是不正确的。(分数:2.00)A.break语句可用于循环体内,它将退出该循环B.break语句可用于 switch语句中,它将退出 switch语句C.break语句可用于 if体内,它将退出 if语句D.break语句在一个循环内可以出现多次11.关系 R和 S进行自然连接时,要求 R和 S含
6、有一个或多个公共 _。(分数:2.00)A.元组B.行C.记录D.属性12.若有函数 func(par1,par2+par3,(par4,par5):在调用该函数时,实参的个数是 _。(分数:2.00)A.3B.4C.5D.有语法错误13.下列关于圆括号运算符的功能说法不正确的是 _。(分数:2.00)A.可用于强制类型转换B.可用于类型构造C.可用于类型声明D.可用于函数调用14.对象实现了数据和操作的结合,使数据和操作 _ 于对象的统一体中(分数:2.00)A.结合B.隐藏C.封装D.抽象15.数据库的概念模型 _。(分数:2.00)A.依赖于计算机硬件和 DBMSB.独立于计算机硬件,依
7、赖于 DBMSC.依赖于计算机硬件,独立于 DBMSD.独立于计算机硬件和 DBMS16.关千成员函数特征的下述中,_ 是错误的。(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的17.线性表采用链式存储方式时,结点的存储地址 _。(分数:2.00)A.必须是不连续的B.连续与否均可以C.必须是连续的D.和头结点的存储地址相连续18.设 int a=4,b=8;则+a*b 的结果是 _。(分数:2.00)A.33B.40C.32D.4119.下面叙述错误的是 _。(分数:2.00)A.基类的 protected成员在派生类中
8、仍然是 protectedB.基类的 protected成员在 private派生类中仍然是 protected的C.基类的 protected成员在 private派生类中是 private的D.基类的 protected成员不能被派生类的对象访问20.数据的四种基本逻辑结构是指 _。(分数:2.00)A.组、链表、树、图形结构B.线性表、链表、栈队列、数组广义表C.线性结构、链表、树、图形结构D.集合、线性结构、树、图形结构21.以下非法的赋值语句是(分数:2.00)A.n=(i=2, i+)B.i+C.x=j0D.+(i+1)22.静态成员函数没有 _。(分数:2.00)A.返回值B.t
9、his指针C.指针参数D.返回类型23.下列程序的功能是输出数组中的最大值,其中用指针 q指向该元素,在 if语句中判断表达式应该是 _。 #includeiostream.h void main() int a10=6,7,2,9,1,10,5,8,4,3); int *p=a,*q=a; while(p-a10) if(_)q=p; p+; cout”max=”*q; (分数:2.00)A.apAqB.*p*qC.pqD.p-ap-q24.若 d为 double型变量,则表达式 d=1,d+5,d+的值是 _。(分数:2.00)A.1B.6.0C.2.0D.1.025.结构化分析方法 SA
10、、结构化设计方法 SD,和 JACKSON方法,是在软件开发过程中常用的方法,人们使用 SA 方法时可以得到 _。(分数:2.00)A.程序流程图B.具体的语言程序C.模块结构图及模块的功能说明书D.分层数据流图26.下列说法不正确的是 _。(分数:2.00)A.转义字符序列/b 的功能是退格B.转义字符序列/n 的功能是退格C.转义字符序列/r 的功能是回车D.:转义字符序列/f的功能是换页27.以下数组定义中不正确的是 _。(分数:2.00)A.int a23B.int b 3=0;C.int c11=0;D.int d3=1,2,(1,2,31,2,3,4;28.在 n(n0)个元素的顺
11、序栈中删除 1个元素的时间复杂度为 _。 (分数:2.00)A.B.C.D.29.下面各语句中,能正确进行赋字符串操作的语句是(分数:2.00)A.char s5 = “ABCDE“ ;B.char s5 = A , B , C , D , E ;C.char *s; s = “ABCBE“;D.char *s; scanf(“%s“, ;30.以下说法错误的是 _。(分数:2.00)A.采用面向对象方法开发软件的基本目的和主要优点是通过重用提高软件的生成率B.在面向对象的程序中,对象是属性(状态)和方法(操作)的封装体C.在面向对象的程序中,对象彼此间通过继承和多态性启动响应的操作D.继承和
12、多态机制是面向对象程序中实现的主要手段31.继承具有 _,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员(分数:2.00)A.规律性B.传递性C.重复性D.多样性32.关于对象概念的描述中,_ 是错误的(分数:2.00)A.对象就是 C语言中的变量B.对象是状态和操作的封装体C.对象之间的信息传递是通过消息进行的D.对象是某个类的一个实例33.下列 C+语言符号中表示行注释开始的是 _。(分数:2.00)A.#B.;C./D.34.若有 int(*p)3:则以下表述中正确的是 _。(分数:2.00)A.p是一个指向具有 3个元素的整型数组的指针B.p是一个指向 in
13、t型变量的指针C.p是一个有 3个元素的指针数组,每个元素是一个 int型指针D.p是一个具有 3个 int型元素的一维数组35.下面程序的输出结果是 _。 #includeiostream.h void main() int x=20; int a=10; b=c=d=5; i=j=k=0; for(;ab; +b) i+; while(a+c) j+; do k+; while(ad+);(分数:2.00)填空项 1:_42.下面程序实现输出从“!”开始的 91个 ACCII字符及码值,要求每行输出 7项。请完成程序。 #includeiostream.h void main( ) cha
14、r c= “!“; int d , n=1; do while (n=7) d=c; coutc “=“ d“”; c+ n+; cout “/n“ ; U 7 /U; while(c= ! +90) cout “/n“ ; (分数:2.00)填空项 1:_43.以下程序的输出结果是U 8 /U。 #include iostream. h void main() char *x6 = “Would“ , “you“ , “like“ , “C“ “Plus“ “Plus“ int i=0; while (i 4) if (i=3) coutxi “?“ ; else coutxi“ “; i+
15、; coutend1;(分数:2.00)填空项 1:_44.当输入 d的值 22时,以下程序的输出结果是U 9 /U。 void bin (int b) if (b= 2) bin(b/2); coutb%2; void main() int d; cind; bin(D) ; (分数:2.00)填空项 1:_45.以下程序的输出结果是U 10 /U。 #includeiostream. h void main() int *p; p=new int; *p=200; cout*p; delete p; (分数:2.00)填空项 1:_46.以下程序的输出结果是U 11 /U。 #includ
16、eiostream. h void main() int a= 1, 3, 5, 7, *p=a, i; for (i=0; i4: i+) ai=*p+; couta2; (分数:2.00)填空项 1:_47.下列程序的运行结果是U 12 /U。 include iostream. h class Sample int x,y; public: Sample() x=y=0; Sample(int a, int b) x=a;y=b; void disp() cout“ x=“ x“ , y=“yend1; ; void main() Sample s1, s2(1, 2); s1. dis
17、p0; s2. disp ();(分数:2.00)填空项 1:_48.指出下面程序段中的错误,并说明出错原因U 13 /U。 class Location int X, Y=20; protected: int zeroX, zeroY; int SetZero(int ZeroX, iht ZeroY); private: int length, height; public: float radius; void init(int initX,int initY); int GetX(); Int GetY(); ;(分数:2.00)填空项 1:_49.对于派生类的构造函数,在定义对象时构
18、造函数的执行顺序为:先执行U 14 /U。再执行成员对象的构造函数,后执行派生类本身的构造函数。(分数:2.00)填空项 1:_50.类的成员函数中,只能用于检测输入操作的函数是U 15 /U。(分数:2.00)填空项 1:_二级 C+笔试 44答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.执行下列程序 int fun(int x1,int x2) int x; x1x2 ?(x=3):(x=4); return x+x1; void main() coutfun(7,8); 后输出结果是 _。(分数:2.00)A.9B.10C.11
19、 D.12解析:2.使用白盒测试方法时,确定测试数据应根据 _ 和指定的覆盖标准。(分数:2.00)A.程序的内部逻辑 B.程序的复杂结构C.使用说明书D.程序的功能解析:3.下列 for循环语句执行的次数是 _。 for (int i=0, x=0; !xi+)(分数:2.00)A.5B.6 C.1D.无限解析:4.若关系 R所有的属性都是不可再分的数据项,则称 R属于 _。(分数:2.00)A.第一范式 B.第二范式C.第三范式D.第四范式解析:5.类的说明如下,请指出错误的地方 _。 class Myclass int a=111; public: Myclass(int x, int
20、y); Myclass(int val); Myclass(); (分数:2.00)A.int a=111; B.Myclass(Int x, int ;C.Myclass(int va;D.Myclass();解析:6.阅读程序段,当输入数据形式为 25,13,10 时,正确的输出结果为 _。 int x, y, z; cinxyz; cout “x+y+z=%d/n“ x+y+z;(分数:2.00)A.x+y+z=48B.x+y+z=35C.x+z=35D.不确定值 解析:7.以下说法中正确的是 _。(分数:2.00)A.C+程序总是从第一个定义的函数开始执行的B.在 C+程序中,要调用的
21、函数必须在 main()函数中定义的C.C+程序总是从 main()函数开始执行的 D.C+程序中的 main()函数必须放在程序的开始部分解析:8.对于类定义 class A public: virtual void funcl() void func2() ; class D:public A public: void funcl()cout “class B rune 1“end1; virtual void func2()cout “class B func 2“end1; ; 下面正确的叙述是 _。(分数:2.00)A.A:func2()和 B:funcl()都是虚函数B.A:fun
22、c2()和 B:funcl()都不是虚函数C.B:func1()是虚函数,而 A:func2()不是虚函数 D.B:func1()不是虚函数,而 A:func2()是虚函数解析:9.以下程序的输出结果是 _。 #includeiostream.h void main() char w10= “ABC“, “DEFGH“, “IJKL“ , “MNOP“ ; int k; for (k=1 ;k3 ;k+) coutwk “ “ (分数:2.00)A.ABC FGH KLB.ABC EFG IJ MC.EFG JK 0D.DEFGH IJKL 解析:10.下述关于 break语句的描述中, _是
23、不正确的。(分数:2.00)A.break语句可用于循环体内,它将退出该循环B.break语句可用于 switch语句中,它将退出 switch语句C.break语句可用于 if体内,它将退出 if语句 D.break语句在一个循环内可以出现多次解析:11.关系 R和 S进行自然连接时,要求 R和 S含有一个或多个公共 _。(分数:2.00)A.元组B.行C.记录D.属性 解析:12.若有函数 func(par1,par2+par3,(par4,par5):在调用该函数时,实参的个数是 _。(分数:2.00)A.3 B.4C.5D.有语法错误解析:13.下列关于圆括号运算符的功能说法不正确的是
24、 _。(分数:2.00)A.可用于强制类型转换B.可用于类型构造C.可用于类型声明 D.可用于函数调用解析:14.对象实现了数据和操作的结合,使数据和操作 _ 于对象的统一体中(分数:2.00)A.结合B.隐藏C.封装 D.抽象解析:15.数据库的概念模型 _。(分数:2.00)A.依赖于计算机硬件和 DBMSB.独立于计算机硬件,依赖于 DBMSC.依赖于计算机硬件,独立于 DBMSD.独立于计算机硬件和 DBMS 解析:16.关千成员函数特征的下述中,_ 是错误的。(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的解析
25、:17.线性表采用链式存储方式时,结点的存储地址 _。(分数:2.00)A.必须是不连续的B.连续与否均可以 C.必须是连续的D.和头结点的存储地址相连续解析:18.设 int a=4,b=8;则+a*b 的结果是 _。(分数:2.00)A.33B.40 C.32D.41解析:19.下面叙述错误的是 _。(分数:2.00)A.基类的 protected成员在派生类中仍然是 protected B.基类的 protected成员在 private派生类中仍然是 protected的C.基类的 protected成员在 private派生类中是 private的D.基类的 protected成员不
26、能被派生类的对象访问解析:20.数据的四种基本逻辑结构是指 _。(分数:2.00)A.组、链表、树、图形结构B.线性表、链表、栈队列、数组广义表C.线性结构、链表、树、图形结构D.集合、线性结构、树、图形结构 解析:21.以下非法的赋值语句是(分数:2.00)A.n=(i=2, i+)B.i+C.x=j0D.+(i+1) 解析:22.静态成员函数没有 _。(分数:2.00)A.返回值B.this指针 C.指针参数D.返回类型解析:23.下列程序的功能是输出数组中的最大值,其中用指针 q指向该元素,在 if语句中判断表达式应该是 _。 #includeiostream.h void main()
27、 int a10=6,7,2,9,1,10,5,8,4,3); int *p=a,*q=a; while(p-a10) if(_)q=p; p+; cout”max=”*q; (分数:2.00)A.apAqB.*p*q C.pqD.p-ap-q解析:24.若 d为 double型变量,则表达式 d=1,d+5,d+的值是 _。(分数:2.00)A.1B.6.0C.2.0D.1.0 解析:25.结构化分析方法 SA、结构化设计方法 SD,和 JACKSON方法,是在软件开发过程中常用的方法,人们使用 SA 方法时可以得到 _。(分数:2.00)A.程序流程图B.具体的语言程序C.模块结构图及模块
28、的功能说明书D.分层数据流图 解析:26.下列说法不正确的是 _。(分数:2.00)A.转义字符序列/b 的功能是退格B.转义字符序列/n 的功能是退格 C.转义字符序列/r 的功能是回车D.:转义字符序列/f的功能是换页解析:27.以下数组定义中不正确的是 _。(分数:2.00)A.int a23B.int b 3=0;C.int c11=0;D.int d3=1,2,(1,2,31,2,3,4; 解析:28.在 n(n0)个元素的顺序栈中删除 1个元素的时间复杂度为 _。 (分数:2.00)A.B.C.D. 解析:29.下面各语句中,能正确进行赋字符串操作的语句是(分数:2.00)A.ch
29、ar s5 = “ABCDE“ ;B.char s5 = A , B , C , D , E ;C.char *s; s = “ABCBE“; D.char *s; scanf(“%s“, ;解析:30.以下说法错误的是 _。(分数:2.00)A.采用面向对象方法开发软件的基本目的和主要优点是通过重用提高软件的生成率B.在面向对象的程序中,对象是属性(状态)和方法(操作)的封装体C.在面向对象的程序中,对象彼此间通过继承和多态性启动响应的操作 D.继承和多态机制是面向对象程序中实现的主要手段解析:31.继承具有 _,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员(分
30、数:2.00)A.规律性B.传递性 C.重复性D.多样性解析:32.关于对象概念的描述中,_ 是错误的(分数:2.00)A.对象就是 C语言中的变量 B.对象是状态和操作的封装体C.对象之间的信息传递是通过消息进行的D.对象是某个类的一个实例解析:33.下列 C+语言符号中表示行注释开始的是 _。(分数:2.00)A.#B.;C./ D.解析:34.若有 int(*p)3:则以下表述中正确的是 _。(分数:2.00)A.p是一个指向具有 3个元素的整型数组的指针 B.p是一个指向 int型变量的指针C.p是一个有 3个元素的指针数组,每个元素是一个 int型指针D.p是一个具有 3个 int型
31、元素的一维数组解析:35.下面程序的输出结果是 _。 #includeiostream.h void main() int x=20; int a=10; b=c=d=5; i=j=k=0; for(;ab; +b) i+; while(a+c) j+; do k+; while(ad+);(分数:2.00)填空项 1:_ (正确答案:6)解析:42.下面程序实现输出从“!”开始的 91个 ACCII字符及码值,要求每行输出 7项。请完成程序。 #includeiostream.h void main( ) char c= “!“; int d , n=1; do while (n=7) d=
32、c; coutc “=“ d“”; c+ n+; cout “/n“ ; U 7 /U; while(c= ! +90) cout “/n“ ; (分数:2.00)填空项 1:_ (正确答案:n= 1)解析:43.以下程序的输出结果是U 8 /U。 #include iostream. h void main() char *x6 = “Would“ , “you“ , “like“ , “C“ “Plus“ “Plus“ int i=0; while (i 4) if (i=3) coutxi “?“ ; else coutxi“ “; i+; coutend1;(分数:2.00)填空项 1
33、:_ (正确答案:Would you like C?)解析:44.当输入 d的值 22时,以下程序的输出结果是U 9 /U。 void bin (int b) if (b= 2) bin(b/2); coutb%2; void main() int d; cind; bin(D) ; (分数:2.00)填空项 1:_ (正确答案:10110)解析:45.以下程序的输出结果是U 10 /U。 #includeiostream. h void main() int *p; p=new int; *p=200; cout*p; delete p; (分数:2.00)填空项 1:_ (正确答案:200
34、)解析:46.以下程序的输出结果是U 11 /U。 #includeiostream. h void main() int a= 1, 3, 5, 7, *p=a, i; for (i=0; i4: i+) ai=*p+; couta2; (分数:2.00)填空项 1:_ (正确答案:5)解析:47.下列程序的运行结果是U 12 /U。 include iostream. h class Sample int x,y; public: Sample() x=y=0; Sample(int a, int b) x=a;y=b; void disp() cout“ x=“ x“ , y=“yend
35、1; ; void main() Sample s1, s2(1, 2); s1. disp0; s2. disp ();(分数:2.00)填空项 1:_ (正确答案:此程序的运行结果为:)解析:x=0, y=0 x=1, y=248.指出下面程序段中的错误,并说明出错原因U 13 /U。 class Location int X, Y=20; protected: int zeroX, zeroY; int SetZero(int ZeroX, iht ZeroY); private: int length, height; public: float radius; void init(int initX,int initY); int GetX(); Int GetY(); ;(分数:2.00)填空项 1:_ (正确答案:int X,Y=20; 出错,不能采用这种方式初始化)解析:49.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行U 14 /U。再执行成员对象的构造函数,后执行派生类本身的构造函数。(分数:2.00)填空项 1:_ (正确答案:基类的构造函数)解析:50.类的成员函数中,只能用于检测输入操作的函数是U 15 /U。(分数:2.00)填空项 1:_ (正确答案:eof)解析: