1、二级C+真题2007年4月答案真题 120一、选择题(每小题2分,共70分) 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:B答案解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。 数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线
2、性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。第2题:参考答案:D答案解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则: (1)改进软件结构,提高模块独立性。通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是
3、降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。 (2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。 (3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点;如果模块的功能过分的局限,使用范围就过分狭窄。 经过上述分析,本题的正确答案是选项D。第3题:参考答案:A答案解析:本题考查软件工程中测试的目的和方法。仅就软件测试而言,它的目的是发现软件的中的错误,但是,发现错误并不是最终目的,
4、最终目的是通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。 由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在软件测试阶段通常由其他人员组成测试小组来完成测试工作。因此,经过上述分析可知选项A的说法是正确的,而选项B、C、D的说法是错误的。第4题:参考答案:C答案解析:通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中(对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,是面向对象程序设计的基础。 继承性
5、:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。 多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,选项C的说法是错误的。第5题:参考答案:
6、D答案解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。第6题:参考答案:C答案解析:本题考查数据结构中二叉树的遍历。根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这三种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是前序遍历方法的递归定义。 当二叉树的根不为空时,依次执行如下3个
7、操作: (1)访问根结点 (2)按先序遍历左子树 (3)按先序遍历右子树 根据如上前序遍历规则,来遍历本题中的二叉树。首先访问根结点,即A,然后遍历A的左子树。遍历左子树同样按照相同的规则首先访问根结点B,然后遍历B的左子树。遍历B的左子树,首先访问D,然后访问D的左子树,D的左子树为空,接下来访问D的右子树,即Y。遍历完B的左子树后,再遍历B的右子树,即E。到此遍历完A的左子树,接下来遍历A的右子树。按照同样的规则,首先访问C,然后遍历C的左子树,即F。C的左子树遍历完,接着遍历C的右子树。首先访问右子树的根结点X,然后访问X的左子树,X的左子树,即Z,接下来访问X的右子树,右子树为空。到此
8、,把题目的二叉树进行了一次前序遍历。遍历的结果为 ABDYECFXZ,故本题的正确答案为选项C。第7题:参考答案:A答案解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为 n2则n0=n2+1。 根据这条性质可知,若二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为 n+1。因此,本题的正确答案是选项A。第8题:参考答案:B答案解析:本题考查数据库的关系运算。两个关系的并运算是指将第一个关系的元组加到第二个关系中,生成新的关系。因此,并运算不改变关系表中的属性个数,也不能减少元组个数。 两个关系的交运
9、算是包含同时出现在第一和第二个关系中的元组的新关系。因此,交运算不改变关系表中的属性个数,但能减少元组个数。 投影是一元关系操作。投影操作选取关系的某些属性,这个操作是对一个关系进行垂直分割,消去某些属性,并重新安排属性的顺序,再删除重复的元组。因此,投影运算既可以减少关系表中的属性个数,也可以减少元组个数。 两个关系的笛卡儿乘积是指一个关系中的每个元组和第二个关系的每个元组连接。因此,笛卡儿乘积运算能够增加元组属性的个数。 经过上述分析可知,在上述四种运算中,交运算不改变关系表中的属性个数但能减少元组个数。因此,正确答案是选项B。第9题:参考答案:C答案解析:E-R模型中,有三个基本的抽象概
10、念:实体、联系和属性。E-R图是E-R模型的图形表示法,在E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。因此,本题的正确答案是选项C。第10题:参考答案:A答案解析:本题考查数据库系统的基本概念和知识。数据的逻辑结构,是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构,又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项A的说法是错误的。 数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它
11、们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。 数据库设计是在数据库管理系统的支持下,按照应用的要求,设计一个结构合理、使用方便、效率较高的数据库及其应用系统,数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项C的说法是错误的。 数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项D的说法是
12、正确的。 因此,本题的正确答案是选项A。第11题:参考答案:B答案解析:本题考查的知识点是;内联函数。C+引入内联(inline)函数的原因是用它来取代C中的预处理宏函数,即带参数的宏。故本题应该选择B。第12题:参考答案:A答案解析:本题考查的知识点是:类的定义。类中缺省的访问权限是私有的(private),所以选项B) 不正确:类的数据成员和函数成员的访问控制权限均可被声明为公有 (public)、私有(priate)和保护(protected)中的任意一种,所以选项C) 不正确;成员函数的实现即可以在类体内定义,也可以在类体外定义,所以选项D) 不正确。故本题应该选择A。第13题:参考答
13、案:D答案解析:本题考查的知识点是;派生类的构造函数和析构函数。在销毁派生类对象时,析构函数的执行;过程与构造函数严格相反,即;(1)对派生类新增普通成员进行清理; (2)调用成员对象析构函数,对派生类新增的成员对象进行清理;(3)调用基类析构函数,对基类进行清理。故本题应该选择D。第14题:参考答案:A答案解析:本题考查的知识点是:运算符重载。重载的运算符具有保持其原有的操作数个数、优先级和结合性不变的特性。故本题应该选择A。第15题:参考答案:C答案解析:本题考查的知识点是:函数模板。声明一个函数模板的格式是: template模板形参表声明函数声明 其中的模板形参表声明是由一个或多个模板
14、形参组成。每个模板形参具有下面几种形式: (1)typename参数名 (2)class参数名 (3)类型修饰参数名 由此可见,题中的T是模板形参。故本题应该选择C。第16题:参考答案:B答案解析:本题考查的知识点是:C+流的操作符。在C+流中,操作符setw的作用是设置输入输出宽度。故本题应该选择B。第17题:参考答案:D答案解析:本题考查的知识点是:标识符。在C+中,标识符的组成要符合以下4个规定: (1)标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串; (2)标识符不能与任意一个关键字同名; (3)标识符中的字母区分大小写: (4)标识符不宜过长,C+语言一般设定一个
15、标识符的有效长度为32个字符。 在选项D) 中,switch是C+开关语句的关键字,因此不能用作标识符。故本题应该选择D。第18题:参考答案:C答案解析:本题考查的知识点是:字面常量。对于整型字面常量,只要没有超出C+中整数所能表示的范围,C+将自动按整数(int)来存储此数。也可以通过在整型字面常量后添加u或1(大、小写均可),来指定按无符号整数(unsigned)或长整数(long)来存储,也可同时使用u和1(对排列无要求),来指定按无符号长整数(unsigned long)来存储。对于实型字面常量,C+自动按双精度数(double)来存储。也可通过在实型字面常量后添加f(大、小写均可),
16、来指定按单精度数(float)来存储。故本题应该选择C。第19题:参考答案:B答案解析:本题考查的知识点是:for循环语句。 for语句的执行过程是: (1)计算第1个表达式(在本题中是“int i=50”)的值: (2)计算第2个表达式(在本题中是“i1”)的值,如果此值不等于0(结果为真),则转向步骤(3);否则转向步骤(5); (3)执行一遍循环体(在本题中是“cout*;”); (4)计算第3个表达式(在本题中是“-i”)的值,然后转向步骤(2); (5)结束for循环。 由此可见,本题循环中i从50开始逐次递减,直到i=1时退出,而此时没有机会执行到循环体,因此执行了49遍循环体。而
17、循环体中的语句是输出1个字符“*”,所以最终输出了49个字符“*”,故本题应该选择B。第20题:参考答案:A答案解析:本题考查的知识点是:指针和引用。指针声明的一般形式为: 数据类型*声明的指针变量名; 引用声明的一般形式为: 数据类型&声明的引用变量名=被引用的变量名; 引用声明时必须初始化,而指针则可有可无。通过引用来改变其所引用的对象,直接赋值即可,而通过指针改变其所指对象则须使用一元运算符“*”。在本题中,语句就是一条合法的引用声明语句,使变量i被r所引用。语句通过引用r将变量j的值赋给变量i。语句声明了指针变量p,并初始化指向变量i。而语句中的*p代表了变量i,欲将&r(变量r的地址
18、值)赋给*p(变量i),这会引起VC6编译器产生一条类型不匹配的错误“无法将类型int*转换为int”。故本题应该选择A。第21题:参考答案:C答案解析:本题考查的知识点是:函数参数的传递方式。C+的默认参数传递方式是传值,即将实参值的副本传递(拷贝)给被调用函数的形参。如果需要传地址,可通过传递指针、引用或数组类型的参数来实现。传值时,对形参的改变不会影响到实参;而传地址,则会同时改变实参。本题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参x的值;而形参b是引用,即传址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果是0和2,应该选择C。第22题:参考答案:
19、B答案解析:本题是一道陷阱题,看似考查类的静态成员变量,实际考查的是:变量作用域的屏蔽效应。在C+中,当标识符的作用域发生重叠时,在一个函数(或块)中声明的标识符可以屏蔽函数(或块)外声明的标识符或全局标识符。本题从行class A到行“int A:a=0;”都是类A的声明部分。行“A obj;”声明了一个类A的全局对象 obj,由于没指定构造参数,所以构造时构造函数的形参a取默认值2。构造函数中首先调用了init函数,将静态成员变量a赋为1,然后将a增1。许多考生此时会很自然地认为是将类A的静态成员变量a增1了,从而导致选择C这个错误答案。其实,此时静态成员变量a被构造函数的形参a所屏蔽,所
20、以a+改变的是形参a的值,对静态成员变量a没有影响,其值还是被init函数所改成的值1。故本题应该选择B。第23题:参考答案:C答案解析:本题考查的知识点是:继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,因此选项A) 不正确。在C+中,只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项B) 不正确。在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,因此选项D) 不正确。故本题应该选择C。第24题:参考答案:C答案解析:本题考查的知识点是:运算符重载。在C+中,只有.、.*、-*、:、?:这五个运算符不能
21、重载。故本题应该选择C。第25题:参考答案:A答案解析:本题考查的知识点是:函数模板。声明一个函数模板的格式是: template模板形参表声明函数声明 其中的模板形参表声明是由一个或多个模板形参组成。每个模板形参具有下面几种形式: (1)typename参数名 (2)class参数名 (3)类型修饰参数名 故本题应该选择A。第26题:参考答案:C答案解析:本题考查的知识点是:预定义流对象。C+流有4个预定义的流对象,它们的名称及与之联系的I/0设备如下: cin 标准输入 cout 标准输出 cerr 标准出错信息输出 clog 带缓冲的标准出错信息输出 故本题应该选择C。第27题:参考答案
22、:答案解析:本题考查的知识点是:构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建的时候,都会隐含调用众多构造函数中的一个,而在被销毁的时候,又会隐含调用唯一的那个析构函数。因此,解此类题目只要找准创建时调用的是哪个构造函数,和对象何时被销毁即可。本题只有主函数中创建了一个对象A,并使用了构造参数3,因此会隐含调用test(int a)这个构造函数,输出一个3。接下来主函数结束,对象A被销毁,所以又隐含调用test()析构函数,输出一个destructor。故本题应该选择D。第28题:参考答案:B答案解析:本题考查的知识点是:对象的构造。本题一共声明了1个M
23、yClass对象a,1个包含2个MyClass对象的数组b和1个包含2个MyClass对象指针的数组p。所以一共创建了3个MyClass类的对象(声明对象指针时并不会创建对象),即调用了3次构造函数。故本题应该选择B。第29题:参考答案:C答案解析:本题考查的知识点是:静态成员,对象的构造,对象的生存周期。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。本题的Point类中就定义了一个静态成员变量 number。其初始值为0,每次构造则自动增1,析构则自动减1,所以number是Point类对象的计数值。在主函数中,第1行定义
24、了1个Point类型指针ptr,这并不会构造 Point类对象,因此number值为0;第2行定义了2个Point对象,所以此时number值为2;第36行是一个语句块,其中通过new运算符又定义了1个包含3个Point对象元素的数组,由于是动态创建的,所以其生命周期只能通过delete运算符来结束,否则会一直占据内存直到程序结束,所以现在number的值为5:第7行定义了1个 Point对象C,number的值变为6;第8行输出number的内容,所以最后输出的结果是6。故本题应该选择C。第30题:参考答案:A答案解析:本题考查的知识点是:多态性。在C+中,一个基类指针(或引用)可以用于指向
25、它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。基类中的实函数也可以在 派生类中重定义,但重定义的函数仍然是实函数。在实函数的情况下,通过基类指针 (或引用)所调用的只能是基类的那个函数版本,无法调用到派生类中的重定义函数。本题中的show函数就是被重定义的实函数,所以通过基类指针pb所调用的是基类的版本,即输出a和b的值10,20。故应该选择A。第31题:参考答案:C答案解析:本题考查的知识点是:派生类的构造。执行开始,进入main()函数。第1句是声明一个B类对象b,并传入构造参数2,所以执行进入B的构造函数B(int
26、 i),形参i为2。由于B继承自A,所以首先执行进入A的构造函数A(int,i),形参i为2+10=12。函数中只有一条语句x=i,此时的x为类A的私有成员x,被赋值为12。执行返回到 B的构造函数,也是同样一条语句x=i;,不过这里的x为类B的私有成员x,被赋值为2。至此b的构造完成。执行返回主函数第2行,通过刚创建的对象b调用其成员函数dispb()。执行进入dispb(),第1条语句是dispa();,这是基类A的公有成员函数,执行进入dispa(),只有一条输出语句,此时由于在基类A中,所以输出的x为A的成员变量x,因此输出结果是“12,”。执行返回dispb()函数的第2条语句,这里
27、输出的x是派生类B的成员变量x,即接着输出的结果是“2”。执行返回到主函数第3行,此时是一条return语句,主函数结束,程序执行完毕。注意,如果类中还定义有析构函数的话,此时就会被执行。故本题应该选择C。第32题:参考答案:B答案解析:此题考查通过虚函数实现多态调用的方法。由于基类Base中f()为虚函数,在派生类Derived 中f()虽然重定义为虚陈述函数,根据虚函数支持多态调用的规则,基类指针*p指向派生类对象d,即Base*p=&d,此时通过基类指针调用虚函数f()时,被调用的是基类指针所指的实际对象d的虚函数f(),调用实函数g()时,则仍为基类的实函数g(),所以输出的结果为f0
28、+g+。第33题:参考答案:B答案解析:本题考查的知识点是:重载增1运算符“+”。+既可以是前缀运算符(前增1),又可以是后缀运算符(后增1)。为了区分这两种情况,重载这两个运算符时必须在格式上有所区别:重载后缀+时必须多一个虚拟参数:int。在本题中,Point& operator+()重载的是前缀形式,而Point operator+(int)则是后缀形式。所以,主函数中第1条输出语句cout(+a)GetX();等价于couta.operator+().GetX();,即输出 11,此时a.x的值为11。而第2条输出语句couta+.GetX();等价于cout a.operator+(
29、0).GetX();(式中的0可以是任意整数),在这个后缀+的重载函数中,首先创建了一个Point对象old保存自身(*this),然后通过语句+(*this;调用前缀+的重载函数,此时自身虽然已经改变,但它返回的是改变前保存的old对象,因此还是输出11。故本题应该选择B。第34题:参考答案:B答案解析:考查对字符串标准输入结束标识符的理解,即在字符的尾部包含一个空字符0,由于字符串str长度为12,所以i=12。第35题:参考答案:C答案解析:考察对递归函数的理解,因为s.x=x fun(Sample(5)=Sample(5)fun(Sample(5-1)=54fun(Sample(3)=
30、54321 所以,对于for(i=0;i6;i+)来说: sum=0+1+1+21+321+4321+54321=154。二、填空题(每空2分,共30分)第36题:参考答案:63详细解答:本题考查数据结构中满二叉树的性质。在满二叉树中,每层结点都是满的,即每层结点都具有最大结点数。深度为k的满二叉树,一共有2k-1个结点,其中包括度为2的结点和叶子结点。因此,深度为7的满二叉树,一共有27-1个结点,即127个结点。 根据二叉树的另一条性质,对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。设深度为7的满二叉树中,度为2的结点个数为x,则改树中叶
31、子结点的个数为x+1。则应满足x+(x+1)=127,解该方程得到,x的值为63。 结果上述分析可知,在深度为7的满二叉树中,度为2的结点个数为63。第37题:参考答案:黑箱(盒)详细解答:本题考查软件工程的测试。对于软件测试而言,黑箱(盒)测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接收输入数据产生正确的输出信息。与黑箱(盒)测试相反,白箱(盒)测试的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。它按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确处
32、理,等价类划分是把所有可能的输入数据(有效的和无效的)划分成若干个等价类,则可以合理的做出下述假定:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。显然,等价类划分完全不考虑程序的内部结构和处理过程,因此它属于黑箱(盒)测试。第38题:参考答案:DBMS详细解答:数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,
33、可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。因此,数据库系统中,数据库管理系统是实现各种数据管理功能的核心软件。第39题:参考答案:开发详细解答:本题考查软件工程的软件生命周期及其各阶段的基本任务。一般说来,软件生命周期由软件定义、软件开发和软件维护三个时期组成。 软件定义时期的任务是确定软件开发工程必须完成的总目标;导出实现工程目标应该采用的策略及系统必须完成的功能;确定工程的可行性;估计完成该项工程需要的资源和成本,并且制定工程进度表。 软件开发时期的任务是设计程序结构,给出程序的详细规格说明:编写程序代码,并且仔细测试编写出的每一个程序模块:最后进行综合测
34、试,也就是通过各种类型的测试使软件达到预定的要求。 软件维护时期的任务是使软件持久的满足用户的需要。具体地说,就是诊断和改正在使用过程中发现的软件错误;修改软件从而适应环境的变化;根据用户的要求改进或扩充软件使其更完善;修改软件为将来的维护活动预先做准备。 显然,编码和测试属于软件开发阶段。第40题:参考答案:数据字典详细解答:本题考查数据流图和数据字典的概念。数据流图(Data Flow Diagram,DFD) 是一种结构化分析描述模型,用来对系统的功能需求进行建模,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。尽管数据流图给出了系统数据流向和加工等情况,但其各个成分
35、的具体含义仍然不清楚或不明确,因此,在实际中常采用数据词典这一基本工具对其作进一步的详细说明。数据词典(Data Dictionary,简称DD) 和数据流图密切配合,能清楚地表达数据处理的要求。数据词典用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存贮名字具有确切的解释。每一条解释就是一条词条,按一定的顺序将所有词条排列起来,就构成了数据词典,就象日常使用的英汉词典、新华词典一样。第41题:参考答案:false详细解答:本题考查的知识点是:逻辑常量。C+中只有两个逻辑常量:true和false。故本题应该填false。第42题:参考答案:*P详细解答:本题
36、考查的知识点是:指针。指针使用两种特殊的运算符*和&。&用于返回其操作对象的内存地址;*用于返回其操作数所指对象的值。故本题应该填*p。第43题:参考答案:fn(5.27)详细解答:本题考查的知识点是:函数调用。c+中函数调用的一般形式为: 函数名(实参表) 故本题应该填fn(5.27)。第44题:参考答案:tb详细解答:本题考查的知识点是:对象的定义,对象的定义格式如下: 类名对象名(参数表); 所以题目中的tb是对象名标识符,而ta被定义成类MA的指针。故本题应该填tb。第45题:参考答案:myClass&详细解答:本题考查的知识点是:拷贝构造函数。拷贝构造函数定义的一般格式如下: 类名:
37、类名)(const类名&引用对象名) /拷贝构造函数体 而在类中的声明部分则可省去类名:。故本题应该填myClass&。第46题:参考答案:基类详细解答:本题考查的知识点是:继承与派生的基本概念。用来派生新类的类称为基类,而派生出的新类称为它的子类或派生类。第47题:参考答案:AAB详细解答:本题考查的知识点是:派生类的构造函数。建立派生类对象时,构造函数的执行顺序如下: (1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右): (2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下): (3)执行派生类的构造函数。题目中的主函数中首先定义了一个
38、CA类对象a,所以首先输出一个A。然后定义了一个CB类对象b,由于CB类派生自CA类,所以应先执行CA类的构造函数,再执行自身的构造函数,即接着输出一个A和一个B。故本题最终输出的结果是AAB。第48题:参考答案:1详细解答:本题考查的知识点是:运算符重载。当运算符重载为类的成员函数时,第一操作数就是对象本身,并不显式地出现在参数表中。或者换句话说,第一操作数仅以 this指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。故本题应该填1。第49题:参考答案:11333详细解答:本题考查的知识点是:析构函数、对象的生存期。在main函数中,首先定义了一个DA类对象数组d,从初始化列表中可以看出,它包含3个对象。然后通过 new运算符动态创建了一个DA类的对象数组,并将首地址赋给DA类指针p。接下来通过delete运算符,销毁指针p所指向的数组,故此时会输出2个1。最后main函数通过return语句返回,此时会销毁前面定义的对象数组d,因此会输出3个3。故本题最终输出的结果是11333。第50题:参考答案:运行详细解答:本题考查的知识点是:多态性的概念。在C+语言中,多态性可分为两类:编译时的多态性和运行时的多态性。故本题应该填“运行”。更多试卷请见麦多课文库
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1