1、二级 C+分类模拟 267及答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:35,分数:68.00)1.对类的构造函数和析构函数描述正确的是 _ 。(分数:2.00)A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.下列选项中合法的用户标识符是 _ 。(分数:2.00)A.10ngB.2TestC.3DmaxD.dat3.应用数据库的主要目的是(分数:1.00)A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题D.解决数据量大的问题4.以下函数实现的功
2、能是 void fun(char*s) char*p,*q,temp; p=s; q=s+strlen(s)-1; while(pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:1.00)A.将一个字符串首尾颠倒B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母5.有如下程序: #includeiostream using namespace std; class Base pubfic: Base()cout“BB“;f(); void f()cout“Bf“: ; class Derived:public Base publi
3、c: Derived()cout“DD“;) voidf()cout“Df“: ; intmain()Derived d;retum 0; 执行上面的程序将输出(分数:1.00)A.BBBfDDB.BBDfDDDfC.DDD.DDBBBf6.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD_。 #includeiostream using namespace std; class A public:A()cout“A“; ; class B:_ public:B()cout“B“; ; classC: virtua1 pubtic A public:C()cout“C“;
4、; class D:public B,public D public:D()cout“D“; ; void main() D obj;(分数:1.00)A.public AB.private AC.protected AD.virtual public A7.已知有数组定义 char a34; 下列表达式中错误的是(分数:2.00)A.a2=“WIN“B.strcpy(a2,“WIN“)C.a23=“W“D.a01=a018.为完成下面的程序,在画线处应填入的语句是_。 #includediostream using namespace std; class Base int x; publi
5、c: Base(int i)x=i; Base() ; class Derived:public Base public: _/完成类 Derived构造函数的定义 ; int main() Derived obj(2); return 0; (分数:2.50)A.Derived(int i):Base(i)B.Derived()C.vold Derived(in*i):Base(i)D.Derived(int i)Base(i);9.有如下程序: #includeiostream using namespace std; class base public: base(int x=0)cou
6、tx; ; class derived:public base public: derived(int x=y)coutx; public: base val; ; int main() derived d(1); return 0; 程序的输出结果是_。(分数:2.50)A.0B.1C.01D.00110.以下选项中,不能正确赋值的是 _ 。(分数:2.00)A.char s110;s1=“Ctest“;B.char s2=“C“,“t“,“e“,“s“,“t“);C.char s320=“Ctest“;D.char* s4=“Ctest/n“;11.下列属于黑盒测试方法的是_。(分数:2.
7、50)A.语句覆盖B.逻辑覆盖C.边界值分析D.路径分析12.有 3个关系 R、S 和 T如下: (分数:2.50)A.笛卡儿积B交C并D.自然连接13.有如下程序: #includeiostream using namespace std; intmain() int f,f1=0,f2=1; for(int i=3;i=6;i+) f=f1+f2; f1=f2;f2=f; coutfendl; return 0; 运行时的输出结果是_。(分数:3.00)A.2B.3C.5D.814.已知类 A有公用数据成员 a,并重载了“”运算符,且有 A obj2;const A*ptr new A;则
8、下列语句错误的是 _ 。(分数:2.00)A.ptr-a=100;B.ptr=C.ptr+;D.obj2=*ptr;15.有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D:public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj.fun1();B.obj.fun2();C.obj.fun3();D.obj.fun4();16.下列叙述中,正确的是(分数:1.00)
9、A.用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R图只能表示实体集之间一对一的联系C.用 E-R图只能表示实体集之间一对多的联系D.用 E-R图表示的概念数据模型只能转换为关系数据模型17.软件是指(分数:2.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合18.设有如下三个关系表: (分数:2.00)A.T=RSB.T=RSC.T=RSD.T=R/S19.下列关于函数模板的描述中,正确的是_。(分数:3.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不
10、同的类型参数,可以从函数模板得到不同的实例函数20.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测输入操作的函数的函数名是_。(分数:2.50)A.failB.eofC.badD.good21.下列数据结构中,属于非线性结构的是_。(分数:2.50)A.循环队列B.带链队列C.二叉树D.带链栈22.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型23.下列有关内联函数的叙述中,正确的
11、是_。(分数:2.50)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline来定义C.内联函数是通过编译器来实现的D.内联函数函数体的最后一条语句必须是 return语句24.有如下程序: #includeiostream using namespace std; class XX int x; public: XX(int xx=0):x(xx) int getX()return x; ; class YY:public XX int y; public: YY(int xx, int yy):x(xx), y(yy) int getV()return getX()+y;
12、 ; int main() YY c(3, 4); coutc.getV()+c.getX()endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.4C.7D.1025.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.staticC.protectedD.private26.设有基类定义: class Cbase private: int a; protected: int b; public: int c; ; 派生类采用何种继承方式可以使成员变量 b成为自己的私有成员(分数:2.00)A.私有继承B.保护继承C.公有继承D.
13、私有、保护、公有均可27.如果表达式 x * yz 中,“*”是作为友元函数重载的,“”是作为成员函数重载的,则该表达式还可为(分数:2.00)A.operator(operator * (x, y) ,Z)B.operator(operator * (x, y) ,z)C.operator * (operator(x, y) ,z)D.operator(operator * (x, y) )28.有下列程序: #include stdio.h void main() (int a=1,2,3,4),y,*p=a3; -p;y=*p;printf(“y=%d/n“,y); 程序的运行结果是 _
14、 ,(分数:2.50)A.y=0B.y=1C.y=2D.y=329.有如下程序: #includeiostream using namespace std; class Book public: Book(char*t=“ “)strcpy(title, t); _ private: char title40; ; class Novel:public Book public: Novel(char*t=“ “):Book(t) char*Category()constreturn “文学“ ; ; int main() Book*pb; pb=new Novel(); coutpb-Cate
15、gory(); delete pb; return 0; 若程序运行时输出结果是“文学”,则横线处缺失的语句是_。(分数:2.00)A.char*Category();B.char*Category()const;C.virtual char*Category()const;D.virtual char*Category()const=0;30.下列叙述正确的是_。(分数:1.00)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.以上三种描述都不对31.下列错误的定义语句是_。(分数:2.50
16、)A.int X3=0,1,1,2,3);B.int x43=1,2,0,1,2,3,1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3;D.int x3=1,2,3,4;32.在深度为 5的满二叉树中,叶子节点的个数为(分数:2.00)A.32B.31C.16D.1533.设程序如下: #includeiostream using namespace std; int main() int *p,*q,r=10; q= p= cout*p+1endl; return 0; 以上程序的输出结果是_。(分数:2.50)A.P的地址B.r的地址C.11D.运行
17、错误34.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为 _ 。(分数:1.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,435.有如下程序 #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getcount()return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj
18、.getcount(); MyClass*ptr=new MyClass; coutMyClass:getcount(); delete ptr; coutMyClass:getcount(); return 0; 程序的输出结果是_。(分数:2.50)A.121B.232C.221D.122二级 C+分类模拟 267答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:35,分数:68.00)1.对类的构造函数和析构函数描述正确的是 _ 。(分数:2.00)A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D
19、.构造函数不能重载,析构函数也不能重载解析:2.下列选项中合法的用户标识符是 _ 。(分数:2.00)A.10ngB.2Test C.3DmaxD.dat解析:解析 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合这些要求的只有选项 B。3.应用数据库的主要目的是(分数:1.00)A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题 D.解决数据量大的问题解析:解析 数据库中的数据具有“集成”与“
20、共享”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项 C)正确。4.以下函数实现的功能是 void fun(char*s) char*p,*q,temp; p=s; q=s+strlen(s)-1; while(pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:1.00)A.将一个字符串首尾颠倒 B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母解析:解析 本题考核 while循环语句和指针的使用。在该函数中,循环开始时,指针 p指向字符串的第 1个字符,指针 q指向字符串的
21、最后一个字符,首先交换这两个字符:然后,指针 p前进一个字符位置(指向下一个字符),指针 q后退一个字符位置(指向前一个字符);经过若干次循环,条件 pq 将为假(即指针 p和指针 q相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。5.有如下程序: #includeiostream using namespace std; class Base pubfic: Base()cout“BB“;f(); void f()cout“Bf“: ; class Derived:public Base public: Derived()cout“DD“;) voidf()cout“Df“: ; i
22、ntmain()Derived d;retum 0; 执行上面的程序将输出(分数:1.00)A.BBBfDD B.BBDfDDDfC.DDD.DDBBBf解析:6.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD_。 #includeiostream using namespace std; class A public:A()cout“A“; ; class B:_ public:B()cout“B“; ; classC: virtua1 pubtic A public:C()cout“C“; ; class D:public B,public D public:D()c
23、out“D“; ; void main() D obj;(分数:1.00)A.public AB.private AC.protected AD.virtual public A 解析:解析 由主函数 main入手,定义了类 D对象 obj。其中 D为类 B和 C的公有继承,A 是 C的虚基类。题目中要求的输出结果为 ABCD,依次为类 A、类 B、类 C、类 D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承,即保证 A只被继承一次,输出一个 A,所以需要声明 A为 C的虚基类,同样也要声明 A为 B的虚基类。7.已知有数组定义 char a34; 下列表达式中错误的是(分数:2.
24、00)A.a2=“WIN“ B.strcpy(a2,“WIN“)C.a23=“W“D.a01=a01解析:解析 本题考查数组的基本知识,B、C、D 在 C语言中都是允许的,A 选项的赋值是非法的。8.为完成下面的程序,在画线处应填入的语句是_。 #includediostream using namespace std; class Base int x; public: Base(int i)x=i; Base() ; class Derived:public Base public: _/完成类 Derived构造函数的定义 ; int main() Derived obj(2); ret
25、urn 0; (分数:2.50)A.Derived(int i):Base(i) B.Derived()C.vold Derived(in*i):Base(i)D.Derived(int i)Base(i);解析:解析 在派生类的构造函数中,必须对基类的成员进行初始化,并且必须在构造函数的初始化列表中调用基类的构造函数。9.有如下程序: #includeiostream using namespace std; class base public: base(int x=0)coutx; ; class derived:public base public: derived(int x=y)c
26、outx; public: base val; ; int main() derived d(1); return 0; 程序的输出结果是_。(分数:2.50)A.0B.1C.01D.001 解析:解析 本题考查基类成员和对象成员的初始化。题中,生成派生类 derived对象 d,先要初始化基类 base和对象成员 val,分别调用 base类缺省构造函数各 1次,输出两个 0;再调用派生类 derived的构造函数,输出 1。最终输出结果为:001。10.以下选项中,不能正确赋值的是 _ 。(分数:2.00)A.char s110;s1=“Ctest“; B.char s2=“C“,“t“,
27、“e“,“s“,“t“);C.char s320=“Ctest“;D.char* s4=“Ctest/n“;解析:11.下列属于黑盒测试方法的是_。(分数:2.50)A.语句覆盖B.逻辑覆盖C.边界值分析 D.路径分析解析:解析 黑盒测试用于对软件的功能进行测试和验证,不须考虑程序内部的逻辑结构。黑盒测试的方法主要包括:等价类划分法、边界值分析法、错误推测法、因果图等。语句覆盖、逻辑覆盖、路径分析均是白盒测试的方法。12.有 3个关系 R、S 和 T如下: (分数:2.50)A.笛卡儿积B交C并D.自然连接 解析:解析 本题是对几种运算的使用进行考查。笛卡儿积是两个集合相乘的关系;交运算是包含
28、两集合的所有元素;并运算是取两集合公共的元素;自然连接满足的条件是两关系间有公共域,通过公共域的相等直接进行连接。通过观察 3个关系 R、S、T 的结果可知,关系 T是由关系 R和 S进行自然连接得到的。13.有如下程序: #includeiostream using namespace std; intmain() int f,f1=0,f2=1; for(int i=3;i=6;i+) f=f1+f2; f1=f2;f2=f; coutfendl; return 0; 运行时的输出结果是_。(分数:3.00)A.2B.3C.5 D.8解析:解析 在主函数中 for循环语句执行 4次,第一次
29、循环结束时,变量 f的值等于 1,f1 的值等于1,f2 的值等于 1;第二次循环结束时,变量 f的值等于 2,f1 的值等于 1,f2 的值等于 2;第三次循环结束时,变量 f的值等于 3,f1 的值等于 2,f2 的值等于 3;第四次循环结束时,变量 f的值等于 5,f1的值等于 3,f2 的值等于 5;结束循环。14.已知类 A有公用数据成员 a,并重载了“”运算符,且有 A obj2;const A*ptr new A;则下列语句错误的是 _ 。(分数:2.00)A.ptr-a=100; B.ptr=C.ptr+;D.obj2=*ptr;解析:解析 本题考查 const修饰符的作用。注
30、意:const 位置不同,其修饰的部分也是不同的。本题中 const修饰的是 ptr所指的对象本身,所以,ptr 是可以重新指向新的对象,而 ptr-a 则无法被更新。15.有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D:public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是_。(分数:1.00)A.obj.fun1(); B.obj.fun2();C.obj.fun3();D.obj.fu
31、n4();解析:解析 本题考查派生类对基类成员的访问属性,基类成员在派生类中的访问属性如下表所示,因此本题选 A, 基类中的属性 继承方式 在派生类中的访问方式 公有成员 公有 保护成员 保护 私有成员 公有继承 不可直接访问 公有成员 保护 保护成员 保护 私有成员 保护继承 不可直接访问 公有成员 私有 保护成员 私有 私有成员 私有继承 不可直接访问 16.下列叙述中,正确的是(分数:1.00)A.用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R图只能表示实体集之间一对一的联系C.用 E-R图只能表示实体集之间一对多的联系 D.用 E-R图表示的概念数据
32、模型只能转换为关系数据模型解析:解析 本题主要考查了用 E-R图表示实体之间联系的方法。 【解题要点】两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 17.软件是指(分数:2.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合 解析:解析 软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。18.设有如下
33、三个关系表: (分数:2.00)A.T=RSB.T=RSC.T=RS D.T=R/S解析:解析 关系代数中的集合运算有并、差、交和笛卡儿积四种。根据本题关系 T中的元组可知,它是由关系 R和关系 S进行笛卡儿积运算得到的。19.下列关于函数模板的描述中,正确的是_。(分数:3.00)A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数 解析:解析 函数模板是一系列相关函数的模型或样板,这函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型
34、的函数。20.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测输入操作的函数的函数名是_。(分数:2.50)A.failB.eof C.badD.good解析:解析 good():刚进行的操作成功时返回 true,否则返回 false;fail()与 good()相反;bad():如果进行了非法操作返回 true,否则返回 false;eof():进行输入操作时,若到达文件尾返回 true,否则返回。false,故正确答案为 B项。21.下列数据结构中,属于非线性结构的是_。(分数:2.50)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析 线
35、性结构满足两个条件:有且仅有一个根结点;每个结点最多有一个前什,也最多一个后件,栈和队列均满足这阳个条件,属于线性结构。二叉树属于非线性结构,因为除了叶子结点外,每个结点都可以有两个后件,不满足线性表的条件。22.下列关于类模板的模板参数的叙述中,错误的是_。(分数:1.00)A.模板参数可以作为数据成员的类型B.模板参数可以作为成员函数的返回类型C.模板参数可以作为成员函数的参数类型D.模板参数不能作为成员函数的局部变量的类型 解析:解析 此题考查的是模板参数。模板参数是一种参数化的数据模型,在模板类或模板函数中,只要使用数据类型的地方都能使用模板参数来代表一种未知的数据类型。所以,模板参数
36、可以作为成员函数的局部变量类型。23.下列有关内联函数的叙述中,正确的是_。(分数:2.50)A.内联函数在调用时发生控制转移B.内联函数必须通过关键字 inline来定义C.内联函数是通过编译器来实现的 D.内联函数函数体的最后一条语句必须是 return语句解析:24.有如下程序: #includeiostream using namespace std; class XX int x; public: XX(int xx=0):x(xx) int getX()return x; ; class YY:public XX int y; public: YY(int xx, int yy):
37、x(xx), y(yy) int getV()return getX()+y; ; int main() YY c(3, 4); coutc.getV()+c.getX()endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.4C.7 D.10解析:解析 该题考查的是析构函数的问题。25.以下关键字不能用来声明类的访问权限的是_。(分数:1.00)A.publicB.static C.protectedD.private解析:解析 类的成员访问权限有 3种:public(公用)、protected(保护)、private(私有)。26.设有基类定义: clas
38、s Cbase private: int a; protected: int b; public: int c; ; 派生类采用何种继承方式可以使成员变量 b成为自己的私有成员(分数:2.00)A.私有继承 B.保护继承C.公有继承D.私有、保护、公有均可解析:解析 类的继承中有三种继承方式,他们和类的访问级别相结合在派生类中可以产生多种访问级别。基类中成员为保护的,在派生类中要为私有的,可以采用私有继承。基类中的保护成员在振生类中不是私有就是保护,即级别只能降低而不能升高。基类中的公有成员则可能为私有、保护和私有。27.如果表达式 x * yz 中,“*”是作为友元函数重载的,“”是作为成员
39、函数重载的,则该表达式还可为(分数:2.00)A.operator(operator * (x, y) ,Z) B.operator(operator * (x, y) ,z)C.operator * (operator(x, y) ,z)D.operator(operator * (x, y) )解析:解析 C中用成员函数重载 x * y为:x. operator * (y) ,用友元函数重载 x * y为:operator * (x, y) ,用成员函数重载 xy 为:x. operator(y) ,用友元函数重载 xy 为:operator(x, y) 。28.有下列程序: #inclu
40、de stdio.h void main() (int a=1,2,3,4),y,*p=a3; -p;y=*p;printf(“y=%d/n“,y); 程序的运行结果是 _ ,(分数:2.50)A.y=0B.y=1C.y=2D.y=3 解析:解析 本题定义一个一维数组和指针,接着将数组第 4个元素的地址赋予*p 数组下标从 0开始,进行-p 使指针 p指向了数组的第 3个元素,通过 y=*p将数组第 3个元素的值 3赋予 y所以选项 D正确。29.有如下程序: #includeiostream using namespace std; class Book public: Book(char*
41、t=“ “)strcpy(title, t); _ private: char title40; ; class Novel:public Book public: Novel(char*t=“ “):Book(t) char*Category()constreturn “文学“ ; ; int main() Book*pb; pb=new Novel(); coutpb-Category(); delete pb; return 0; 若程序运行时输出结果是“文学”,则横线处缺失的语句是_。(分数:2.00)A.char*Category();B.char*Category()const;C
42、.virtual char*Category()const;D.virtual char*Category()const=0; 解析:解析 本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为 0的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为 D。30.下列叙述正确的是_。(分数:1.00)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限
43、个步骤之后终止 D.以上三种描述都不对解析:解析 算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。31.下列错误的定义语句是_。(分数:2.50)A.int X3=0,1,1,2,3);B.int x43=1,2,0,1,2,3,1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3; D.int x3=1,2,3,4;解析:解析 本题考查数组的定义一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项 C错误。32.在深度为 5的满二叉树中,叶子节点的个数为(分数:2.00)A.32B.31 C.16D.15
44、解析:解析 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有节点都有两个叶子节点。这就是说,在满二叉树中,层上的节点数都达到最大值,即在满二叉树的第 k层上有 2 k1 个节点,且深度为 m的满二叉树有 2 m 1 个节点。33.设程序如下: #includeiostream using namespace std; int main() int *p,*q,r=10; q= p= cout*p+1endl; return 0; 以上程序的输出结果是_。(分数:2.50)A.P的地址B.r的地址C.11 D.运行错误解析:解析 p 为一个二级指针,其存放的是指针变量 q的地址,而
45、 q存放的又是 r的地址。故式子*p相当于对 r的引用。所以最后输出的结果为 11。34.一个队列的进队列顺序是 1,2,3,4,则出队列顺序为 _ 。(分数:1.00)A.4,3,2,1B.2,4,3,1C.1,2,3,4 D.3,2,1,4解析:解析 队列是指允许在一端进行插入,而在另一端进行删除的线性表。因此队列又称为先进先出的线性表。答案为 C。35.有如下程序 #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getcount
46、()return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; coutobj.getcount(); MyClass*ptr=new MyClass; coutMyClass:getcount(); delete ptr; coutMyClass:getcount(); return 0; 程序的输出结果是_。(分数:2.50)A.121 B.232C.221D.122解析:解析 本题主要考查构造函数和析构函数的调用,以及静态成员的使用。生成对象,自动调用构造函数,执行“+count;”,count 变为 1。通过对象调用成员函数 getcount(),输出 count值为 1。定义指针 ptr指向动态分配的对象空间,也要自动调用构造函数,count 第二次自增,值为 2。通过类名和作用域运算符“:”可以直接访问类的静态成员,输出 count值为 2。“delete ptr;”需要回收 new为其分配的动态空间,要自动调用析构函数,count 自减后值为 1。