1、二级 C+笔试-372 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.有以下程序:#include iostream#include mathusing namespace std;class pointprivate:double x;double y;public:point(double a,double b) x=a;y=b;friend double distance(point a,point b) ;double distance(point a,point b) return sqrt (a.x-b.x)* (a.x-b.
2、x)+(a.y-b.y)*(a.y-b.y);int main ( )point pl(1,2);point p2 (5, 2);coutdistance (pl,p2) end1;return 0;程序运行后的输出结果是( )。(分数:2.00)A.1B.5C.4D.62.若有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void show()couta“, “bend1;class Derive : public Baseprivate
3、:int c, d;public:Derive(int x, int y, int z,int m):Base(x,y)c=z;d=m;void show()coutc“, “dend1;int main ( )Base b(50,50) ,*pb;Derive d(10,20,30,40);pb=pb-show );return 0;(分数:2.00)A.10,20B.30,40C.20,30D.50,503.数据的存储结构是指( )。(分数:2.00)A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据4.若有以下程序:#incl
4、ude iostreamusing namespaces std;class Apublic:A ()A (int i)x1=i;void dispa()cout“xl=“xl“ , “;private:int x1;class B : public Apublic:B ()B (int i):A(i+10)x2=i;void dispb()dispa ();cout “x2=“x2end1;private:int x2;int main ()B b(2);b.dispb ():return 0;程序运行后的输出结果是( )。(分数:2.00)A.x1=10,x2=2B.x1=12,x2=10
5、C.x1=12,x2=2D.x1=2,x2=25.下列关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的6.假定 MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.MyClass(int n);C.MyClass();D.MyClass();7.下列关于派生类的描述中,错误的是( )。(分数:2.00)A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它
6、的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变8.如下图所示的 4棵二叉树中,不是完全二叉树的是( )。(分数:2.00)A.B.C.D.9.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性10.下列关于纯虚函数与抽象类的描述中,错误的是( )。(分数:2.00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出11.有如下程序:#include iostrea
7、musing namespace std;class shapesprotected:int x, y;public:void setvalue(int d, int w=O)x=d;y=w;virtual void disp()=O;class square : public shapespublic:void disp ()coutx*yend1;int main ( )shapes *ptr;square s1;ptr=ptr-setvalue (10, 5) ;ptr-disp();return 0;执行上面的程序将输出( )。(分数:2.00)A.50B.5C.10D.1512.对于
8、建立良好的程序设计风格,下面有关数据说明描述错误的是( )。(分数:2.00)A.数据说明的次序规范化B.说明语句中变量安排有序化C.使用注释来说明复杂数据的结构D.数据说明次序可以任意排列13.下列关于 C+与 C语言的关系的描述中,( )是错误的。(分数:2.00)A.C语言是 C+语言的一个子集B.C+与 C语言是兼容的C.C+对 C语言进行了一些改造D.C+和 C语言都是面向对象的14.若有以下程序:#include iostreamusing namespace std;void sub(int x,int y, int *z)*z = y+x;int main()int a,b,
9、c;sub (8,4,sub (6, a, sub(a,b,couta“,15.下面程序的功能是( )。#include iostream#include stringusing namespace std;int main ()int i=1, n=0;char s80,*p;p=s;strcpy(p,“It is a book“);for (; *p != /0 ;p+)if(*p=)i=0;else if (i=0)n+; i=1; cout“n=“ nend1;return 0;(分数:2.00)A.统计字符串中的单词个数B.统计字符串中的空格个数C.统计字符串中的字母个数D.统计字符
10、串中的全部字符个数16.请选出以下程序段的输出结果 ( )。#include iostreamusing namespace std;#define MIN(x,y) (x)(y) ?(x) : (y)int main ()int i,j,k;i=10; j=15;k=10*MIN(i,j);coutkend1;return 0;(分数:2.00)A.15B.100C.10D.15017.以下内容不属于算法程序所占的存储空间的是( )。(分数:2.00)A.算法程序所占的空间B.输入的初始数据所占的存储空间C.算法程序执行过程中所需要的额外空间D.算法执行过程中所需要的存储空间18.以下 4个
11、选项中,属于浮点数常量的是( )。(分数:2.00)A.0x12B.-12345e-3C.le0.5D.e-519.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表20.C+语言中,while 循环和 do-while循环的主要区别是( )。(分数:2.00)A.do-while的循环体至少无条件执行一次B.while的循环控制条件比 do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句21.下列运算符中,( )运算符不能在 C+
12、中重载。(分数:3.00)A.?:B.+C.-D.=22.需求分析最终结果是产生( )。(分数:3.00)A.项目开发计划B.需求规格说明书C.设计说明书D.可行性分析报告23.设有以下语句,对 a数组元素的引用中(其中 0=i10),不正确的是( )。int a10=0,1,2,3,4,5,6,7,8,9),*p=a;(分数:3.00)A.ap-aB.*(class myClassprivate:int var;public:myClass(int i)var=i;void add()s+=var;static int s;void display()coutsend1;int myClas
13、s:s=0;int main ( )myClass a(1),b(2),c(3);a.add();b.add();c.dislay();return O;程序执行后的输出结果是( )。(分数:3.00)A.1B.4C.3D.725.在一个长度为 n的线性表中插入一个元素,最坏情况下需要移动的数据元素数目( )。(分数:3.00)A.1B.nC.n+1D.n/226.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是( )。(分数:3.00)A.failB.eofC.badD.good27.在 C+语言中,对函数参数默认值描述正
14、确的是( )。(分数:3.00)A.函数参数的默认值只能设定一个B.一个函数的参数若有多个,则参数默认值的设定可以不连续C.函数参数必须设定默认值D.在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值28.以于下面定义的类 MyClass, 在函数 f()中将对象成员 n的值修改为 50的语句应该是( )。class MyClasspublic:MyClass (int x)n=x;void SetValue(int n1)n=n1;private:int n;int f()MyClass *ptr = new MyClass(45);_;(分数:3.00)A.MyClass(50
15、)B.SetValue (50)C.ptr-SetValue(50)D.ptr-n=5029.数据库设计有两种方法,它们是( )。(分数:3.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.面向数据的方法和面向过程的方法D.结构特性设计和行为特性设计30.下列叙述中,正确的是( )。(分数:3.00)A.数据库的库结构包括数据库中各个记录的数据B.数据库中的数据不仅仅是数值型数据C.数据库管理系统的主要功能是建立数据D.数据库文件的结构不能由系统自动生成二、填空题(总题数:13,分数:30.00)31.从逻辑结构看,线性表是典型的 【1】 ,树是典型的 【2】 。(分数:4.00)填空
16、项 1:_32.在面向对象方法学中,直接反映了用户对目标系统的要求的模型是 【3】 。(分数:2.00)填空项 1:_33.软件测试的目的是尽可能发现软件中错误,通常 【4】 是在代码编写阶段可进行的测试,它是整个测试工作的基础。(分数:2.00)填空项 1:_34.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于 【5】 的联系。(分数:2.00)填空项 1:_35.假定 w、x、y、z、m 均为血型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(WX)?w:X;m=(my)?m:y;m=(mz)?m:z;则该程序运行后,m 的值是
17、【6】 。(分数:2.00)填空项 1:_36.函数 sstrcmp()的功能是对两个字符串进行比较。当 s所指字符串和 t所指字符串相等时,返回值为0:当 s所指字符串大于 t所指字符串时,返回值大于 0;当 s所指字符串大于 t所指字符串时,返回值大于 0(功能等同于 strcmp()。请填空。int Sstrcmp(char *S,char *t)while(*sreturn 【7】 ;(分数:2.00)填空项 1:_37.若有以下程序:#include iostreamusing namespace std;int f(int x, int y)return (y-x)*x;int m
18、ain()int a=3,b=4,c=5,d;d=f(f(a,b) ,f(a,c) );coutdend1;return 0;执行后的输出结果是 【8】 。(分数:2.00)填空项 1:_38.如果一个数组中的每个元素都是同一类的对象,则该数组被称为 【9】 。(分数:2.00)填空项 1:_39.表达式 c3=c1.operator+(c2)或 c3=operator+(c1,c2)还可以表示为 【10】 (分数:2.00)填空项 1:_40.下面程序的打印结果是 【11】 。#include iostreamusing namespace std;class Basepublic:Base
19、(int x)a=x;void show()couta;private:int a;class Derived : public Basepublic:Derived(int i) :Base(i+1) ,b(i) void show()coutb;private:int b;int main ( )Base b(5) , *pb;Derived d(1);pb=pb-show();return 0;(分数:2.00)填空项 1:_41.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。class MyClassint *x;public:MyClass(int a) :
20、MyClass();MyClass:MyClass(int a) 【12】 ;MyClass:MyClass()【13】 ;(分数:4.00)填空项 1:_42.有如下程序:#include iostreamusing namespace std;class AApublic:virtual void f()cout “AA“;class BB : public AApublic:BB()cout“BB“;class CC : public BBpublic:virtual void f()BB:f();cout “CC“;int main()AA aa,*p; BB bb; CC cc;p=
21、p-f();return O;运行后的输出结果 【14】 (分数:2.00)填空项 1:_43.若有以下程序:#include iostreamusing namespace std;int main()char str10;cinstr;cout strend1;return 0;当输入为:This is a program!那么执行程序后的输出结果是 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-372 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.有以下程序:#include iostream#include mathu
22、sing namespace std;class pointprivate:double x;double y;public:point(double a,double b) x=a;y=b;friend double distance(point a,point b) ;double distance(point a,point b) return sqrt (a.x-b.x)* (a.x-b.x)+(a.y-b.y)*(a.y-b.y);int main ( )point pl(1,2);point p2 (5, 2);coutdistance (pl,p2) end1;return 0;
23、程序运行后的输出结果是( )。(分数:2.00)A.1B.5C.4 D.6解析:解析 本题考核友元函数的应用。分析程序:类 point中定义了两个私有成员 x和 y,以及一个友元函数 distance()。从而,函数 distance可以访问类 point中的任何成员。在函数 distance()中,返回值为 sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)。由此可知,函数distance()的功能是计算 a、b 两点之间的距离。在主函数中,先定义两点:p1(1,2)和 p2(5,2)。然后调用函数 distance()计算两点之间的距离为4,所以程序最后
24、输出为 4。2.若有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void show()couta“, “bend1;class Derive : public Baseprivate:int c, d;public:Derive(int x, int y, int z,int m):Base(x,y)c=z;d=m;void show()coutc“, “dend1;int main ( )Base b(50,50) ,*pb;Deriv
25、e d(10,20,30,40);pb=pb-show );return 0;(分数:2.00)A.10,20 B.30,40C.20,30D.50,50解析:解析 本题考核基类指针的使用。本题首先定义了一个基类 Base和一个由 Base派生出来的派生类 Derive。在主函数中,定义了一个基类 Base指针吵和基类对象 b,还定义了派生类 Derive的对象 do然后将派生类对象 d的地址赋值给指向基类 Base的指针 pb。由于 Derive是 Base的子类型,因此允许上述赋值。但这时指针 pb只能使用从基类 Base继承的成员,即当 pb指向 d对象时,pb-show 还是调用基类
26、Base的成员函数 show()。所以程序最后输出的是对象 d中对基类成员的初始化值,即 10,20。3.数据的存储结构是指( )。(分数:2.00)A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示 C.数据在计算机中的顺序存储方式D.存储在外存中的数据解析:解析 数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般不可能相同。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据的物理结构。4.若有以下程序:#include iostreamusing namespaces std;class Apublic:A ()A (int i)x1=
27、i;void dispa()cout“xl=“xl“ , “;private:int x1;class B : public Apublic:B ()B (int i):A(i+10)x2=i;void dispb()dispa ();cout “x2=“x2end1;private:int x2;int main ()B b(2);b.dispb ():return 0;程序运行后的输出结果是( )。(分数:2.00)A.x1=10,x2=2B.x1=12,x2=10C.x1=12,x2=2 D.x1=2,x2=2解析:解析 本题考核派生类的构造函数。在 C+中,构造函数不能被继承,因此,派
28、生类的构造函数必须通过调用基类的构造函数宋初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数,使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。本题中,在派生类 B的构造函数中,调用基类 A的构造函数对基类 A的数据成员 x1 进行了初始化。5.下列关于成员函数特征的描述中,错误的是( )。(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的解析:解析 在 C+中,成员函数可以是内联函数,也可以是非内联函数。在类定义体内定义和实现
29、的函数都是内联函数。在类定义体外实现的函数可以通过在函数说明和定义上分别加上 inline来表示该函数是内联函数,否则就不是内联函数。6.假定 MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。(分数:2.00)A.voidMyClass();B.MyClass(int n);C.MyClass();D.MyClass(); 解析:解析 在 C+中,析构函数名为符号“”加类名,析构函数没有参数和返回值。根据以上知识可知,MyClass 类的正确析构函数的说明为MyClass()。7.下列关于派生类的描述中,错误的是( )。(分数:2.00)A.一个派生类可以作为另一个派生类
30、的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变 解析:解析 基类与派生类的关系如下:基类是对派生类的抽象,派生类是对基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加信息将抽象的基类变为某种有用的类型,派生类是基类定义的延续。派生类是基类的组合。公有派生类的对象可以作为基类的对象处理。由此可知选项 A、B 和 C都是正确的。而在继承中,采用不同的继承方式,将限制派生类对基类成员的访问。所以选项 D是错误的。8.如下图所示的 4棵二叉树中,不是完全二叉树的是( )。(分数:2.00)A.B
31、.C.D. 解析:解析 本题考查完全二叉树的概念。完全二叉树是指除最后一层外,每一层上的节点数都达到最大值;在最后一层上只缺少右边的若干节点。选项 D中第 2层的左边节点没有达到最大值。9.结构化程序设计主要强调的是( )。(分数:2.00)A.程序的规模B.程序的易读性 C.程序的执行效率D.程序的可移植性解析:解析 采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,从而便于编写程序;二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。10.下列关于纯虚函数与抽象类的描述中,错误的是( )。(分数:2.
32、00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现 B.抽象类是指具有纯虚函数的类C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出解析:解析 本题考核纯虚函数和抽象类的定义。基类的虚函数有时候不可能被调用到,这时可定义该虚函数为纯虚函数。纯虚函数没有函数体,但一定要进行说明,它告诉编译器,它的具体实现在派生类中。所以选项 A的说法是错误的。抽象类是指至少有一个纯虚函数的类。它往往表示一些抽象的概念,它的成员函数没有什么意义。所以选项 B的描述是正确的。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次
33、结构的上层。抽象类的主要作用是将有关的类组织在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根派生出来的。对于抽象类的使用有几点规定:抽象类只能用作其他类的基类,不能建立抽象类对象。抽象类不能用作参数类型、函数返回类型或显式转换的类型。可以说明指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。由此可知选项 C和 D的描述是正确的。11.有如下程序:#include iostreamusing namespace std;class shapesprotected:int x, y;public:void setvalue(int d, int w=O)x=
34、d;y=w;virtual void disp()=O;class square : public shapespublic:void disp ()coutx*yend1;int main ( )shapes *ptr;square s1;ptr=ptr-setvalue (10, 5) ;ptr-disp();return 0;执行上面的程序将输出( )。(分数:2.00)A.50 B.5C.10D.15解析:解析 本题中基类 shapes是一个抽象类(拥有纯虚函数 disp()。在主函数中定义了抽象类的对象指针 ptr,并给它赋值派生类 square的对象 s1,然后进行赋值和输出的操作
35、。12.对于建立良好的程序设计风格,下面有关数据说明描述错误的是( )。(分数:2.00)A.数据说明的次序规范化B.说明语句中变量安排有序化C.使用注释来说明复杂数据的结构D.数据说明次序可以任意排列 解析:解析 数据说明的风格对建立良好的程序设计风格很重要,良好的数据说明的风格要求数据说明的次序规范化、说明语句中变量安排有序化、使用注释来说明复杂数据的结构。满足要求的数据说明的风格才能使程序中的数据说明更容易理解和维护。13.下列关于 C+与 C语言的关系的描述中,( )是错误的。(分数:2.00)A.C语言是 C+语言的一个子集B.C+与 C语言是兼容的C.C+对 C语言进行了一些改造D
36、.C+和 C语言都是面向对象的 解析:解析 C+语言起源于 C语言。C+是 C语言的超集,即 C语言是 C+语言的一个子集,同时 C+语言与 C语言是兼容的。C+对 C语言作了很多改进,引进了类和对象的概念。但是 C语言是面向过程而不是面向对象的。14.若有以下程序:#include iostreamusing namespace std;void sub(int x,int y, int *z)*z = y+x;int main()int a,b, c;sub (8,4,sub (6, a, sub(a,b,couta“,解析:解析 本题考核对指针作为函数的参数的理解程度。分析程序:函数 s
37、ub()为 void型。函数的形参中,z 是一个血型的指针变量,因此它只能从实参接收一个血型变量的地址。在函数 sub()体中,语句:“*z=y+x;”的功能是把形参 y与 x的和值放入形参 z所指的存储单元中。在主函数中,3 次调用 sub()函数。第一次调用时,把 8和 4分别传递给形参 x和 y,把主函数中变量a的地址传递给形参 z,这样形参就指向了主函数中的变量 a,在 sub函数中执行语句“*z=y+x;”后,把 12放入 z所指的存储单元中,即变量 a被赋值 12。以此类推,最后 b被赋值 18,c 被赋值 30。所以最后输出是 12,18,30。15.下面程序的功能是( )。#i
38、nclude iostream#include stringusing namespace std;int main ()int i=1, n=0;char s80,*p;p=s;strcpy(p,“It is a book“);for (; *p != /0 ;p+)if(*p=)i=0;else if (i=0)n+; i=1; cout“n=“ nend1;return 0;(分数:2.00)A.统计字符串中的单词个数B.统计字符串中的空格个数 C.统计字符串中的字母个数D.统计字符串中的全部字符个数解析:解析 本题通过 for循环对字符串进行扫描,遇到0结束扫描。程序首先将 i的值置为
39、 1,n的值置为 0。在 for循环中,通过 if语句判断*p 指向的字符是否为空格,如果是空格则将 i的值置为0,而在 else if语句,如果 i的值为 0,则 n+,然后将 i的值重新置为 1。如此反复,最后统计出字符串中的空格个数。16.请选出以下程序段的输出结果 ( )。#include iostreamusing namespace std;#define MIN(x,y) (x)(y) ?(x) : (y)int main ()int i,j,k;i=10; j=15;k=10*MIN(i,j);coutkend1;return 0;(分数:2.00)A.15 B.100C.10
40、D.150解析:解析 本题考查对宏定义的掌握程度。本题最常见的错误就是想当然地先把 i、 j 代入 MIN(i,j),得到值 10,然后在计算表达式 k=10*10=100,得到答案 100。其实不然,在使用宏替换时,应该充分理解宏替换仅是简单地用所说明的字符串来替代对应的标识符。所以,应当先把宏定义代入到表达式k=10*MIN(i,j)中,得到:k =10*1015?10:15,再按照运算符的优先级和结合性计算,最后得到k=15。17.以下内容不属于算法程序所占的存储空间的是( )。(分数:2.00)A.算法程序所占的空间B.输入的初始数据所占的存储空间C.算法程序执行过程中所需要的额外空间
41、D.算法执行过程中所需要的存储空间 解析:解析 一个算法程序所占的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法程序执行过程中所需要的额外空间,而不是算法执行过程中所需要的存储空间。因此,答案为D。18.以下 4个选项中,属于浮点数常量的是( )。(分数:2.00)A.0x12B.-12345e-3 C.le0.5D.e-5解析:解析 C+语言中的浮点数常量分为整数部分和小数部分,一个浮点数常量可以用科学计数法和通常的十进制数表示法:在十进制数表示法中,浮点数常量由整型、小数点和小数 3部分组成,其中整数部分或小数部分可以没有,如 12,0.9 等。在科学计数表示法中,浮
42、点常量是由尾数、字母 e或 E和指数 3部分组成,其中,尾数部分可以是十进制整型常量,或属于第一种形式的实数,指数部分则是十进制的短整型常量,如 10e2、1.432e2、0.4e-5等。观察所给出的 4个选项,选项 A是一个十六进制的整型常量;选项 C的指数部分不是整型常量;选项 D中在前面无整数。所以选项 A、C、D 都不符合上述形式。19.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接 C.关联、更新、排序D.显示、打印、制表解析:解析 关系数据库系统的特点之一是它建立在数学理论的基础上,有很多数学理论可以表示关系模型的数据操
43、作。选项 A、C、D 都不属于关系运算。20.C+语言中,while 循环和 do-while循环的主要区别是( )。(分数:2.00)A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比 do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句解析:解析 本题考核 C+语言中 while循环和 do-while循环之间的区别。do-while 语句与 while语句不同的是,do-while 循环中的语句至少会执行一次,而 while语句中当条件在第一次循环就不满足时,语句一次也不会执行。21.下列运算符
44、中,( )运算符不能在 C+中重载。(分数:3.00)A.?: B.+C.-D.=解析:解析 C+中,“:、*、?:”这 4个运算符不能重载。22.需求分析最终结果是产生( )。(分数:3.00)A.项目开发计划B.需求规格说明书 C.设计说明书D.可行性分析报告解析:解析 本题考核软件工程中的需求分析环节。需求分析应交付的主要文档就是需求规格说明书。23.设有以下语句,对 a数组元素的引用中(其中 0=i10),不正确的是( )。int a10=0,1,2,3,4,5,6,7,8,9),*p=a;(分数:3.00)A.ap-aB.*(class myClassprivate:int var;
45、public:myClass(int i)var=i;void add()s+=var;static int s;void display()coutsend1;int myClass:s=0;int main ( )myClass a(1),b(2),c(3);a.add();b.add();c.dislay();return O;程序执行后的输出结果是( )。(分数:3.00)A.1B.4C.3 D.7解析:解析 本题考核静态数据成员的应用。解本题的关键是知道静态数据成员类中所有对象共享的成员。每个对象对静态数据成员的操作具有叠加效果。本题在类 myClass 中定义了一个静态数据成员 s
46、,其初始值为 0。定义了 3个对象 a、b 和 c,并分别初始化各自的私有成员 n为 1、2 和 3。执行“a.add();”语句后,静态数据成员 s=1。再执行语句“b.add();”后,s 的值变为 3。最后执行输出语句“c.display();”,即输出 s的值 7。25.在一个长度为 n的线性表中插入一个元素,最坏情况下需要移动的数据元素数目( )。(分数:3.00)A.1B.n C.n+1D.n/2解析:解析 在一般情况下,要在第 i个元素之前插入一个新元素时,首先是从最后一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后移动一个位置,移动结束后,第 i个位置就被空出,然
47、后将新元素插入到第 i项。最坏情况指的是在线性表的第 1个元素之前插入一个新元素,则需要移动表中所有的元素,答案为 B。26.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是( )。(分数:3.00)A.fail B.eofC.badD.good解析:解析 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is open():判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false。函数 good():刚进行的操作成功时返回 true,否则返回 false。函数 fail():与 good()相反,刚进行的操作失败时返回 true,否则返回 false。函数 bad():如果进行了非法操作返回 true,否则返回 false。函数 eof():进行输入操作时,若到达文件尾返回 true,否则返回 false。其中,eof 函数只能用于输入流操作。27.在 C+语言中,对函数参数默认值描述正确的是( )。(分数:3.00)A.函数参数的默认值只能设定一个B.一个函数的参数若有多个,则参数默认值的设定可以不连续C.函数参数必须设定默认值D.在设定参数的默认值后,该参数后面定义的所有参数都