1、二级 C+笔试-444 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列关于线性表、栈和队列的叙述,错误的是A) 线性表是给定的 n(n 必须大于零)个元素组成的序列B) 线性表允许在表的任何位置进行插入和删除操作C) 栈只允许在一端进行插入和删除操作D) 队列允许在一端进行插入在另一端进行删除(分数:2.00)A.B.C.D.2.模块化程序设计过程中,追求模块的独立性,尽量做到( )。A) 模块的控制耦合要尽可能高B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强D)
2、模块的扇入系数要大,扇出要小(分数:2.00)A.B.C.D.3.下列叙述中正确的是( )。A) 线性链表是线性表的链式存储结构 B) 栈与队列是非线性结构C) 双向链表是非线性结构 D) 只有根结点的二叉树是线性结构(分数:2.00)A.B.C.D.4.下列叙述中正确的是( )。A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定(分数:2.00)A.B.C.D.5.在软件开发中,需求分析阶段产生
3、的主要文档是( )。A) 可行性分析报告 B) 集成测试计划C) 概要设计说明书 D) 软件需求规格说明书(分数:2.00)A.B.C.D.6.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为 90的元素时,查找成功的比较次数为( )。A1 B2 C3 D9(分数:2.00)A.B.C.D.7.数据库、数据库系统和数据库管理系统之间的关系是A) 数据库包括数据库系统和数据库管理系统B) 数据库系统包括数据库和数据库管理系统C) 数据库管理系统包括数据库和数据库系统D) 三者没有明显的包含关系(分数:2.00)A.B.C.D.8.对
4、建立良好的程序设计风格,下面描述正确的是( )。A) 程序应简单、清晰、可读性好 B) 符号名的命名只要符合语法C) 充分考虑程序的执行效率 D) 程序的注释可有可无(分数:2.00)A.B.C.D.9.下列描述中正确的是( )。A程序就是软件B软件开发不受计算机系统的限制C软件既是逻辑实体,又是物理实体D软件是程序、数据与相关文档的集合(分数:2.00)A.B.C.D.10.在下列关系运算中,可能改变关系中属性个数的是A) 并 B) 差 C) 投影 D) 交(分数:2.00)A.B.C.D.11.有三个关系 R、S 和 T 如下:RA B Ca 1 2b 2 1c 3 1sA D C 4TA
5、 B C Dc 3 1 4则由关系 R 和 S 得到关系 T 的操作是A) 自然连接B) 交C) 投影D) 并(分数:2.00)A.B.C.D.12.类模板的使用实际上是将类模板实例化成一个具体的( )。A类 B对象C函数 D模板类(分数:2.00)A.B.C.D.13.关于运算符重载,下列表述中正确的是( )。A) C+已有的任何运算符都可以重载B) 运算符函数的返回类型不能声明为基本数据类型C) 在类型转换符函数的定义中不需要声明返回类型D) 可以通过运算符重载来创建 C+中原来没有的运算符(分数:2.00)A.B.C.D.14.下列程序的输出结果是#include iostreamusi
6、ng namespace std;int main ()char a = “Hello,World“:char*ptr = a;while (*ptr)if(*ptr= a else cout*ptr;ptr+;return 0;A) HELLO. WORLDB) Hello, WorldC) hELLO, wORLDD) hello, world(分数:2.00)A.B.C.D.15.下列对变量的引用中,错误的是A) int a; int SetVariable(int i)value=i;private:int value;则对下列语句序列正确的描述是( )。MyClass*P, my;
7、p=A) 语句 p= 是把对象 my 赋值给指针变量 PB) 语句 MyClass*p, my; 会调用两次类 MyClass 的构造函数C) 对语句*P. SetVariable(5)的调用是正确的D) 语句 p-SetVariable(5)与语句 my.SetVariable(5)等价(分数:2.00)A.B.C.D.22.下列函数的运行结果是( )。#includeiostreamhint f(int a,int b)int c;if(ab)c=1;else if(a=b)c=0;else c=-1;return(c);void main()int i=2,j=3;iht p=f(i,j
8、);coutp;A-1 B1C2 D编译出错,无法运行(分数:2.00)A.B.C.D.23.计算斐波那契数列第 n 项的函数定义如下:int fib(int n)if (n=0)return 1;else if(n=1) return 2;else return fib(n=1)+fib(n=2);若执行函数调用表达式 fib(2),函数 fib 被调用的次数是( )。A1 B2 C3 D4(分数:2.00)A.B.C.D.24.以下叙述中不正确的是A) 一个类的所有对象都有各自的数据成员,它们共享函数成员B) 一个类中可以有多个同名的成员函数C) 一个类中可以有多个构造函数、多个析构函数D
9、) 在一个娄中可以声明另一个类的对象作为它的数据成员(分数:2.00)A.B.C.D.25.下列关于继承的描述中,错误的是( )。A) 析构函数不能被继承B) 派生类是基类的组合C) 派生类的成员除了它自己的成员外,还包含了它的基类的成员D) 派生类中继承的基类成员的访问权限到派生类保持不变(分数:2.00)A.B.C.D.26.设有定义:int n1=0,n2,*p=n2,*q=n1;,以下赋值语句中与 n2=n1;语句等价的是_。(A) *p=*q;(B) p=q;(C) *p=n1;(D) p=*q;(分数:2.00)A.B.C.D.27.已知语句 int m=10;则下列引用的表示中正
10、确的是A) int B) int C) int D) float(分数:2.00)A.B.C.D.28.下列代码段声明了 3 个类:class Person;class Student:public Person;class Undergraduate:Student;下列关于这些类之间关系的描述中,错误的是( )。A类 Person 是类 Undergraduate 的基类B类 Undergraduate 从类 Student 公有继承C类 Student 是类 Person 的派生类D类 Undergraduate 是类 Person 的派生类(分数:2.00)A.B.C.D.29.下列是
11、关于派生类声明的开始部分,其中正确的是 A) class virtual B:publice A B) virtual class B:publice A C) class B:public A virtal D) class B:virtual public A(分数:2.00)A.B.C.D.30.下面是类 Shape 的定义:class Shapepublic:virtual void Draw()=0;下列关于 Shape 类的描述中,正确的是( )。A类 Shape 是虚基类B类 Shape 是抽象类C类 Shape 中的 Draw 函数声明有误D语句“Shape s;”能够建立 S
12、hape 的一个对象 s(分数:2.00)A.B.C.D.31.下面程序的运行结果是#includeiostream.hvoid fun(int * a,int * b) int x * a;* a * b; * bX;cout * a * b “ “;void main( ) int x1,y2;fun(cout X y endl;) 12 12 ) 12 21 ) 21 12 ) 21 21(分数:2.00)A.B.C.D.32.有如下程序:#include iostreamusing namespace std;class AAint n;public:AA(int k):n(k) in
13、t get()return n; int get()constreturn n+1;int main()AA a(5);const AA b(6);couta.get()b.get();return 0;执行后的输出结果是( )。A. 55 B. 57C. 75 D. 77(分数:2.00)A.B.C.D.33.实现运行时的多态性用A) 重载函数 B) 构造函数 C) 析构函数 D) 虚函数(分数:2.00)A.B.C.D.34.C+语言函数中不能由系统自动生成的是A) 析构函数 B) 构造函数C) 内联函数 D) 复制构造函数(分数:2.00)A.B.C.D.35.有如下类声明:class
14、XAint X;public:XA(int n)x=n;class XB:publicXAint y;public:XB(int a,int b););在构造函数 XB 的下列定义中,正确的是( )。AXB:XB(int a,int b):x(a),y(b)BXB:XB(int a,int b):XA(a),y(b)CXB:XB(int a,int b):x(a),XB(b)DXB:XB(int a,int b):XA(a),XB(b)(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:30.00)36.软件维护活动包括改正性维护、适应性维护、 1 维护和预防性维护。(分数:2.
15、00)填空项 1:_37.对软件设计的最小单位(模块或程序单元)进行的测试通常称为 1 测试。(分数:2.00)填空项 1:_38.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中U /U的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_39.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_40.开发一个 C语言程序的步骤通常包括编辑、 、链接、运行和调试。(分数:2.00)填空项 1:_41.虚函数必须是类的 1。(分数:2.00)填空项 1:_42.若将一个
16、二元运算符重载为类的成员函数,其形参个数应该是 1 个。(分数:2.00)填空项 1:_43.下面函数返回数组中最大元素的下标,数组中元素个数为 t,将程序补充完整。int findmax(int s,int t) int k,p;for(p=0,k=p;pt;p+) ifU /Uk=p;return k;(分数:2.00)填空项 1:_44.下列程序编译错误,因为 add 函数返回值是一个引用,故对 return 后返回值的要求是U /U。#includeiostream. hintvoid main( )int i=3,j=19;cout(add(i,j)+ =20)end1;(分数:2.
17、00)填空项 1:_45.以下程序的输出结果是 。#includeiostream.hunsigned fun(unsigned num) unsigned k1;dok * num%10;num/10;while(num) ;return k;void main( ) unsigned n26;cout fun(n) endl;(分数:2.00)填空项 1:_46.重载函数的实现和功能不同,但函数的U /U相同。(分数:2.00)填空项 1:_47.下列程序将 x、y 和 z 按从小到大的顺序排列,请将下面的函数模板补充完整。template class Tvoid order(_)T a;
18、if (xy)a=x; x=y; y=a;if (yz)a=y; y=z; z=a;if (xy)a=x; x=y; y=a;(分数:2.00)填空项 1:_48.若下列程序运行时输出结果为1,A,1012,B,35请将程序补充完整。#includeiostreamusing namespace std;int main()void test(mt,char,double_);test(1,A,10.1);test(2,B);return 0;void test(int a,char b,double c)couta,b,cendl;(分数:2.00)填空项 1:_49.多数运算符既能作为类的
19、成员函数重载,也能作为类的非成员函数重载,但 运算符只能作为类的 1 函数重载。(分数:2.00)填空项 1:_50.补充完整下面的类定义:class XCHchar*a;public:XCH(char*aa) /构造函数a=new charstrlen(aa)+1;strcpy(a,aa);XCHa=new charstrlen(x,a)+1;strcpy(a,x,a);_;XCH( )deletea;)(分数:2.00)填空项 1:_二级 C+笔试-444 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列关于线性表、栈和队列的叙述,错
20、误的是A) 线性表是给定的 n(n 必须大于零)个元素组成的序列B) 线性表允许在表的任何位置进行插入和删除操作C) 栈只允许在一端进行插入和删除操作D) 队列允许在一端进行插入在另一端进行删除(分数:2.00)A. B.C.D.解析:解析 线性表的插入和删除允许在任何位置进行,所以 B 选项的说法是正确的;栈的操作只允许在栈顶进行,因此,栈称为先进后出表(FILO,First In Last Out),或“后进先出”表(LIFO,Last In First Out),所以 C 选项说法也是正确的;队列(queue)是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头(front)
21、,允许插入的一端叫做队尾(rear),因此队列亦称作先进先出 (FIFO, First In First Out)的线性表,或后进后出(LILO, Last In Last Out)的线性表。所以 D 选项说法也是正确的。2.模块化程序设计过程中,追求模块的独立性,尽量做到( )。A) 模块的控制耦合要尽可能高B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强D) 模块的扇入系数要大,扇出要小(分数:2.00)A.B. C.D.解析:解析 为了使模块尽可能独立,要求模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱。3.下列叙
22、述中正确的是( )。A) 线性链表是线性表的链式存储结构 B) 栈与队列是非线性结构C) 双向链表是非线性结构 D) 只有根结点的二叉树是线性结构(分数:2.00)A. B.C.D.解析:解析 线性表、栈、队列和双向链表都是典型的线性结构;而二叉树是典型的非线性结构。知识拓展 什么是线性结构?有 3 个衡量标准:有且只有一个根结点;每个结点最多有一个前件(直接前驱),也最多有一个后件(直接后继):删除或插入任何一个结点后还应该是线性结构。如下图所示的就是一个线性结构。不是线性结构就一定是非线性结构。4.下列叙述中正确的是( )。A) 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)
23、 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D) 循环队列中元素的个数是由队头指针和队尾指针共同决定(分数:2.00)A.B.C.D. 解析:解析 循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。5.在软件开发中,需求分析阶段产生的主要文档是( )。A) 可行性分析报告 B) 集成测试计划C) 概要设计说明书 D) 软件需求规格说明书(分数:2.00)A.B.C.D. 解析:解析 软件的生命周期分为计划、开发和运行 3 个时期。其中计划期包括问题定义和可行
24、性研究。运行的任务是软件维护。开发期包括分析、设计和实施:分析即为需求分析。需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。6.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为 90的元素时,查找成功的比较次数为( )。A1 B2 C3 D9(分数:2.00)A.B. C.D.解析:解析 根据二分法查找法需要两次:(1)首先将 90 与表中间的元素 50 进行比较,由于 90 大于50,所以在线性表的后半部分查找。(2)第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查
25、找成功。7.数据库、数据库系统和数据库管理系统之间的关系是A) 数据库包括数据库系统和数据库管理系统B) 数据库系统包括数据库和数据库管理系统C) 数据库管理系统包括数据库和数据库系统D) 三者没有明显的包含关系(分数:2.00)A.B. C.D.解析:解析 数据库系统(DataBase System,简称 DBS) 包括数据库(DataBase,简称 DB) 、数据库管理系统(DataBase Management System,简称 DBMS) 、数据库管理员、硬件和软件。8.对建立良好的程序设计风格,下面描述正确的是( )。A) 程序应简单、清晰、可读性好 B) 符号名的命名只要符合语法
26、C) 充分考虑程序的执行效率 D) 程序的注释可有可无(分数:2.00)A. B.C.D.解析:解析 为了建立良好的程序设计风格,程序应简单、清晰、可读性好。9.下列描述中正确的是( )。A程序就是软件B软件开发不受计算机系统的限制C软件既是逻辑实体,又是物理实体D软件是程序、数据与相关文档的集合(分数:2.00)A.B.C.D. 解析:解析 软件是程序、数据与相关文档的集合,它是一个逻辑实体。软件的开发要受计算机系统的限制,例如硬件系统的限制、软件操作系统的限制等。10.在下列关系运算中,可能改变关系中属性个数的是A) 并 B) 差 C) 投影 D) 交(分数:2.00)A.B.C. D.解
27、析:解析 投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值;因此,经过投影运算后,会取消某些列,即投影运算可能改变关系中属性韵个数。11.有三个关系 R、S 和 T 如下:RA B Ca 1 2b 2 1c 3 1sA D C 4TA B C Dc 3 1 4则由关系 R 和 S 得到关系 T 的操作是A) 自然连接B) 交C) 投影D) 并(分数:2.00)A. B.C.D.解析:12.类模板的使用实际上是将类模板实例化成一个具体的( )。A类 B对象C函数 D模板类(分数
28、:2.00)A. B.C.D.解析:13.关于运算符重载,下列表述中正确的是( )。A) C+已有的任何运算符都可以重载B) 运算符函数的返回类型不能声明为基本数据类型C) 在类型转换符函数的定义中不需要声明返回类型D) 可以通过运算符重载来创建 C+中原来没有的运算符(分数:2.00)A.B.C. D.解析:解析 此题考查的是运算符的有关概念。运算符重载是针对 C+原有运算符进行的,不能通过重载创造新的运算符;除了“.”、“.*”、“-*”、“:”、“?:”这 5 个运算符外,其他运算符都可以重载;在类型转换符函数的定义中不需要声明返回类型:运算符函数的返回值类型可以声明为基本数据类型。14
29、.下列程序的输出结果是#include iostreamusing namespace std;int main ()char a = “Hello,World“:char*ptr = a;while (*ptr)if(*ptr= a else cout*ptr;ptr+;return 0;A) HELLO. WORLDB) Hello, WorldC) hELLO, wORLDD) hello, world(分数:2.00)A. B.C.D.解析:解析 本题考核 while 语句和 if 语句,while 语句中 if 语句的作用是将小写字母变成大写字母输出、所以 main 函数的字符串通过
30、 while 语句全部输出为大写字母。15.下列对变量的引用中,错误的是A) int a; int SetVariable(int i)value=i;private:int value;则对下列语句序列正确的描述是( )。MyClass*P, my; p=A) 语句 p= 是把对象 my 赋值给指针变量 PB) 语句 MyClass*p, my; 会调用两次类 MyClass 的构造函数C) 对语句*P. SetVariable(5)的调用是正确的D) 语句 p-SetVariable(5)与语句 my.SetVariable(5)等价(分数:2.00)A.B.C.D. 解析:解析 选项 A
31、),语句 p=,由于 p 只是一个指向对象的指针,因此定义指针 p 不调用构造函数,所以此语句只调用一次构造函数;对成员函数的引用可以通过两种形式:指针-成员函数(形参表)或者对象名成语函数名(形参表),故选项 C)错误,选项 D)正确。22.下列函数的运行结果是( )。#includeiostreamhint f(int a,int b)int c;if(ab)c=1;else if(a=b)c=0;else c=-1;return(c);void main()int i=2,j=3;iht p=f(i,j);coutp;A-1 B1C2 D编译出错,无法运行(分数:2.00)A. B.C.
32、D.解析:解析 本题的函数是根据 a 和 b 的值来给 c 赋值。23.计算斐波那契数列第 n 项的函数定义如下:int fib(int n)if (n=0)return 1;else if(n=1) return 2;else return fib(n=1)+fib(n=2);若执行函数调用表达式 fib(2),函数 fib 被调用的次数是( )。A1 B2 C3 D4(分数:2.00)A.B.C. D.解析:解析 针对递归调用的含义。当 n 为 2 时有 fib(0),fib(1),fib(2)被调用,且 fib(0),fib(1)时调用结束,即共 3 次。24.以下叙述中不正确的是A)
33、一个类的所有对象都有各自的数据成员,它们共享函数成员B) 一个类中可以有多个同名的成员函数C) 一个类中可以有多个构造函数、多个析构函数D) 在一个娄中可以声明另一个类的对象作为它的数据成员(分数:2.00)A.B.C. D.解析:解析 本题考查类的基本概念。构造函数和析构函数比较特殊,析构函数只有一个。25.下列关于继承的描述中,错误的是( )。A) 析构函数不能被继承B) 派生类是基类的组合C) 派生类的成员除了它自己的成员外,还包含了它的基类的成员D) 派生类中继承的基类成员的访问权限到派生类保持不变(分数:2.00)A.B.C.D. 解析:解析 派生类中继承的基类成员的访问权限到派生类
34、会发生变化,例如:私有继承时,派生类不能访问基类的成员,所以选项 D)错误,其他选项均止确。26.设有定义:int n1=0,n2,*p=n2,*q=n1;,以下赋值语句中与 n2=n1;语句等价的是_。(A) *p=*q;(B) p=q;(C) *p=n1;(D) p=*q;(分数:2.00)A. B.C.D.解析:27.已知语句 int m=10;则下列引用的表示中正确的是A) int B) int C) int D) float(分数:2.00)A. B.C.D.解析:解析 本题考查 C+中引入的新类型:引用。引用表示变量的别名,使用方式同变量,效果同指针。引用不能用常数进行赋值,引用的
35、类型必须一致,引用在使用之前必须初始化。28.下列代码段声明了 3 个类:class Person;class Student:public Person;class Undergraduate:Student;下列关于这些类之间关系的描述中,错误的是( )。A类 Person 是类 Undergraduate 的基类B类 Undergraduate 从类 Student 公有继承C类 Student 是类 Person 的派生类D类 Undergraduate 是类 Person 的派生类(分数:2.00)A.B. C.D.解析:解析 类 Undergraduate 从类 Student 私
36、有继承,继承方式缺省则默认是 private。29.下列是关于派生类声明的开始部分,其中正确的是 A) class virtual B:publice A B) virtual class B:publice A C) class B:public A virtal D) class B:virtual public A(分数:2.00)A.B.C.D. 解析:解析 派生类的声明格式如下: class 派生类名:继承方式基类名派生类的数据成员和成员函数 virtual 为虚继承,是继承方式,所以应该放在派生类名后面。30.下面是类 Shape 的定义:class Shapepublic:vir
37、tual void Draw()=0;下列关于 Shape 类的描述中,正确的是( )。A类 Shape 是虚基类B类 Shape 是抽象类C类 Shape 中的 Draw 函数声明有误D语句“Shape s;”能够建立 Shape 的一个对象 s(分数:2.00)A.B. C.D.解析:解析 抽象类是类中至少有一个纯虚函数,抽象类是用来被继承的,即是用来生成派生类,它本身不能生成实例。31.下面程序的运行结果是#includeiostream.hvoid fun(int * a,int * b) int x * a;* a * b; * bX;cout * a * b “ “;void ma
38、in( ) int x1,y2;fun(cout X y endl;) 12 12 ) 12 21 ) 21 12 ) 21 21(分数:2.00)A.B.C.D. 解析:解析 本题考查的是指针和引用,函数 fun 完成把 x 和 y 互换的操作。32.有如下程序:#include iostreamusing namespace std;class AAint n;public:AA(int k):n(k) int get()return n; int get()constreturn n+1;int main()AA a(5);const AA b(6);couta.get()b.get()
39、;return 0;执行后的输出结果是( )。A. 55 B. 57C. 75 D. 77(分数:2.00)A.B. C.D.解析:33.实现运行时的多态性用A) 重载函数 B) 构造函数 C) 析构函数 D) 虚函数(分数:2.00)A.B.C.D. 解析:解析 多态性是通过虚函数来完成的,不同类层次上的类通过虚函数,可以做到运行时根据指针的指向确定调用哪个对象的成员函数。34.C+语言函数中不能由系统自动生成的是A) 析构函数 B) 构造函数C) 内联函数 D) 复制构造函数(分数:2.00)A.B.C. D.解析:命题目的 考查一个类中由系统自动生成的函数。解题要点 一个类中由系统自动生
40、成的函数有构造函数、析构函数、拷贝构造函数。错解分析 内联函数只能由用户自己定义。考点链接 类能自动生成的函数,尤其注意构造函数和析构函数,还有拷贝构造函数。35.有如下类声明:class XAint X;public:XA(int n)x=n;class XB:publicXAint y;public:XB(int a,int b););在构造函数 XB 的下列定义中,正确的是( )。AXB:XB(int a,int b):x(a),y(b)BXB:XB(int a,int b):XA(a),y(b)CXB:XB(int a,int b):x(a),XB(b)DXB:XB(int a,int
41、 b):XA(a),XB(b)(分数:2.00)A.B. C.D.解析:解析 本题考查提派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式:派生类名(构造函数形参表)基类构造函数(形参表)。二、填空题(总题数:15,分数:30.00)36.软件维护活动包括改正性维护、适应性维护、 1 维护和预防性维护。(分数:2.00)填空项 1:_ (正确答案:256.36。)解析:解析 str 表示把数值转化为字符串。字符串函数大都以类型说明符“$”结尾,表明函数的返回值为字符串,但是在 Visual Basic 6.0 中,函数尾部的“$
42、”也可以省略,功能相同。因此本题的结果为256.36。37.对软件设计的最小单位(模块或程序单元)进行的测试通常称为 1 测试。(分数:2.00)填空项 1:_ (正确答案:单元)解析:解析 对软件的模板进行的测试通常称为单元测试。38.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中U /U的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_ (正确答案:驱动模块)解析:39.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_ (正确答案:关系)解析:解析 在关系
43、数据库模型中,一张二维表就是一个关系。40.开发一个 C语言程序的步骤通常包括编辑、 、链接、运行和调试。(分数:2.00)填空项 1:_ (正确答案:编译)解析:解析 C语言是以编译方式实现的高级语言,C语言程序的实现,必须要使用某种 C语言的编译器对程序进行编译。41.虚函数必须是类的 1。(分数:2.00)填空项 1:_ (正确答案:成员函数)解析:解析 虚函数是允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类中的同名函数。在基类中用 virtual 声明成员函数为虚函数,所以虚函数是类的成员函数。42.若将一个二元运算符重载为类的成员函数,其形参个数应该
44、是 1 个。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 本题考查运算符重载。当运算符重载为类的成员函数时,第一操作数就是对象本身,并不是显式的出现在参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。43.下面函数返回数组中最大元素的下标,数组中元素个数为 t,将程序补充完整。int findmax(int s,int t) int k,p;for(p=0,k=p;pt;p+) ifU /Uk=p;return k;(分数:2.00)填空项 1:_ (正确答案:(spsk))解析:解析 分析程序其他部分,k 存放最大元素的下标。4
45、4.下列程序编译错误,因为 add 函数返回值是一个引用,故对 return 后返回值的要求是U /U。#includeiostream. hintvoid main( )int i=3,j=19;cout(add(i,j)+ =20)end1;(分数:2.00)填空项 1:_ (正确答案:不能是表达式)解析:解析 引用是变量的别名,其实质是变量的地址。return 在返回值时,如果其后为表达式,则系统为该表达式生成一个临时变量用于存放该表达式的结果,函数执行完毕之后该变量被系统回收,因此,返回的该变量的地址对调用函数来说已经没有意义了。45.以下程序的输出结果是 。#includeiostr
46、eam.hunsigned fun(unsigned num) unsigned k1;dok * num%10;num/10;while(num) ;return k;void main( ) unsigned n26;cout fun(n) endl;(分数:2.00)填空项 1:_ (正确答案:12)解析:解析 函数有一个形参 num,循环前变量 k 置 1,循环中,表达式 num%10 是取 num 的个位,将Hum 的个位值累乘于 k 中,然后 num 除以 10。循环直至 num 为 0 结束,这是逐一求出 num 十进制表示的各位数字,并累乘于变量 k 的循环。函数最后返回 k。函数 fun 的功能是求整数的各位十进制数的积。46.重载函数的实现和功能不同,但函数的U /U相同。(分数:2.00)填空项 1:_ (正确答案:函数名称)解析:解析 重载函数的函数名称相同,但函数的实现和功能不同。系统是靠参数个数或参数类型来决定采用哪个函数的。47.下列程序将 x、y 和 z 按从小到大的顺序排列,请将下面的函数模板补充完整。template class Tvoid order(_)T a;if (xy)a=x; x=y; y=a;i