1、二级 C+笔试-359 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.实现运行时的多态性要使用(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数2.在软件设计中,不属于过程设计工具的是( )。(分数:2.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图3.假定 MyClass 为一个类,则该类的拷贝初始化构造函数的声明语句为( )。(分数:2.00)A.MyClassmy.value=10;B.MyClass my;*my,value=10;C.MyClass my;my.*value=10;D.M
2、yClass my(10);12.下面不属于软件设计原则的是( )。(分数:2.00)A.抽象B.模块化C.自底向上D.信息隐蔽13.在 C+语言中,main 函数默认返回一个( )类型的值。(分数:2.00)A.intB.floatC.charD.void14.下面程序的输出结果是( )。#includeiostreamusing namespace std;int main()int n=10;while(n7)n-;cout11,;coutendl;(分数:2.00)A.10,9,8,B.9,8,7,C.10,9,8,7,D.9,8,7,6,15.程序的三种基本控制结构是( )。(分数:
3、2.00)A.过程、子过程和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移16.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1B.枚举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 1017.有如下程序:#inchdeiostream.hvoid fun(int int main()int a2=23,42);fun(a1,a0);std:couta0“,“a1Std:endl;
4、return 0;执行后的输出结果是( )。(分数:2.00)A.42,42B.23,23C.23,42D.42,2318.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.-MyClass(int n);C.MyClass();D.MyClass();19.下列叙述中正确的是( )。(分数:2.00)A.数据的逻辑结构与存储结构必定一一对应B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对2
5、0.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是( )。(分数:2.00)A.strcpy(str1,“Hellol“);B.strcpy(str2,“Hello2“);C.strcpy(str3,“Hello3“);D.strcpy(str4,“Henllo4“);21.有如下程序:#includeiostreamusing namespace std;class sampleprivate:int x,y;public:sample(int i,int j)x=i;y=j;void di
6、sp()cout“displ“endl;void disp()constcout“disp2“endl;int main()const sample a(1,2);a.disp();return 0;该程序运行后的输出结果是( )。(分数:2.00)A.disp1B.disp2C.disp1 disp2D.程序编译时出错22.下列关于指针的运算中,( )是非法的。(分数:2.00)A.两个指针在一定条件下,可以进行相等或不等的比较运算B.可以将一个空指针赋值给某个指针C.一个指针可以加上两个整数之差D.两个指针在一定条件下可以相加23.数据库管理系统是位于用户与操作系统之间的一个数据管理软件,
7、以下不属于它的基本功能的是( )。(分数:2.00)A.数据共享功能B.数据定义功能C.数据操纵功能D.数据库的运行管理与控制功能24.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象 D.类和对象的关系是一种数据类型与变量的关系25.假定 MyClass 为类,执行 MyClass a3,*p2;语句时会自动调用该类构造函数( )次。(分数:2.00)A.2B.3C.4D.526.流程控制语句的基本控制结构有三种,不属于这一种结构的是( )。(分数:2.00)A.顺序结构B.选择结构C.循环结构D.计算结构2
8、7.下列叙述中,不属于软件需求规格说明书的作用的是( )。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析28.下面叙述错误的是( )。(分数:2.00)A.派生类可以使用 private 派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变D.赋值兼容规则也适用于多继承的组合29.若有以下定义:int a=1,2,3,4,5,6,7);char cl=b,c2=2;则数值不为 2 的表达式是( )。(分数:2.00)A.a1B.d-c1C.a3-
9、c2D.c2-030.( )提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。(分数:2.00)A.公有成员B.私有成员C.私有成员函数D.保护成员31.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是( )。(分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca32.不能作为函数重载的判断依据的是( )。(分数:2.00)A.constB.返回类犁C.参数个数D.参数类型33.执行语句序列of
10、stream outfile(“data.dat“);if(.)cout“ok“;else cout“fail“;后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面 if 语句的“.”处的表达式是( )。(分数:2.00)A.outfile.fail()或 outffleB.outfile.good()或!outfileC.outfile.good()或 outfileD.outfile.fail()或!outfile34.软件详细设计的主要任务是确定每个模块的( )。(分数:2.00)A.算法和使用的数据结构B.外部接口C.功能D.编程35.下列类的定义中,有( )处语
11、法错误。class BasepubliC:Base()Base(int i)data=i;ptivate:int data;class DeriVe:public Basepublic:Derive():Base(0)Derive(int x)d=x;void setvalue(int i)data=i;private:d;(分数:2.00)A.1B.2C.3D.4二、填空题(总题数:15,分数:30.00)36.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。(分数:2.00)填空项 1:_37.在面向对象方法中,属性与操作相似的一组对象
12、称为 【2】 。(分数:2.00)填空项 1:_38.算法的基本特征是可行性、确定性、 【3】 和拥有足够的情报。(分数:2.00)填空项 1:_39.静态联编所支持的多态性称为编译时的多态性,动态联编所支持的多态性则称为运行时的多态性,动态多态性由 【4】 来支持。(分数:2.00)填空项 1:_40.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【5】 。(分数:2.00)填空项 1:_41.设有定义语句:double x=2.5,y=4.7;int a=7;,那么表达式 x+a%3*(int)(x+y)%2/4 的值为 【6
13、】 。(分数:2.00)填空项 1:_42.函数 swap(arr,n)可完成对 arr 数组从第 1 个元素到第 n 个元素两两交换。在运行调用函数中的语句后,a0和 a1的值分别为 【7】 。a0=1;a1=2;swap(a,2);(分数:2.00)填空项 1:_43.以下程序段是函数返回 a 所指数组中最小的值所在的下标值,请在下划线处填空。fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap) 【8】 ;return(p);(分数:2.00)填空项 1:_44.执行语句序列int x=10,q+;r=(char*)q;coutre
14、ndl;return 0;该程序的输出结果是 【10】 。(分数:2.00)填空项 1:_46.阅读下面的程序:#includeiomanip.hvoid main()cout.fill(!);coutsetiosflags(ioS:left)hex;coutsetw(6)1024endl;写出该程序的输出结果: 【11】 。(分数:2.00)填空项 1:_47.以下程序的执行结果是 【12】 。#includeiostream.h#includeiomanip.hvoid pnnt(int n)if (n!=0)Print(n-1);for (int i=1;i=n;i+)coutsetw(
15、3)i;coutendl;void main()print(4);(分数:2.00)填空项 1:_48.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是, 【13】 。(分数:2.00)填空项 1:_49.执行以下程序后,输出“#”号的个数是 【14】 。#includeiostream.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)cout#;(分数:2.00)填空项 1:_50.阅读以下程序:#includeiostream.hvoid main()static int a3=9,7,5,3,1,2,4,6,8;int i,j,
16、s1=0,s2=0;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j)s1=sl+aij;if(i+j=2)s2=s2+aij;couts1“,“s2endl;则该程序的输出结果为 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-359 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.实现运行时的多态性要使用(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:2.在软件设计中,不属于过程设计工具的是( )。(分数:2.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图
17、 解析:3.假定 MyClass 为一个类,则该类的拷贝初始化构造函数的声明语句为( )。(分数:2.00)A.MyClassmy.value=10;B.MyClass my;*my,value=10;C.MyClass my;my.*value=10;D.MyClass my(10); 解析:12.下面不属于软件设计原则的是( )。(分数:2.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:13.在 C+语言中,main 函数默认返回一个( )类型的值。(分数:2.00)A.int B.floatC.charD.void解析:14.下面程序的输出结果是( )。#includeiost
18、reamusing namespace std;int main()int n=10;while(n7)n-;cout11,;coutendl;(分数:2.00)A.10,9,8,B.9,8,7, C.10,9,8,7,D.9,8,7,6,解析:15.程序的三种基本控制结构是( )。(分数:2.00)A.过程、子过程和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:16.已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10;则下列叙述中错误的是( )。(分数:2.00)A.枚举常量 NAME 的值为 1 B.枚
19、举常量 NUMBER 的值为 1C.枚举常量 MINUS 的值为 6D.枚举常量 PRINT 的值为 10解析:17.有如下程序:#inchdeiostream.hvoid fun(int int main()int a2=23,42);fun(a1,a0);std:couta0“,“a1Std:endl;return 0;执行后的输出结果是( )。(分数:2.00)A.42,42B.23,23 C.23,42D.42,23解析:18.假定 MyClass 为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.-MyClass(int n
20、);C.MyClass();D.MyClass(); 解析:19.下列叙述中正确的是( )。(分数:2.00)A.数据的逻辑结构与存储结构必定一一对应B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对 解析:20.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是( )。(分数:2.00)A.strcpy(str1,“Hellol“);B.strcpy(str2,“Hello2
21、“);C.strcpy(str3,“Hello3“); D.strcpy(str4,“Henllo4“);解析:21.有如下程序:#includeiostreamusing namespace std;class sampleprivate:int x,y;public:sample(int i,int j)x=i;y=j;void disp()cout“displ“endl;void disp()constcout“disp2“endl;int main()const sample a(1,2);a.disp();return 0;该程序运行后的输出结果是( )。(分数:2.00)A.dis
22、p1B.disp2 C.disp1 disp2D.程序编译时出错解析:22.下列关于指针的运算中,( )是非法的。(分数:2.00)A.两个指针在一定条件下,可以进行相等或不等的比较运算B.可以将一个空指针赋值给某个指针C.一个指针可以加上两个整数之差D.两个指针在一定条件下可以相加 解析:23.数据库管理系统是位于用户与操作系统之间的一个数据管理软件,以下不属于它的基本功能的是( )。(分数:2.00)A.数据共享功能 B.数据定义功能C.数据操纵功能D.数据库的运行管理与控制功能解析:24.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象 B.对象是类的
23、具体实例C.类是对某一类对象的抽象 D.类和对象的关系是一种数据类型与变量的关系解析:25.假定 MyClass 为类,执行 MyClass a3,*p2;语句时会自动调用该类构造函数( )次。(分数:2.00)A.2B.3 C.4D.5解析:26.流程控制语句的基本控制结构有三种,不属于这一种结构的是( )。(分数:2.00)A.顺序结构B.选择结构C.循环结构D.计算结构 解析:27.下列叙述中,不属于软件需求规格说明书的作用的是( )。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人
24、员进行需求分析 解析:28.下面叙述错误的是( )。(分数:2.00)A.派生类可以使用 private 派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变 D.赋值兼容规则也适用于多继承的组合解析:29.若有以下定义:int a=1,2,3,4,5,6,7);char cl=b,c2=2;则数值不为 2 的表达式是( )。(分数:2.00)A.a1B.d-c1C.a3-c2D.c2-0 解析:30.( )提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。(分数:2.00)A
25、.公有成员 B.私有成员C.私有成员函数D.保护成员解析:31.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是( )。(分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 解析:32.不能作为函数重载的判断依据的是( )。(分数:2.00)A.constB.返回类犁 C.参数个数D.参数类型解析:33.执行语句序列ofstream outfile(“data.dat“);if(.)cout“ok“;else cout“fail“;后,如果文件打开成功,显示“ok”,否则显示“fa
26、il”。由此可知,上面 if 语句的“.”处的表达式是( )。(分数:2.00)A.outfile.fail()或 outffleB.outfile.good()或!outfileC.outfile.good()或 outfile D.outfile.fail()或!outfile解析:34.软件详细设计的主要任务是确定每个模块的( )。(分数:2.00)A.算法和使用的数据结构 B.外部接口C.功能D.编程解析:35.下列类的定义中,有( )处语法错误。class BasepubliC:Base()Base(int i)data=i;ptivate:int data;class DeriVe
27、:public Basepublic:Derive():Base(0)Derive(int x)d=x;void setvalue(int i)data=i;private:d;(分数:2.00)A.1B.2 C.3D.4解析:二、填空题(总题数:15,分数:30.00)36.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。(分数:2.00)填空项 1:_ (正确答案:数据库系统 或 数据库系统阶段 或 数据库 或 数据库阶段 或数据库管理技术阶段 。)解析:37.在面向对象方法中,属性与操作相似的一组对象称为 【2】 。(分数:2.00)
28、填空项 1:_ (正确答案:类)解析:38.算法的基本特征是可行性、确定性、 【3】 和拥有足够的情报。(分数:2.00)填空项 1:_ (正确答案:有穷性)解析:39.静态联编所支持的多态性称为编译时的多态性,动态联编所支持的多态性则称为运行时的多态性,动态多态性由 【4】 来支持。(分数:2.00)填空项 1:_ (正确答案:虚函数)解析:40.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【5】 。(分数:2.00)填空项 1:_ (正确答案:n/2)解析:41.设有定义语句:double x=2.5,y=4.7;int a
29、=7;,那么表达式 x+a%3*(int)(x+y)%2/4 的值为 【6】 。(分数:2.00)填空项 1:_ (正确答案:2.5)解析:42.函数 swap(arr,n)可完成对 arr 数组从第 1 个元素到第 n 个元素两两交换。在运行调用函数中的语句后,a0和 a1的值分别为 【7】 。a0=1;a1=2;swap(a,2);(分数:2.00)填空项 1:_ (正确答案:2,1)解析:43.以下程序段是函数返回 a 所指数组中最小的值所在的下标值,请在下划线处填空。fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap) 【8】
30、;return(p);(分数:2.00)填空项 1:_ (正确答案:p=i)解析:44.执行语句序列int x=10,q+;r=(char*)q;coutrendl;return 0;该程序的输出结果是 【10】 。(分数:2.00)填空项 1:_ (正确答案:efgh)解析:46.阅读下面的程序:#includeiomanip.hvoid main()cout.fill(!);coutsetiosflags(ioS:left)hex;coutsetw(6)1024endl;写出该程序的输出结果: 【11】 。(分数:2.00)填空项 1:_ (正确答案:400!)解析:47.以下程序的执行结
31、果是 【12】 。#includeiostream.h#includeiomanip.hvoid pnnt(int n)if (n!=0)Print(n-1);for (int i=1;i=n;i+)coutsetw(3)i;coutendl;void main()print(4);(分数:2.00)填空项 1:_ (正确答案:1121231234)解析:48.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是, 【13】 。(分数:2.00)填空项 1:_ (正确答案:virtual int A()=0;)解析:49.执行以下程序后,输出“#”号的个数是 【14】 。#in
32、cludeiostream.hmain()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)cout#;(分数:2.00)填空项 1:_ (正确答案:6)解析:50.阅读以下程序:#includeiostream.hvoid main()static int a3=9,7,5,3,1,2,4,6,8;int i,j,s1=0,s2=0;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j)s1=sl+aij;if(i+j=2)s2=s2+aij;couts1“,“s2endl;则该程序的输出结果为 【15】 。(分数:2.00)填空项 1:_ (正确答案:18,10)解析: