1、二级 C+笔试-163 及答案解析(总分:98.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.数据的存储结构是指(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构中计算机中的表示4.如下程序的输出结果是 #incl
2、udeiostream using namespace std; class A public: A( )cout“A“; ; class Bpublic:B( )cout“B“; class C:public A B b; public: C( )cout“C“; ; int main( )C obj;return 0;(分数:2.00)A.CBAB.BACC.ACBD.ABC5.下列关于 C+流的叙述中,正确的是(分数:2.00)A.cin是一个输入流对象B.可以用 ifstream定义一个输出流对象C.执行语句序列 char*y=“PQMNIt“;couty;将输出字符串“PQMN“的地
3、址D.执行语句序列 char x80;cingetllne(x,80);时,若输入 Happyr new year 则 x中的字符串是“HaPPy“。6.下列对于线性链表的描述中正确的是(分数:2.00)A.存储空间不一定是连续的,且各元素的存储顺序是任意的B.存储空间不一定是连续的,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的7.已知枚举类型定义语句为: enunl Token NAME,NUMBER,PLUS=5,MINUS,PRINT=10 ; 则下列叙述中错误的是(分数:2.00)A.枚举常量
4、 NAME的值为 1B.枚举常量 NuMBER的值为 1C.枚举常量 MINus的值为 6D.枚举常量 PRINT的值为 108.如下程序的输出结果是 #includeiostream using namespaee std; int main( ) eout.fill(*); eout.width(6); cout.fill(#): eout(123endl: return 0; (分数:2.00)A.#123B.123#C.*123D.123*9.要定义一个具有 5个元素的一维数组 veer,并使其各元素的初值依次是 30、50、-88、0 和 0,则下列定义语句中错误的是(分数:2.00
5、)_10.对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(分数:2.00)A.log2nB.n/2C.nD.n+111.有如下类声明: class XA int x; public: XA(int U)x=n; ; class XB:public XA int y; public: XB(int a,int B) ; ; 在构造函数 XB的下列定义中,正确的是(分数:2.00)A.XB:XB(int a,intB.:x(A) ,y(B) B) XB:xB(int a,intB) :XA(A) ,y(B)C.XB:XB(int a,D.XB:XB(i12.下列关于模板的叙述中,
6、错误的是(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”和“”括起来的部分是模板的形参表C.类模板不能有数据成员D.在一定条件下函数模板的实参可以省略13.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func的调用中,错误的是(分数:2.00)A.func(3,5);B.func(30,55);C.func(3,55);D.funeint(3,55);14.下列关于 this指针的叙述中,正确的是(分数:2.00)A.任何与类相关的函数都有 this指针B.类的成员函
7、数都有 this指针C.类的友元函数都有 this指针D.类的非静态成员函数才有 this指针15.如下程序的输出结果是 #includeiostream void fun(int X,inty)intt=x;x=y;y=t; int main( ) int a2=23,42; fun(a1,a0); std:couta0“,“a1std:endl; return 0; (分数:2.00)A.42,42B.23,23C.23,42D.42,2316.有如下类声明: class Fooint bar; 则 Foo类的成员 bar是(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员
8、D.私有成员函数17.有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get( )constreturn k; ; class MyDERIVED:protected MyBASE protected: intj; public: void set(int m,int n)MyBASE:set(m);j=n; int get( )constreturn MyBASE:get( )+j; ; 则类 MyDERIVED中保护的数据成员和成员函数的个数是(分数:2.00)A.4B.3C.2D.118.对于长度为 n的线性表,在最
9、坏情况下,下列各排序法所对应的比较次数中正确的是(分数:2.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/219.有如下程序: #includeiostream using namespace std; class BASE public: BASE( )cout“BASE“; ; class DERIVED:public BASE public: DERIVED( )cout“DERIVED“; ; int main( )DERIVED x;return 0; 程序的输出结果是(分数:2.00)A.BASEB.DERIVEDC.BASEDERI
10、VEDD.DERIVEDBASE20.下列关于运算符重载的叙述中,正确的是(分数:2.00)_21.下列关于 C+函数的叙述中,正确的是(分数:2.00)A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明D.函数不能自己调用自己22.在 C+中,用于实现运行时多态性的是(分数:2.00)A.内联函数B.重载函数C.模板函数D.虚函数23.下列叙述中正确的是(分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期便结束D.软件维护是指修复程序中被破坏的指令24.在下列函数原型中,可以作为类 AA构造
11、函数的是(分数:2.00)A.void AA(int);B.int AA( );C.AA(int)eonst;D.AA(int);25.执行语句序列 inti=0;while(i25)i+=3;couti; 输出结果是(分数:2.00)_26.设有如下关系表: (分数:2.00)A.B.C.D.27.对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是(分数:2.00)A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符28.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下
12、列关于这个函数的叙述中,错误的是(分数:2.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值29.如下程序的输出结果是 #includeiostream using namespace std; class Test public: Test( )n+=2; Test( )n-=3; static int getNum( )return n; private: static int n; ; int Test:n=1; int main( ) Test*P=new Test: delete P; cout
13、“n=“Test:getNum( )endl; return 0; (分数:2.00)A.n=0B.n=1C.n=2D.n=330.下列关于栈的描述中错误的是(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针31.有如下程序: #includeiostream using name。pace std; class AA int n: public: AA(int k):n(k) in get( )return n; int get( )constreturn n+1; ; int main( ) AA a(5); con
14、st AA b(6); coutaget( )bget( ); return 0: 执行后的输出结果是(分数:2.00)A.55B.57C.75D.7732.在表达式 x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是(分数:2.00)A.operator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数D.operator+有一个参数,operator*有一个参数33.下列字符串中,正确的 C+标识符是(分数:2.00)A.foo-1
15、B.2bC.newD._25634.数据库系统的核心是(分数:2.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员35.数据库设计的根本目标是要解决(分数:2.00)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护二、填空题(总题数:14,分数:28.00)36.数据管理技术发展过程经过了人工管理、文件系统和数据库系统 3个阶段,其中数据独立性最高的阶段是 1。(分数:2.00)填空项 1:_37.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_38.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块
16、)。其中 1的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_39.一棵二叉树第 6层(根结点为第 1层)的结点数最多为 1 个。(分数:2.00)填空项 1:_40.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_41.下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false。请在画线处填上适当内容,实现该函数。 bool fun(char*str) int i:0,j=0; while(strj) (6) ; for(J-;ij 在构造函数 XB的下列定义中,正确的是(分
17、数:2.00)A.XB:XB(int a,intB.:x(A) ,y(B) B) XB:xB(int a,intB) :XA(A) ,y(B) C.XB:XB(int a,D.XB:XB(i解析:解析 在派生类的构造函数声明中,一般格式为: 派生类名(参数总表):基类名(参数总表),对象成员名(参数表) XB继承 XA,基类 XA的构造函数带有参数,所以必须给 XA的构造函数的形参赋值,同时也可以为数据成员 Y赋值。12.下列关于模板的叙述中,错误的是(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”和“”括起来的部分是模板的形参表C.类模板不能有数
18、据成员 D.在一定条件下函数模板的实参可以省略解析:解析 模板定义 template模板参数表 类声明(函数定义) 必须以 template为开头,括起来部分是模板的类型参数,类模板有数据成员和成员函数。13.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func的调用中,错误的是(分数:2.00)A.func(3,5);B.func(30,55);C.func(3,55); D.funeint(3,55);解析:解析 在模板函数调用中,当没有类型参数时,要求函数调用的实参必须类型相同,如果实参类型不相同,则必须有
19、类型参数加以强制转换,否则编译会报错。14.下列关于 this指针的叙述中,正确的是(分数:2.00)A.任何与类相关的函数都有 this指针B.类的成员函数都有 this指针C.类的友元函数都有 this指针D.类的非静态成员函数才有 this指针 解析:解析 类的静态成员函数和友元函数都不能有 this指针,只有非静态成员函数和友元函数才能有this指针。故答案为 D。15.如下程序的输出结果是 #includeiostream void fun(int X,inty)intt=x;x=y;y=t; int main( ) int a2=23,42; fun(a1,a0); std:cou
20、ta0“,“a1std:endl; return 0; (分数:2.00)A.42,42B.23,23 C.23,42D.42,23解析:解析 参数 X是引用传递,传递的是地址:参数 Y是值传递,函数 fun( )是做 X与 Y值交换,交换后 X的值要被回传给 a1,此时 a1=a0=23。16.有如下类声明: class Fooint bar; 则 Foo类的成员 bar是(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析 在数据成员定义时,如果没有 protected等限定符,则自动被默认为私有数据成员。17.有如下类声明: class MyBA
21、SE int k; public: void set(int n)k=n; int get( )constreturn k; ; class MyDERIVED:protected MyBASE protected: intj; public: void set(int m,int n)MyBASE:set(m);j=n; int get( )constreturn MyBASE:get( )+j; ; 则类 MyDERIVED中保护的数据成员和成员函数的个数是(分数:2.00)A.4B.3 C.2D.1解析:解析 在保护派生的单继承中,基类的公有数据成员和成员函数在派生类中成为保护成员。18
22、.对于长度为 n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(分数:2.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/2 解析:解析 对于长度为 n的线性表,在最坏情况下,采用冒泡排序的比较次数为 n(n-1)/2。对于快速排序,最坏情况是整个序列都已经有序或完全倒序,此时,快速排序退化为冒泡排序,比较次数为 n(n-1)/2。19.有如下程序: #includeiostream using namespace std; class BASE public: BASE( )cout“BASE“; ; class DERIVED:
23、public BASE public: DERIVED( )cout“DERIVED“; ; int main( )DERIVED x;return 0; 程序的输出结果是(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE 解析:解析 基类和派生类的析构函数的执行顺序是先执行派生类的析构函数,最后执行基类的析构函数;故先执行 DIVERED的析构函数,后执行 BASE的析构函数。20.下列关于运算符重载的叙述中,正确的是(分数:2.00)_解析:解析 运算符重载只能重载现有的运算符,不能创建新的运算符,在重载( )、 、-、=时必须将重载函数声
24、明为成员函数。而不能声明为友元函数,重载二元运算符为成员函数时,该函数只有一个形参,另外一个参数则隐含为本对象自身。重载的一般形式为: 类型 类名:operator 重载运算符(参数列表)21.下列关于 C+函数的叙述中,正确的是(分数:2.00)A.每个函数至少要具有一个参数B.每个函数都必须返回一个值C.函数在被调用之前必须先声明 D.函数不能自己调用自己解析:解析 一个函数可以没有形参,也可以为 void空函数,但是函数调用前必须在主调函数中声明,函数可以递归调用自己。22.在 C+中,用于实现运行时多态性的是(分数:2.00)A.内联函数B.重载函数C.模板函数D.虚函数 解析:解析
25、C+支持动态联编和静态联编,动态联编是指联编要在程序运行时动态进行,可实现运行时多态,运行时多态可使用虚函数来实现。23.下列叙述中正确的是(分数:2.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期便结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件从交付使用一直到其生命周期结束都需要不断的维护,通常有 4类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。24.在下列函
26、数原型中,可以作为类 AA构造函数的是(分数:2.00)A.void AA(int);B.int AA( );C.AA(int)eonst;D.AA(int); 解析:解析 类的构造函数不能有返回值,也不能定义为返回空函数,或者用 const修饰定义为常函数。25.执行语句序列 inti=0;while(i25)i+=3;couti; 输出结果是(分数:2.00)_解析:解析 while()26.设有如下关系表: (分数:2.00)A.B. C.D.解析:解析 集合的并运算,RS 是将两个关系的元组组成一个新的集合,即将第二个集合中元组追加到第一个集合中,如果有相同元组则只保留一个。27.对于
27、语句 coutendlx;中的各个组成部分,下列叙述中错误的是(分数:2.00)A.“cout”是一个输出流对象B.“endl”的作用是输出回车换行C.“x”是一个变量D.“”称作提取运算符 解析:解析 是流插入运算符,是提取运算符。28.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是(分数:2.00)A.这是运算符一的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析 二元运算符被重载为类的成员函数时,只需要定义一个参数,而另外一个参
28、数为该对象自身。29.如下程序的输出结果是 #includeiostream using namespace std; class Test public: Test( )n+=2; Test( )n-=3; static int getNum( )return n; private: static int n; ; int Test:n=1; int main( ) Test*P=new Test: delete P; cout“n=“Test:getNum( )endl; return 0; (分数:2.00)A.n=0 B.n=1C.n=2D.n=3解析:解析 静态数据成员的初始值 n=
29、1,执行 Test*p=new Test;,调用构造函数后,n= 3,deletep;调用析构函数,n-=3,所以最终 n=0。30.下列关于栈的描述中错误的是(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针解析:解析 栈是一种数据结构,是在某一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。在栈顶进行插入和删除操作,不需要修改栈底指针,栈的实现可以采用顺序存储也可以采用链表存储。31.有如下程序: #includeiostream using name。pa
30、ce std; class AA int n: public: AA(int k):n(k) in get( )return n; int get( )constreturn n+1; ; int main( ) AA a(5); const AA b(6); coutaget( )bget( ); return 0: 执行后的输出结果是(分数:2.00)A.55B.57 C.75D.77解析:解析 如果一个对象被定义为常对象,则它只能调用该类的常成员函数而不能调用其他的成员函数。32.在表达式 x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是(分
31、数:2.00)A.operator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数 D.operator+有一个参数,operator*有一个参数解析:解析 +作为双目成员函数运算符重载时,只有一个参数,另一个参数为对象本身,*作为非成员函数重载有两个参数。33.下列字符串中,正确的 C+标识符是(分数:2.00)A.foo-1B.2bC.newD._256 解析:解析 在 C+中,变量标识符必须以大小写字母、下画线开始,是由数字或者字母下画线等组成的一个字符串,其中 C+关键
32、字不能作为标识符,不能包含-、+、*、/等运算符号。34.数据库系统的核心是(分数:2.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:解析 数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性,是数据库的核心。35.数据库设计的根本目标是要解决(分数:2.00)A.数据共享问题 B.数据安全问题C.大量数据存储问题D.简化数据维护解析:解析 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,设计数据库的根本目标就是为解决数据的共享问题。二、填空题(总题
33、数:14,分数:28.00)36.数据管理技术发展过程经过了人工管理、文件系统和数据库系统 3个阶段,其中数据独立性最高的阶段是 1。(分数:2.00)填空项 1:_ (正确答案:数据库系统)解析:解析 数据库系统通过三层模式、两级映射保证了数据库的数据独立性,而其他人工管理和文件系统均无法保证数据的独立性。37.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_ (正确答案:空间)解析:解析 算法的复杂度包含时间复杂度和空间复杂度,空间复杂度指的是程序运行所要消耗的存储空间。一个算法的优劣主要从算法的执行时间和所需要的存储空间两个方面来衡量。38.在进行模块测试时,
34、要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 1的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_ (正确答案:驱动模块)解析:解析 驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序,它将接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。39.一棵二叉树第 6层(根结点为第 1层)的结点数最多为 1 个。(分数:2.00)填空项 1:_ (正确答案:32)解析:解析 完全二叉树的深度和结点的关系为 k=log2n+1,则有 n=2k-1,普通二叉树的结点数目小于完全二叉树的结点数
35、n2 k-1,故深度为 6的二叉树最多有 32个结点。40.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_ (正确答案:存储)解析:解析 数据结构包括逻辑结构和物理结构(存储结构),逻辑结构包括集合、线性、树、网络等,而存储结构主要指的是逻辑结构的存储,包括顺序、链表、索引、散列等。41.下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false。请在画线处填上适当内容,实现该函数。 bool fun(char*str) int i:0,j=0; while(strj) (6) ; for(J-;ij&stri=strJ;i
36、+,J-); return i (7) J; (分数:2.00)填空项 1:_ (正确答案:j-,=)解析:解析 首先利用 while循环得到数组的最大下标 j,i 为数组的最小下标,然后在 for循环中判断将 j和 i逐次移动并判断对应位置上的元素是否相等。当 i=j 时,则表示数组元素为完全对称,返回为true;否则为不对称,返回为 false。42.执行语句序列 intx=10r=x: coutx-rendl; 输出结果为_。(分数:2.00)填空项 1:_ (正确答案:10-10)解析:解析 引用声明相当于是为变量声明一个别名,所以 r=x=10。43.下列程序的输出结果为 Objec
37、t id=0 Object id=1 请将程序补充完整。 #includeiostream using namespace std; class Point public: Point(int xx=0,intyy=0)X=xx;Y=yy;countP+; Point( )eountP-; int GetX( )return X; int GetY( )return Y; static void GetC( )cout“Object id=“countPendl; private: int X,Y; static int countP; ; _/静态数据成员的初始化 int main( ) P
38、oint:GetC( ); Point A(4,5); AGetC( ); return 0; (分数:2.00)填空项 1:_ (正确答案:int Point:countP=0;)解析:解析 静态数据成员在类中声明,在使用前初始化,一般格式为: 数据类型类名:静态数据成员名=初始值44.非成员函数应声明为类的 1 函数才能访问这个类的 private成员。(分数:2.00)填空项 1:_ (正确答案:友元)解析:解析 类的私有成员只能被本类的成员函数访问,如果非成员函数要访问本类的私有数据成员,必须将函数定义为该类的友元函数才行。45.派生类中的成员不能直接访问基类中的 1 成员。(分数:2
39、.00)填空项 1:_ (正确答案:私有)解析:解析 派生类成员在私有继承方式下不能访问基类的所有成员,在保护继承方式下不能访问基类的私有成员,在公有继承方式下不能访问基类的私有成员。46.下列程序的输出结果为 2,请将程序补充完整。 #include iostream using namespaee std; class Base public: _void fun( )cout1; ; class Derived:public Base public: void fun( )cout2; ; int main( ) Base*P=new Derived: p-fun( ); delete
40、P; return 0; (分数:2.00)填空项 1:_ (正确答案:virtual)解析:解析 在基类中的虚函数在派生类中被重新定义时,该函数仍然为虚函数,但是可以省略不写virtual关键字,在派生类对象中调用时,则调用被重新定义后的虚函数。47.请将下列类定义补充完整。 class Basepublic:void fun( )cout“Base:fun“endl; class Derived:public Base public: void fun( ) _ /显式调用基类的 fun函数 cout“Derived:fun“endt; ;(分数:2.00)填空项 1:_ (正确答案:Ba
41、se:fun( );)解析:解析 显式调用基类的成员函数的一般格式为: 基类名:成员函数名( );48.多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但 运算符只能作为类的 1函数重载。(分数:2.00)填空项 1:_ (正确答案:成员)解析:解析 C+中规定 作为下标运算符,不能被重载为友元函数,只能被重载为类的成员函数。49.下面是一个栈类的模板,其中 push函数将元素 i压入栈顶,pop 函数弹出栈顶元素。栈初始为空,top值为 0,栈顶元素在 stacktop-1中,在下面画线处填上适当语句,完成栈类模板的定义。 templateclass T class T st
42、ack enunlsize=1000; T stacksize; intop; public: T stack( ):top(0) void push(consT i) if(topsize)stacktop+=i; T pop( ) if(top=0)exit(1); /栈空时终止运行 return_; ;(分数:2.00)填空项 1:_ (正确答案:stack(-top);)解析:解析 POP( )操作中,当栈中含有元素时则弹出栈顶元素,所以应该返回栈顶元素 stack(-top),由于 top指针始终指向的是栈顶元素的上一单元,所以出栈时应该是先将 top下移,然后出栈,故应该是-top而不是 top-。