1、二级 C+笔试-13 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列字符串中,不可以用作 C+标识符的是(分数:2.00)A.y_2006B._FEST_HC.ReturnD.switch2.如下程序的输出结果是 #includeiostream #includeiomanip using namespace std; class CSum int x,y; public: CSum(int x0,int y0):X(x0),y(y0) friend ostream& operator(ostream& os,const CSu
2、m& xA) ossetw(5)xa.x+xa.y: return os; ; int main( ) CSum y(3,5); coutsetfill(*)8; couty; return 0; (分数:2.00)A.88B.*88C.*8*8D.8*83.下列是关于派生类声明的开始部分,其中正确的是(分数:2.00)A.class virtual B:publice AB.virtual class B:publice AC.class B:public A virtalD.class B:virtual public A4.在表达式 x-y 中,“-”是作为非成员函数重载的运算符。若使用
3、显式的函数调用代替直接使用运算符“-”,这个表达式还可以表示为(分数:2.00)A.xoperator-(y)B.operator-(y,x)C.y operator-(x)D.operator-(x,y)5.用树状结构表示实体之间联系的模型是(分数:2.00)A.关系模型B.网状模型C.层次模型D.以上 3 个都是6.已知 outfile 是一个输出流对象,要想将 outfile 的文件指针定位到当前位置之前 321 字节处,正确的函数调用语句是(分数:2.00)A.outfileseekp(321,ios_base:cur);B.outfileseekp(321,ios_base:beg)
4、;C.outfileseekp(-321,ios_base:beg);D.outfileseekp(-321,ios_base:cur);7.有如下函数模板: template T souare(T x)(returll x * x;) 其中 T 是(分数:2.00)A.函数形参B.函数实参C.模板形参D.模板实参8.有如下程序: #includeiostream using namespace std; class Base protected:int i; public:int j; ; class Derived:public Base int m; public:int n; ; in
5、t main( ) Derived d; di=0; /1 d.j=0; /2 dn1=0; /3 dn=0; /4 return 0; 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是(分数:2.00)A.1和2B.1和3C.2和3D.2和49.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指(分数:2.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上 3 种说法都不对10.通过运算符重载,可以改变运算符原有的(分数:2.00)A.操作数类型B.操作数个数C.优先级D.结合性11.为了取代 C 中带参数的宏,在 C+
6、十中使用(分数:2.00)A.重载函数B.内联函数C.递归函数D.友元函数12.在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是(分数:2.00)A.后缀一元运算符B.前缀一元运算符C.无操作数的运算符D.二元运算符13.下列叙述中正确的是(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题14.下列数据结构中,能用二分法进行查找的是(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表15.有如下程
7、序段,其中会产生编译错误的语句是 inti=0,j=1; int r=i; / r=j; / int * p=i; / * p=r; /(分数:2.00)A.B.C.D.16.已知在函数 func 中语句 this-ff=0;与语句 ff=0;的效果完全相同。对于这一现象,下列叙述中错误的是(分数:2.00)A.ff 是某个类的数据成员,func 是该类的友元函数B.ff 是某个类的数据成员,func 是该类的成员函数C.this-ff 和 ff 是同一个变量D.func 不是一个静态成员函数17.字面常量 42、4.2、42L 的数据类型分别是(分数:2.00)A.long、double、i
8、ntB.long、float、intC.int、double、longD.int、float、long18.下列叙述中错误的是(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 成员B.私有继承时基类中的 protected 成员在派生类中仍是 protected 成员C.私有继承时基类中的 public 成员在派生类中是 private 成员D.保护继承时基类中的 public 成员在派生类中是 protected 成员20.下列关于栈的描述中正确的是(分数:2.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的
9、线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素21.下列叙述中正确的是(分数:2.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试22.为了使模块尽可能独立,要求(分数:2.00)A.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强B.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱C.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱D.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强23.有如下程序: #includeiostream using
10、 namespaee std; class Demo public: Demo( )cout“default constructor/n“; Demo(const Demo x)cout“copy constructor/n“; ; Derno userCore(DemoB) Demo c(B) ;return c; int main( ) Demo a,d; cout“calling userCode( )/n“; d=userCode(A) ; return 0; 执行上面程序的过程中,构造函数 Demo( )和Demo(const Demo &x)被调用的次数分别为(分数:2.00)A.
11、1 和 1B.1 和 2C.2 和 3D.2 和 424.有如下程序: #includecstring #includeiostream using namespace std; class MyString public: MyString(const char * s); MyString( )delete data; protected: unsigned len; char * data; ; MyString:MyString(const char * s) len=strlen(s); data=new char1en+1; strcpy(data,s); int main( )
12、MyString a(“C+Progreanfing“); MyString b(A) ; return 0; 在运行上面的程序时出错,错误的原因是(分数:2.00)A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深复制)的复制构造函数C.构造对象 a 时实参与形参类型不符D.系统不能生成缺失的复制构造函数25.使用输入/输出操作符 setw,可以控制(分数:2.00)A.输出精度B.输出宽度C.对齐方式D.填充字符26.下列对于软件的叙述中正确的是(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中
13、的错误D.软件测试的目的是使程序符合结构化原则27.下列函数模板定义中错误的是(分数:2.00)A.templateclass QB.templateclass Q Q F(Q x)return Q+x; Q F(Q x)return x+x;C.templateclass TD.templateclass T T F(T x)return x * x; bool F(T x)return x1;28.下列关于派生类构造函数和析构函数的叙述中,错误的是(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有默认构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,
14、先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数29.下列叙述中正确的是(分数:2.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合30.执行下列语句段后,输出字符“*”的个数是 for(int i=50;il;-i)cout”*”(分数:2.00)A.48B.49C.50D.5131.有如下程序: #includeiostream using namespace std; class Stack public: Stack(unsignedn=10):s
15、ize(n)rep_=new intsize;top=0; Stack(Stack& s):size(s.size) rep_=new intsize; fbr(inti=0;isize;i+)rep_i=s.rep_i; top=s.top; Stack( )delete rep_; void push(int A) rep 一_top=a;top+; int pop( )-top;return rep_top; b001 isEmpty( )constreturn top=0; private: int * rep_; unsigned size,top; ; int main( ) St
16、ack sl; for(int i=1;i5;i+)s1push(i); Stack s2(s1); for(i=1;i3;i+)cout-s2pop( ),; s2pusl:(6); s1push(7); while(!s2isEmpty( )couts2pop( ),; return 0: 程序的输出结果是(分数:2.00)A.4,3,2,1,B.4,3,6,7,2,1,C.4,3,6,2,1,D.1,2,3,4,32.在下面的定义语句中,画线处应填入的内容是 class Fred public: void print( )coutdataendl; void setData(double
17、 D) data=d; static int count; private: double data; ; _count=0;/静态数据成员的定义(分数:2.00)A.intB.static intC.int Fred:D.static int Fred:33.下列关于类定义的叙述中,正确的是(分数:2.00)A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义34.如下程序的输出是 #includeiostream using namespace std; class Base public: Base( )c
18、out“BB“;f( ); void f( )cout“Bf“; ; class Derived:public Base public: Derived( )eout“DD“; void f( )cout“Df“; ; int main( )Derived d;return 0;(分数:2.00)A.BBBff)DB.BBDfDDDfC.DDD.DDBBBf35.下列叙述中正确的是(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存
19、储结构,且各种存储结构影响数据处理的效率二、B填空题/B(总题数:15,分数:30.00)36.在深度为 7 的满二叉树中,度为 2 的结点个数为 1。(分数:2.00)填空项 1:_37.软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 1 测试。(分数:2.00)填空项 1:_38.在数据库系统中,实现各种数据管理功能的核心软件称为 1。(分数:2.00)填空项 1:_39.软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 1 阶段。(分数:2.00)填空项 1:_40.在结构化分析使用的数据流图(DFD) 中,利用_对其中的图形元素进行确切解释。(
20、分数:2.00)填空项 1:_41.C+中只有两个逻辑常量:true 和 1。(分数:2.00)填空项 1:_42.若要访问指针变量 p 所指向的数据,应使用表达式 1。(分数:2.00)填空项 1:_43.已知一个函数的原型是: int fn(toubie x); 若要以 5.27 为实参调用该函数,应使用表达式_。(分数:2.00)填空项 1:_44.有如下定义: class MA int value: public: MA(int n=0):v;alut(n) ; MA * ta,tb: 其中 MA 类的对象名标识符是_。(分数:2.00)填空项 1:_45.如下类定义中包含了构造函数和
21、复制构造函数的原型声明,请在画线处填写正确的内容,使复制构造函数的声明完整。 class my(21ass private: int data: public: MyClass(int value);/构造函数 MyClass(const_anotherObject); /复制构造函数(分数:2.00)填空项 1:_46.用来派生新类的类称为 1,而派生出的新类称为它的子类或派生类。(分数:2.00)填空项 1:_47.有如下程序: #includeiostream using namespace std; class CA public: CA( )coutA; ; class CB:pri
22、vate CA public: CB( )coutB; ; int main( ) CA a; CB b; return 0; 运行时的输出结果是_。(分数:2.00)填空项 1:_48.若将一个二元运算符重载为类的成员函数,其形参个数应该是 1 个。(分数:2.00)填空项 1:_49.有如下程序: #includeiostream using namespace std; class DA int k; public: DA(int x=1):k(X) DA( )coutk; ; int main( ) DA d =DA(3),DA(3),DA(3); DA * P=new DA2; de
23、lete P; return 0; 程序的输出结果是_。(分数:2.00)填空项 1:_50.C+语言中的多态性分为编译时的多态性和 1 时的多态性。(分数:2.00)填空项 1:_二级 C+笔试-13 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列字符串中,不可以用作 C+标识符的是(分数:2.00)A.y_2006B._FEST_HC.ReturnD.switch 解析:解析 在 C+中,变量标识符必须是以大小写字母、下画线开始,由数字或者字母下画线等组成的一个字符串,其中 C+关键字不能作为标识符,不能包含-、+、*、/等运
24、算符号。C+变量区分大小写,所以 Retrun 不是关键字,而是一个合法变量;swith 为关键字,所以不能定义为标示符。2.如下程序的输出结果是 #includeiostream #includeiomanip using namespace std; class CSum int x,y; public: CSum(int x0,int y0):X(x0),y(y0) friend ostream& operator(ostream& os,const CSum& xA) ossetw(5)xa.x+xa.y: return os; ; int main( ) CSum y(3,5); c
25、outsetfill(*)8; couty; return 0; (分数:2.00)A.88B.*88C.*8*8D.8*8 解析:解析 输出流控制中,如果没有指定对齐方式,则默认为左对齐、右填充,CSum 类使“”运算符出栈,并将输出控制为宽度为 5,coutsetfill(*)8;执行时就打印 8*,然后执行couty;打印 8,故答案为 D。3.下列是关于派生类声明的开始部分,其中正确的是(分数:2.00)A.class virtual B:publice AB.virtual class B:publice AC.class B:public A virtalD.class B:vir
26、tual public A 解析:解析 派生类的声明格式如下: class 派生类名:继承方式基类名派生类的数据成员和成员函数 virtual 为虚继承,是继承方式,所以应该放在派生类名后面。4.在表达式 x-y 中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可以表示为(分数:2.00)A.xoperator-(y) B.operator-(y,x)C.y operator-(x)D.operator-(x,y)解析:解析 非成员函数重载的运算符的显示调用格式为:aaoperatorbb,其中是重载运算符号。5.用树状结构表示实体之间联系的模
27、型是(分数:2.00)A.关系模型B.网状模型C.层次模型 D.以上 3 个都是解析:解析 实体之间的关系模型包括层次模型、网状模型和关系模型,其中,层次模型可以由树状结构来表示。6.已知 outfile 是一个输出流对象,要想将 outfile 的文件指针定位到当前位置之前 321 字节处,正确的函数调用语句是(分数:2.00)A.outfileseekp(321,ios_base:cur);B.outfileseekp(321,ios_base:beg);C.outfileseekp(-321,ios_base:beg);D.outfileseekp(-321,ios_base:cur);
28、 解析:解析 在文件中偏移定位时的初始值 ios:base_beg 将指针定位在文件的开始位置;ios:base_cur 将指针定位在文件的当前位置;ios:base_end 将指针定位在文件的结束位置。从当前位置往后偏移量为正,从当前位置往前偏移,偏移量为负。7.有如下函数模板: template T souare(T x)(returll x * x;) 其中 T 是(分数:2.00)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析 函数模板定义的一般格式为: Templatetypename 类型参数返回类型 函数名(模板形参表)函数体8.有如下程序: #includeios
29、tream using namespace std; class Base protected:int i; public:int j; ; class Derived:public Base int m; public:int n; ; int main( ) Derived d; di=0; /1 d.j=0; /2 dn1=0; /3 dn=0; /4 return 0; 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是(分数:2.00)A.1和2B.1和3 C.2和3D.2和4解析:解析 基类被派生类公有派生时,可以在派生类中访问基类中的公有数据成员和保护数据成员,私有数据成员在
30、派生类中不能被直接访问,保护数据成员和私有数据成员均不能被派生类对象直接访问。如果一个类的数据成员没有被限定就会被默认为私有数据成员,私有数据成员不能直接被类对象访问。9.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指(分数:2.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上 3 种说法都不对 解析:解析 数据独立性是指建立在数据的逻辑结构和物理结构分离的基础上,用户以简单的逻辑结构操作数据而无须考虑数据的物理结构,转换工作由数据库管理系统实现。数据独立性分为数据的物理独立和数据的逻辑独立。10.通过运算符重载,可以改变
31、运算符原有的(分数:2.00)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析 运算符重载不能改变运算符原有的优先级、结合特性和操作数个数。运算符重载不能创建新的运算符,运算符重载可以改变运算符参数的类型和返回值的类型。11.为了取代 C 中带参数的宏,在 C+十中使用(分数:2.00)A.重载函数B.内联函数 C.递归函数D.友元函数解析:解析 内联函数是 inline,当程序中出现对该函数的调用时,编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参代替形参。一般在程序运行时不再进行函数调用,代替了 C 语言中的宏定义。12.在重载一个运算符为成员函数时,其参数表中没有
32、任何参数,这说明该运算符是(分数:2.00)A.后缀一元运算符B.前缀一元运算符 C.无操作数的运算符D.二元运算符解析:解析 在成员函数重载中,一元函数重载在函数声明中可以没有任何形参,操作数就是对象本身;但是作为后缀运算符重载时,则必须在形参中添加参数。13.下列叙述中正确的是(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:解析 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量
33、、降低成本。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。14.下列数据结构中,能用二分法进行查找的是(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分法查找的前提条件是被查找的线性表必须是有序的。15.有如下程序段,其中会产生编译错误的语句是 inti=0,j=1; int r=i; / r=j; / int * p=i; / * p=r; /(分数:2.00)A. B.C.D.解析:解析 赋值运算符不能将 in
34、t 地址(指针)赋值给 int 变量。16.已知在函数 func 中语句 this-ff=0;与语句 ff=0;的效果完全相同。对于这一现象,下列叙述中错误的是(分数:2.00)A.ff 是某个类的数据成员,func 是该类的友元函数 B.ff 是某个类的数据成员,func 是该类的成员函数C.this-ff 和 ff 是同一个变量D.func 不是一个静态成员函数解析:解析 类的静态数据成员和友元函数,不能拥有 this 指针。17.字面常量 42、4.2、42L 的数据类型分别是(分数:2.00)A.long、double、intB.long、float、intC.int、double、l
35、ongD.int、float、long 解析:解析 根据题干可知,分别为整型、浮点型和长整型。18.下列叙述中错误的是(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 成员B.私有继承时基类中的 protected 成员在派生类中仍是 protected 成员 C.私有继承时基类中的 public 成员在派生类中是 private 成员D.保护继承时基类中的 public 成员在派生类中是 protected 成员解析:解析 在私有继承方式下,所有的类成员都继承为私有成员。解析:解析 只有在目标声明中,typename 和 class 才可以相互替换,即
36、 typename 可以被 class 替换,而有的 class,不一定能被 typename 替换。20.下列关于栈的描述中正确的是(分数:2.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:解析 栈是一种数据结构,是在某一端进行插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。在栈顶进行插入或删除操作,不需要修改栈底指针。栈的实现可以采用顺序存储也可以采用链表存储。21.下列叙述中正确的是(分数:2.0
37、0)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试 D.程序经调试改错后不必进行再测试解析:解析 程序设计是指设计、编制和调试程序的方法和过程。软件测试的原则:软件开发人员即程序员应当避免测试自己的程序。应尽早地、不断地进行软件测试,而且必须反复地分阶段进行测试。22.为了使模块尽可能独立,要求(分数:2.00)A.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强B.模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱 C.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱D.模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强解析:解析
38、为了使模块尽可能独立,要求模块的内聚程度尽量高,且各模块之间的耦合程度要尽量弱。23.有如下程序: #includeiostream using namespaee std; class Demo public: Demo( )cout“default constructor/n“; Demo(const Demo x)cout“copy constructor/n“; ; Derno userCore(DemoB) Demo c(B) ;return c; int main( ) Demo a,d; cout“calling userCode( )/n“; d=userCode(A) ; r
39、eturn 0; 执行上面程序的过程中,构造函数 Demo( )和Demo(const Demo &x)被调用的次数分别为(分数:2.00)A.1 和 1B.1 和 2C.2 和 3 D.2 和 4解析:解析 无参构造函数调用和复制构造函数调用的 Demo a,d;调用 2 次无参构造函数 Demo( ),在Demo userCore(Demo B) Demo c(B) ;return c;函数中,Demo b 调用一次复制构造函数,Demo c(B) 调用一次复制构造函数,在函数返回值时还要调用一次复制构造函数,故 Demo(const Demo x)的调用次数为 3 次。24.有如下程序:
40、 #includecstring #includeiostream using namespace std; class MyString public: MyString(const char * s); MyString( )delete data; protected: unsigned len; char * data; ; MyString:MyString(const char * s) len=strlen(s); data=new char1en+1; strcpy(data,s); int main( ) MyString a(“C+Progreanfing“); MyStr
41、ing b(A) ; return 0; 在运行上面的程序时出错,错误的原因是(分数:2.00)A.构造函数的实参不允许是本类的对象B.没有定义实现深层复制(深复制)的复制构造函数 C.构造对象 a 时实参与形参类型不符D.系统不能生成缺失的复制构造函数解析:解析 当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析构时,会出现指针丢失现象。25.使用输入/输出操作符 setw,可以控制(分数:2.00)A.输出精度B.输出宽度 C.对齐方式D.填充字符解析:解析 setw(n)设置域宽为 n,用于输出。26.下列对于软件的叙述中正确的是(分数:2.00)A.软
42、件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。27.下列函数模板定义中错误的是(分数:2.00)A.templateclass Q B.templateclass Q Q F(Q x)return Q+x; Q F(Q x)return x+x;C.templateclass TD.templateclass T T F(T x)return x * x; bool F(T x)ret
43、urn x1;解析:解析 在函数模板定义中,类型参数不能参与运算。28.下列关于派生类构造函数和析构函数的叙述中,错误的是(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有默认构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析 在通常情况下,派生类和基类的构造函数的执行顺序为:先执行基类的构造函数,然后执行派生类的构造函数;当撤销派生类对象时,先执行派生类的析构函数,随后再执行基类的析构函数。29.下列叙述中正确的是(分数:2.00
44、)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合 解析:解析 软件是一系列按照特定顺序组织的计算机数据和指令的集合。软件并不只是包括在计算机上运行的程序,与这些程序相关的文档也被认为是软件的一部分。简单地说,软件就是程序加文档和数据的集合体。30.执行下列语句段后,输出字符“*”的个数是 for(int i=50;il;-i)cout”*”(分数:2.00)A.48B.49 C.50D.51解析:解析 for(int i=50;i1;-i),i 为 502,故打印 49 个*。31.有如下程序: #includeiostr
45、eam using namespace std; class Stack public: Stack(unsignedn=10):size(n)rep_=new intsize;top=0; Stack(Stack& s):size(s.size) rep_=new intsize; fbr(inti=0;isize;i+)rep_i=s.rep_i; top=s.top; Stack( )delete rep_; void push(int A) rep 一_top=a;top+; int pop( )-top;return rep_top; b001 isEmpty( )constretu
46、rn top=0; private: int * rep_; unsigned size,top; ; int main( ) Stack sl; for(int i=1;i5;i+)s1push(i); Stack s2(s1); for(i=1;i3;i+)cout-s2pop( ),; s2pusl:(6); s1push(7); while(!s2isEmpty( )couts2pop( ),; return 0: 程序的输出结果是(分数:2.00)A.4,3,2,1,B.4,3,6,7,2,1,C.4,3,6,2,1, D.1,2,3,4,解析:解析 堆栈组织元素的原则是“先进后出”,Stack s2(s1);使用复制构造函数新建 s2,里面有元素 1,2,3,4。for(i=1;i3;i+)couts2pop( ),;使栈顶元素 4,3 出栈,s2push(6)将 6 压入栈顶。while(!s2isEmpty( ) couts2pop( ),;使元素 6,2,1 出栈,故答案为 4,3,6,2,1。32.在下面的定义语句中,画线处