1、二级 C+笔试-250 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.为了使程序的输出的正确结果为:Now is 20047.10 10:10:10那么应在下列程序划线处填入的正确语句是( )。那么应在下列程序划线处填入的正确语句是( )。 #include iostreamusing namespace std;class TIME;class DATEpublic:DATE(int y=2004,int m=1,int d=1)year=y;month=m;day=d;friend void DateTime(DATE private
2、:int year, month, day;class TIMEpublic:TIME(iht h=0, int m=0,int s=0)hour=h;minute=m;second=s;friend void DateTime(DATE private:int hour,minute, second;_ /函数 DateTime 的首部cout“Now is“d.year.d.month.d.day t.hour“:“t.minute:t.second.end1;int main ( )DATE d(2004,7,10);TIME t(10, 10, 10);DateTime(d,t);re
3、turn 0;(分数:2.00)A.void DateTime(DATE class Bprivate:int a,b;public:B()B(int i,int j);void printb();class AB C;public:A()A(int i,int j);void printa();A:A(int i,int j) :c(i,j) void A:printa()c.printb ();B:B(int i, int j)a=i;b=j;void B: :printb()couta“, “bend1;int main ()A m(7,8);m.printa();return 0;该程
4、序运行后的输出结果是( )。(分数:2.00)A.5,6B.7,8C.8,9D.9,104.若有以下函数调用语句:f(m+n,x+y,f(m+n,z,(x,y);在此函数调用语句中实参的个数是( )。(分数:2.00)A.6B.5C.4D.35.“or(int x=0,y=0;!xint main ()char s=“/n123/“;coutstrlen (s) “, “sizeof (s) end1;return 0;(分数:2.00)A.赋初值的字符串有错B.6,7C.5,6D.6,68.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中用于是否进行了非法操作的
5、函数名是( )。(分数:2.00)A.failB.eofC.badD.good9.有以下程序:#include iostreamusing namespace std;class Basepublic:Base()virtual void who()cout“Base Class“end1;Base();class Derivel : public Basepublic:void who()cout“Derivel Class“end1;class Derive2 : public Basepublic:void who ()cout“Derive2 Class“end1;int main (
6、)Base *p;Derivel obj1;Derive2 obj2;p=p=p-who ( );return 0;执行程序后的输出结果是( )。(分数:2.00)A.Base ClassB.Derivel ClassC.Derive2 ClassD.程序编译时出错10.实现运行时的多态性要使用( )。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数11.若有以下程序:#include iostreamusing namespace std;class Aprivate:int x;protected:int y;public:int z;void setx(int i)x=i
7、;int getx ()return x;class B : protected Apublic:void setvalue(int a, int b, int c) setx ((分数:2.00)A.;t = t = p; *p = *q; *q = *t;void main ()float x = 8.0;y = 9.0;swap (coutx“, “yend1;B.void swap (float *p, float *q)float a;a = *p; *p = *q; *q = a;void main()float x = 8.0;y = 9.0;swap (coutx“, “yen
8、d1;C.void swap (float *p, float *q)float x;x = *p; *p = *q; *q = x;void main()float a,b.;*a = 8.0;*b = 9.0;swap (a,b) ;coutx“, “yend1;D.void swap (float a = p; p = q; q = a;void main()float a = 8.0,b = 9.0;swap (a,b);coutx“, “yend1;14.在结构化程序设计使用 goto 语句的原则是( )。(分数:2.00)A.限制B.鼓励C.禁止D.滥用15.下列对模板的声明中,正
9、确的是( )。(分数:2.00)A.temvlateTB.templateclassT1,T2C.temvlateclassT1,classT2D.templateclassT1;classT216.字符串常量“hello“的字符个数是( )。(分数:2.00)A.3B.4C.5D.617.下列关于类和对象描述中,错误的是( )。(分数:2.00)A.对象(Object)是现实世界中的客观事物,对象具有确定的属性B.类是具有相同属性和行为的一组对象的集合C.对象是类的抽象,类是对象的实例D.类是对象的抽象,对象是类的实例18.若有如下程序:#include iostreamusing name
10、space std;int s=0;class samplestatic int n;public:sample (int i)n=i;static void add()s+=n;int sample: :s=0;int main ()sample a(2),b(5);sample: add ();coutsend1;return 0;程序运行后的输出结果是( )。(分数:2.00)A.2B.5C.7D.319.关系表中的每一横行成为一个( )。(分数:2.00)A.元组B.字段C.属性D.码20.下列关于链式存储的叙述中,错误的是( )。(分数:2.00)A.链式存储结构的空间可以是不连续的
11、B.数据节点的存储顺序与数据元素之间的逻辑关系可以不一致C.链式存储方式只可用于线性结构D.链式存储也可用于非线性结构21.在数据库设计的 4 个阶段中,为关系模式选择存取方法(建立存取路径)的阶段是( )。(分数:3.00)A.需求分析B.概念设计C.逻辑设计D.物理设计22.软件详细设计的主要任务是( )。(分数:3.00)A.确定每个模块的算法和使用的数据结构B.确定每个模块外部的接口C.确定每个模块的功能D.编程23.下列说法中,正确的是( )。(分数:3.00)A.在线性表中插入一个元素后,线性表长度不变B.在线性表中删除一个元素后,线性表长度不变C.在线性表中插入一个元素后,线性表
12、长度加 1D.在线性表顺序存储的情况下插入一个元素的效率较高24.下列关于类概念的描述中,错误的是( )。(分数:3.00)A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的模板D.类就是 C 语言中的结构类型25.若有以下程序:#include iostreamusing namespace std;class Aprotected:int a;public:A()a=10;class A1 : public Apublic:A1()a=a+1;class A2 : public Apublic:A2 ()a=a+2;class B : public A1
13、,public A2public:B()void print()coutaend1;int main ( )B obj;obj.print();return 0;程序运行后的输出结果是( )。(分数:3.00)A.产生语法错误B.11C.12D.1026.若有以下程序段:#include iostreamusing namespace std;int main ()int a=1,4,5;int *p=for (y=0; y3; y+)z= ( (* (p+y) x) ? *(p+y) :x);coutzend1;return 0;程序运行后的输出结果是( )。(分数:3.00)A.1B.4C
14、.5D.227.软件是一种( )。(分数:3.00)A.程序B.数据C.逻辑产品D.物理产品28.对一个已经排好序的序列进行排序,采用( )比较适宜。(分数:3.00)A.冒泡法B.直接选择法C.直接插入法D.归并法29.在函数声明中,下面哪项是不必要的( )。(分数:3.00)A.函数参数的类型和参数名B.函数名C.函数的类型D.函数体30.有如下程序段,请指出”p 所代表的是( )。int *p,*s,k=20;S = class TIME;class DATEpublic:DATE(int y=2004,int m=1,int d=1)year=y;month=m;day=d;frien
15、d void DateTime(DATE private:int year, month, day;class TIMEpublic:TIME(iht h=0, int m=0,int s=0)hour=h;minute=m;second=s;friend void DateTime(DATE private:int hour,minute, second;_ /函数 DateTime 的首部cout“Now is“d.year.d.month.d.day t.hour“:“t.minute:t.second.end1;int main ( )DATE d(2004,7,10);TIME t(
16、10, 10, 10);DateTime(d,t);return 0;(分数:2.00)A.void DateTime(DATE class Bprivate:int a,b;public:B()B(int i,int j);void printb();class AB C;public:A()A(int i,int j);void printa();A:A(int i,int j) :c(i,j) void A:printa()c.printb ();B:B(int i, int j)a=i;b=j;void B: :printb()couta“, “bend1;int main ()A m
17、(7,8);m.printa();return 0;该程序运行后的输出结果是( )。(分数:2.00)A.5,6B.7,8 C.8,9D.9,10解析:解析 本题考核类的定义和应用。程序首先定义了两个类 A 和 B。在类 A 中,其私有数据成员 c为类 B 的对象。类 A 的成员函数 printa()中,调用私有成员对象 c 的成员函数 printb()输出类 B 私有数据成员 a 和 b 的值。4.若有以下函数调用语句:f(m+n,x+y,f(m+n,z,(x,y);在此函数调用语句中实参的个数是( )。(分数:2.00)A.6B.5C.4D.3 解析:解析 本题考察对函数参数表的掌握程度。
18、调用函数时,在函数名后面跟参数,参数用逗号隔开。调用时,实参与形参的个数相等,类型一致,且按顺序一一对应传递数据,同时实参是实际调用函数时所给定的有确定值的常量、变量或表达式。根据以上知识点,可以得到此函数调用语句中实参的个数是 3。故本题答案是:D。5.“or(int x=0,y=0;!xint main ()char s=“/n123/“;coutstrlen (s) “, “sizeof (s) end1;return 0;(分数:2.00)A.赋初值的字符串有错B.6,7C.5,6 D.6,6解析:解析 本题考核字符串的长度和字符型数组所占的字节数。本题在定义字符数组时没有定义数组长度
19、,但赋给数组初值,初值的个数即为数组的长度。故数组长度为 6(包括/0)。字符串的长度为有效字符的个数,为 5。所以程序最后输出 5,6。8.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中用于是否进行了非法操作的函数名是( )。(分数:2.00)A.failB.eofC.bad D.good解析:解析 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is open 判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false。函数 good 刚进行的操作成功时返回 true,否则返回 false。函数 fail 与 good
20、()相反,刚进行的操作失败时返回 true,否则返回 false。函数 bad 如果进行了非法操作返回 true,否则返回 false。函数 eof 进行输入操作时,若到达文件尾返回 true,否则返回 false。其中,eof 函数只能用于输入流操作。9.有以下程序:#include iostreamusing namespace std;class Basepublic:Base()virtual void who()cout“Base Class“end1;Base();class Derivel : public Basepublic:void who()cout“Derivel Cl
21、ass“end1;class Derive2 : public Basepublic:void who ()cout“Derive2 Class“end1;int main ()Base *p;Derivel obj1;Derive2 obj2;p=p=p-who ( );return 0;执行程序后的输出结果是( )。(分数:2.00)A.Base ClassB.Derivel ClassC.Derive2 Class D.程序编译时出错解析:解析 本题考核虚函数的应用。本题中,先定义了一个基类 Base,它含有一个虚成员函数 who(),随后定义的类 Derivel 和 Derive2 都
22、是基类 Base 的公有派生类。在主函数中定义了一个指向 Base 类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指向的对象,p-who 就能调用不同的函数实现。这是因为使用了虚函数,因而进行动态联编。程序最后把指针 p 指向派生类 Derive2 的对象,由于函数 who()在基类 Base 中是虚函数,所以系统调用Derive2 中的 who()函数,最后输出 Derive2Class。10.实现运行时的多态性要使用( )。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:解析 本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数
23、是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。11.若有以下程序:#include iostreamusing namespace std;class Aprivate:int x;protected:int y;public:int z;void setx(int i)x=i;int getx ()return x;class B : protected Apublic:void setvalue(int a, int b,
24、int c) setx ((分数:2.00)A.;t = t = p; *p = *q; *q = *t;void main ()float x = 8.0;y = 9.0;swap (coutx“, “yend1;B.void swap (float *p, float *q)float a;a = *p; *p = *q; *q = a;void main()float x = 8.0;y = 9.0;swap (coutx“, “yend1;C.void swap (float *p, float *q)float x;x = *p; *p = *q; *q = x;void main(
25、)float a,b.;*a = 8.0;*b = 9.0;swap (a,b) ;coutx“, “yend1;D.void swap (float a = p; p = q; q = a;void main()float a = 8.0,b = 9.0;swap (a,b);coutx“, “yend1;解析:解析 本题考核指针和引用作为函数形参。做此类题时,应学会整体比较,要不然花费的时间不亚于一个大的编程题。首先,这 4 个程序都是调用 swap 函数,而且目的都一致,交换传入的两个实参值。分析被调函数 swap()。在选项 A、B 和 C 中都是指针作为形参,只有在选项 D 中,函数
26、 swap()是以引用作为形参。由指针和引用作为函数形参的特点可知,只要调用了函数,就能达到交换两个实参变量的值,所以这几个被调函数没有问题。再看主函数。在选项 C 中,没有定义指针类型变量,而是直接给指针变量赋值:“floata,b;*a=8.0;*b=9.0;”,这显然是非法的。想直接开辟存储空间,交换两个常量值,是不可能的。所以只有选项 C 是错误的。14.在结构化程序设计使用 goto 语句的原则是( )。(分数:2.00)A.限制 B.鼓励C.禁止D.滥用解析:解析 在块和进程的非正常出口处往往需要用 goto 语句,使用 goto 语句会使程序执行效率较高,但它造成程序的混乱,程序
27、的质量与 goto 语句的数量成反比。结构化程序设计的关键是提高程序的清晰性。因此在结构化程序设计使用 goto 语句的原则是限制。15.下列对模板的声明中,正确的是( )。(分数:2.00)A.temvlateTB.templateclassT1,T2C.temvlateclassT1,classT2 D.templateclassT1;classT2解析:解析 本题考核模板的定义。模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键词 class 后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例
28、化,即用实际的数据类型代替它。16.字符串常量“hello“的字符个数是( )。(分数:2.00)A.3B.4C.5D.6 解析:解析 本题考核的是字符串常量这个知识点。字符串常量实际上是一个数组,组成数据的字符除显式给出的外,还包括字符结尾处标识字符串结束的符号/0。所以字符串的字符个数等于字符个数加1,C+语言编译器会自动在字符串的末尾加上 /0,作为字符串结束标识。故本题答案选项是:D。17.下列关于类和对象描述中,错误的是( )。(分数:2.00)A.对象(Object)是现实世界中的客观事物,对象具有确定的属性B.类是具有相同属性和行为的一组对象的集合C.对象是类的抽象,类是对象的实
29、例 D.类是对象的抽象,对象是类的实例解析:解析 C+中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。18.若有如下程序:#include iostreamusing namespace std;int s=0;class samplestatic int n;public:sample (int i)n=i;static void add()s+=n;int sample: :s=0;int main ()sample a(2),b(5);sample: add ();coutsend1;return 0;程
30、序运行后的输出结果是( )。(分数:2.00)A.2B.5 C.7D.3解析:解析 本题考核静态数据成员和静态成员函数的应用。程序中定义一个类 sample,它包括一个静态数据成员 n 和一个静态成员函数 add(),并在类的构造函数中给类私有静态数据成员 n 赋值。在主函数中,定义对象 a(2)时,通过构造函数使静态数据成员 n 的值变为 2,在定义对象 b(5)时,通过构造函数使静态数据成员 n=5(覆盖了前面的 n=2),再执行“sample:add()”使全局变量 s=5。19.关系表中的每一横行成为一个( )。(分数:2.00)A.元组 B.字段C.属性D.码解析:解析 本题考核关系
31、表中的一些概念。元组是指一个实体的所有属性值的集合,关系表中的每一横行就是一个实体的所有属性值的集合,选项 A 是正确的。关系表中的每一列的列名为一个属性,列中的每一元素为一个字段。码是指能惟一表示元组的最小属性集。20.下列关于链式存储的叙述中,错误的是( )。(分数:2.00)A.链式存储结构的空间可以是不连续的B.数据节点的存储顺序与数据元素之间的逻辑关系可以不一致C.链式存储方式只可用于线性结构 D.链式存储也可用于非线性结构解析:解析 链式存储结构不同于顺序存储结构,它的存储空间可以是不连续的,并且数据节点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系是由指针域
32、来确定的。链式存储方式可用于线性结构链式存储也可用于非线性结构,在表示复杂的非线性结构时,指针域的个数要多一些。21.在数据库设计的 4 个阶段中,为关系模式选择存取方法(建立存取路径)的阶段是( )。(分数:3.00)A.需求分析B.概念设计C.逻辑设计D.物理设计 解析:解析 本题考核数据库设计的 4 个阶段的区分。题目不难,只需要分清楚四个阶段的任务是什么就可以答对。显然不是需求分析阶段,因为需求分析是分析用户的要求。而概念设计是将需求分析得到的用户需求抽象为信息结构及概念模型的过程,涉及不到关系模式的存取。逻辑结构设计是在概念结构设计的基础上,将 ER 图转换成以数据库管理系统的逻辑数
33、据模型表示的逻辑模式,也不涉及到存取的问题。而物理设计是为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程。所以为关系模式选择存取方法应该属于物理设计阶段。22.软件详细设计的主要任务是( )。(分数:3.00)A.确定每个模块的算法和使用的数据结构 B.确定每个模块外部的接口C.确定每个模块的功能D.编程解析:解析 本题考核结构化设计方法的详细设计。从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确地表达这些算法。23.下列说法中,正确的是(
34、 )。(分数:3.00)A.在线性表中插入一个元素后,线性表长度不变B.在线性表中删除一个元素后,线性表长度不变C.在线性表中插入一个元素后,线性表长度加 1 D.在线性表顺序存储的情况下插入一个元素的效率较高解析:解析 在线性表中插入一个元素后,线性表长度加 1,选项 A 是错误的。在线性表中删除一个元素后,线性表长度减 1,选项 B 是错误的。在线性表顺序存储的情况下插入一个元素,在平均情况下需要移动的数据元素数目为 n2,效率较低,选项 D 是错误的。24.下列关于类概念的描述中,错误的是( )。(分数:3.00)A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体C.类
35、是创建对象的模板D.类就是 C 语言中的结构类型 解析:解析 类是创建对象的模板,它包含着所创建对象的状态描述和方法的定义。类的完整描述包含了外部接口和内部算法以及数据结构的形式。25.若有以下程序:#include iostreamusing namespace std;class Aprotected:int a;public:A()a=10;class A1 : public Apublic:A1()a=a+1;class A2 : public Apublic:A2 ()a=a+2;class B : public A1,public A2public:B()void print()c
36、outaend1;int main ( )B obj;obj.print();return 0;程序运行后的输出结果是( )。(分数:3.00)A.产生语法错误 B.11C.12D.10解析:解析 本题考核派生类的定义和使用。本程序有语法错误,这是由于类 B 中的 print 函数中的语句“coutaend1;”要输出成员 a 的值,从而产生了二义性。分析如下:程序中定义了类 A,类A1 和类 A2 都是在类 A 的基础上以公有继承方式产生的派生类,而类 B 是在类 A1 和类 A2 的基础上经过多重继承方式产生的派生类,所以在类 B 中成员 a 有两个拷贝,系统无法区分是从 A1 继承过来的
37、 a,还从A2 类继承过来的 a。修改方法有以下两种:在被访问的成员加上作用域分辨符“:”。将类 B 中的 print()函数体中语句改为:coutA1:aend1;或coutA2:aend1;但两者的输出结果不同,前者输出 11,而后者输出 12。采用虚基类的方法。就是在定义 A1 和 A2 时,在派生方式前加上关键词“virtual”。26.若有以下程序段:#include iostreamusing namespace std;int main ()int a=1,4,5;int *p=for (y=0; y3; y+)z= ( (* (p+y) x) ? *(p+y) :x);cout
38、zend1;return 0;程序运行后的输出结果是( )。(分数:3.00)A.1B.4C.5 D.2解析:解析 本题考核指针的运算。程序首先定义了一整型数组 a,并赋初值 1,4,5。即 a0,a1和 a2的值分别为 1,4 和 5。程序还定义了一个整型指针 p,并将其初始化且指向数组元素 a0。在for 循环语句中,赋值语句“z=(*(p+y)x)?*(p+y):x);”可等价为“z=(ayx)?ay:x”。因为表达式中的“*(p+y)=py=ay”。for 语句每循环一次,就给变量 z 重新赋值一次,z 的值其实就是数组和 x 相比较,将数组 a 中的最大值赋给 z。当 y=2 后,退
39、出循环,输出结果是 5。27.软件是一种( )。(分数:3.00)A.程序B.数据C.逻辑产品 D.物理产品解析:解析 计算机软件是计算机系统中与硬件互相依存的另一部分,是包括程序、数据及相关文档的完整集合。软件是一种逻辑实体,而不是物理实体,具有抽象性。28.对一个已经排好序的序列进行排序,采用( )比较适宜。(分数:3.00)A.冒泡法B.直接选择法C.直接插入法 D.归并法解析:解析 若以排序所用的比较时间来看,直接插入法和归并法都比较少,对于 N 个元素的序列,大约需要比较 N-1 次:但归并法要占用较大的存储空间,所以用直接插入法比较好。29.在函数声明中,下面哪项是不必要的( )。
40、(分数:3.00)A.函数参数的类型和参数名B.函数名C.函数的类型D.函数体 解析:解析 本题考核函数的原型声明格式。解析此题时,要注意函数定义和函数声明的区别。C+中每一个函数的定义都是由 4 个部分组成的,即函数类型、函数名、函数参数表和函数体。函数的声明是为了消除函数定义的位置影响。不管函数是在何处定义的,只要在调用前进行函数的声明,就可保证函数调用的合法性。函数原型的说明格式为:类型函数名(形参表);30.有如下程序段,请指出”p 所代表的是( )。int *p,*s,k=20;S = &k;p = &s;(分数:3.00)A.sB.&kC.*pD.k 解析:解析 在程序中,指针变量
41、 p 是 int 类型的指针类型。从程序中可看出:赋值语句“s=&k;”,使 s 指向 k,即 s 的值为 k 在内存中地址,*s 代表 k 的值;赋值语句“p=&s;”,使 p 指向 s,*p 代表 s 中的值,即 k 在内存中的地址:因为*p 代表 s 中的值,即 k 在内存中的地址,所以“p 代表的是 k 的值 20。二、填空题(总题数:15,分数:30.00)31.在数据结构中,从逻辑上可以把数据结构分成线性结构和 【1】 。(分数:2.00)填空项 1:_ (正确答案:非线性结构)解析:解析 逻辑结构即数据元素之间的逻辑关系,是从逻辑关系上描述数据,与数据的存储无关。因此根据数据元素
42、与数据元素之间的关系,逻辑结构被分为两大类:线性结构和非线性结构。而集合结构与非集合结构、树形结构和图状结构指的都是特定的数据结构类型。32.在双链表中,每个节点有两个指针域,一个指向前驱节点,另一个指向 【2】 。(分数:2.00)填空项 1:_ (正确答案:后续节点(后继节点))解析:解析 链式存储结构的节点中,只有一个指示直接后继的指针域。因此从某个点出发,只能顺指针往后寻查其他节点。若要寻查节点的直接前驱,则需要从表头指针出发,影响查找效率。为了克服单链表这种单向性的缺点,可利用双向链表。双向链表的节点中,有两个指针域,其一指向直接后继,另一个指向直接前驱。33. 【3】 是当前软件开
43、发环境中富有特色的研究工作和发展方向。(分数:2.00)填空项 1:_ (正确答案:计算机辅助软件工程(CASE))解析:解析 CASE 将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环境。34.数据库是指按照一定的规则存储在计算机中的 【4】 的集合,它能被各种用户共享。(分数:2.00)填空项 1:_ (正确答案:数据)解析:解析 数据库是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这些数据按一定的数据模型组织、描述和储存35.模块的独立性一般用两个准则来度量,即模块间的 【5】 和模块的内聚性。(分数:2.00)填空项 1:_ (正确答案
44、:耦合性)解析:解析 模块的独立性是评价设计好坏的重要标准,衡量软件的模块的独立性使用耦合性和内聚性两个定型的度量标准。内聚性是一个模块内部各个元素之间彼此结合的紧密程度的度量。耦合性是模块间互相连接的紧密程度的度量。36.以下程序运行后的输出结果是 【6】 。#includeiostreamusing namespace std;int main()int i=10,i:0;doj=j+i;i-;while(i2);coutjend1;return 0;(分数:2.00)填空项 1:_ (正确答案:52)解析:解析 do-while 语句的特点:先执行循环体,后判断条件。第 1 次循环执行后
45、,j 和 i 的值分别为 10 和 9。判断循环条件为真,继续执行循环体,j 和 i 分别为 19 和 8。继续上述执行过程,直到 i 的值为 2 时,表达式“22”不再成立,退出循环。此时 j 的值为 52。37.以下程序的输出结果为 【7】 。#includeiostreamusing namespace std;void initialize(int printNo,int state=0);void initialize(int printNo=l,int state);int main() initialize();return 0;void initialize(int print
46、No,int state)coutprintNo“,“stateend1;(分数:2.00)填空项 1:_ (正确答案:1,0)解析:解析 本题考核带有默认值的函数,本题中函数 initialize()进行了两次函数原型的说明,使本来不带默认值的形参带上默认值。由于主函数中调用 initialize()时没有给定实参,所以函数自动调用其参数默认值,输出 1 和 0。38.有以下程序:#include iostreamusing namespace std;int main()int m5,n5,*px,*py,k;px=m;py=n;for(k=1;k4;k+)*px=k;*py=2*k;coutmk-1nk-1;px+;py+;coutend1;return 0;运行后的输出结果为 【8】 。(分数:2.00)填空项 1:_ (正确答案:122436)解析:解析 本题考核数组与指针之间的相互关系。题中定义了两个指针 px.py 并分别指向数组 m 和n,然后通过指针 px.和 py 分别给数组 m 和 n 赋值,并输出其赋值结果。39.利用继承能够实现 【9】 。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。