全国计算机等级考试二级C++题库3(共17套)_第1页
全国计算机等级考试二级C++题库3(共17套)_第2页
全国计算机等级考试二级C++题库3(共17套)_第3页
全国计算机等级考试二级C++题库3(共17套)_第4页
全国计算机等级考试二级C++题库3(共17套)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6第三套

1、在面向对象方法中,实现信息隐蔽是依靠。

A、对象的继承

B、对象的多态

C、对象的封装

D、对象的分类

信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。

故此题答案为C。

2、以下表达中正确的选项是。

A、为了建立一个关系,首先要构造数据的逻辑关系

B、表示关系的二维表中各元组的每一个分量还可以分成假设干数据项

C、一个关系的属性名表称为关系模式

D、一个关系可以包括多个二维表

为了建立一个关系,首先要指定关系的属性,所以选项A是错误的。表示关系的二维表中各元组的每一个分量必须是不可

分的根本数据项,所以选项B是错误的。在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系,所以选项

D是错误的。一个关系的属性名表称为该关系的关系模式,其记法为:〈关系名〉(〈属性名1〉,〈属性名2〉,…,<属性名n>)。

故此题答案为C。

3、以下表达中,不符合良好程序设计风格要求的是。

A、程序的效率第一,清晰第二

B、程序的可读性好

C、程序中要有必要的注释

D、输入数据前要有提示信息

要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功

能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到

清晰第一,效率第二。

故此题答案为A。

4、一棵二叉树中共有70个叶子结点与80个度为1的结点,那么该二叉树中的总结点数为。

A、219

B、221

C、229

D、231

二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。此题中度为2的结点数

为70-1=69,该二叉树中的总结点数为70+80+69=219。

故此题答案为A。

5、冒泡排序在最坏情况下的比拟次数是。

A、n(n+l)/2

B、nlogzn

C、n(n-l)/2

D、n/2

冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。

假设线性表的长度为n,那么在最坏的情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需

要的比拟次数为n(n-l)/2。

故此题答案为C。

6、软件调试的目的是。

A、发现错误

B、改正错误

C、改善软件的性能

D、验证软件的正确性

软件调试的目的是诊断和改正程序中的错误,改正以后还需要再测试。

故此题答案为B.

7、以下表达中正确的选项是。

A、数据库系统是一个独立的系统,不需要操作系统的支持

B、数据库技术的根本目标是要解决数据的共享问题

C、数据库管理系统就是数据库系统

D、以上三种说法都不对

为了解决多用户、多应用共享数据的需求,使数据为尽可能多的应用效劳,数据管理的最新技术—数据库技术应运而生。

数据库系统由如下几局部组成:数据库、数据库管理系统、数据库管理员、系统平台(硬件平台和软件平台),所以选项

A、C是错误的。

故此题答案为B。

8、以下表达中正确的选项是。

A、数据的逻辑结构与存储结构必定是---对应的

B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C、程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D、以上三种说法都不对

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。一种数据的逻辑结构根据需要可以表示成多种存

储结构,常用的存储结构有顺序、链接、索引等。而采用不同的存储结构,其数据处理的效率是不同的。因此,在进行

数据处理时,选择适宜的存储结构是很重要的,所以选项A是错误的。

根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构,所以

选项B是错误的。

数组既可以处理线性结构也可以处理非线性结构,所以选项C是错误的。

故此题答案为D.

9、软件是指。

A、程序

B、程序和文档

C、算法加数据结构

D、程序、数据与相关文档的完整集合

计算机软件是计算机系统中与硬件相互依存的另一局部,是程序、数据及相关文档的完整集合。

故此题答案为D.

10、以下表达中正确的选项是。

A、程序执行的效率与数据的存储结构密切相关

B、程序执行的效率只取决于程序的控制结构

C、程序执行的效率只取决于所处理的数据量

D、以上三种说法都不对

所谓提高程序执行的效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计

算机存储空间。

故此题答案为A。

11、如果派生类以protected方式继承基类,那么原基类的protected成员和public成员在派生类中的访问属性分别是

A、public和public

B、public和protected

C、protected和public

D、protected和protected

此题考查的是派生类。

派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访

问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。

故此题答案为D。

12、以下关于类模板的模板参数的表达中,错误的选项是。

A、模板参数可以作为数据成员的类型

B、模板参数可以作为成员函数的返回类型

C、模板参数可以作为成员函数的参数类型

D、模板参数不能作为成员函数的局部变量的类型

此题考查模板的作用。

模板的作用:模板它提供的是一个框架,待你提供真正的参数后,它便有了一个实例。类模板定义不同类型的成员:成

员函数、静态数据成员和嵌套的类型。模板参数也可以作为成员函数的局部变量的类型。

故此题答案为D。

13、语句int*p=&k;定义了指针p,与这个语句等效的语句序列是o

A、int*p;p=&k;

B、int*p;p=k;

C、int*p;*p=&k;

D、int*p;*p=k;

此题考查的是指针。

一个指针是一个特定类型数据的存储地址,比方一个变量的地址。在使用任何指针变量之前必须先给它赋一个所指合法

具体对象的地址值。

语句int*p=&k;定义了一个指向变量k地址的int类型的指针p,此定义方法是在定义过程中同时赋初始值。选项A中int

*p;p=&k;是先定义了一个指针p,然后将变量k的地址赋给指针p,与题目中的语句int*p=&k;等效。

故此题答案为A。

14、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(intx):val(x){}

voidPrint0const{cout«z,const:val=z'«val«,\t);}

voidprint(){cout«z,val=z,«val<<,\t);}

private:

intval;

);

intmain(){

constMyClassobjl(10);

MyClassobj2(20);

objl.Print();

obj2.Print();

return0;

)

程序的输出结果是。

A、val=10const:val=20

B、const:val=10const:val=20

C、const:val=10val=20

D、val=10val=20

此题考查的是构造函数调用顺序。

constMyClassobjl(10);首先定义了MyClass的const对象objl,并初始构造函数参数为x=10。构造函数通过:val(x)

将x的值给val。

MyClassobj2(20);定义MyClass的对象obj2,并初始构造函数参数为x=20。构造函数通过:val(x)将x的值给val。

objl.Print();调用Objl对象中的Print()函数,输出objl对象成员变量val的当前值,即输出const:val=10。

obj2.Print0;调用Obj2对象中的Print()函数,输出obj2对象成员变量val的当前值,即输出const:val=20。

故此题答案为B。

15、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classBase(

public:

voidoutput(){cout«l;}

virtualvoidPrint(){cout«,B5;}

);

classDerived:publicBase(

public:

voidoutput0{cout«2;}

voidPrint(){cout«,D5;}

);

intmain(){

Base*ptr=newDerived;

ptr->output();

ptr->Print();

deleteptr;

return0;

)

程序的输出结果是。

A、IB

B、ID

C、2B

D、2D

此题考查的是虚函数。

virtualvoidPrint(){cout*'B';}表示这方法是虚函数,虚函数的意思是如果子类有继承这虚函数,那么子类的

对象在执行此方法时调用子类的此方法。否那么会调用基类的此方法。

在此程序中Derived是子类,Base是基类,Base*ptr=newDerived;创立一个子类的对象给基类的指针对象。

ptr->output();因为指针ptr是基类的对象。所以在执行output()方法时会调用基类的output()方法,也就是Base类

的output。方法。不会调用Derived类的output()方法,因为output()不是虚函数。输出1。

ptr->Print();因为Print();在基类Base中申明是虚函数,所以在子类中如果有继承此方法就会调用子类的这方法。

所以这个调用的是Derived类的Print();方法。输出D。

故此题答案为B。

16、必须用一对大括号括起来的程序段是o

A、switch语句中的case标号语句

B、if语句的分支

C、循环语句的循环体

D、函数的函数体

此题考查的是函数的函数体。

由一对花括号括起来的〈函数体>是语句的序列,它定义了函数应执行的具体操作。

if语句的分支和循环语句的循环体通常使用花括号。括起来;switch语句中的case标号语句后加的是冒号":"。

故此题答案为D.

17、以下关于运算符重载的描述中,正确的选项是。

A、运算符重载为成员函数时,假设参数表中无参数,重载的是一元运算符

B、一元运算符只能作为成员函数重载

C、二元运算符重载为非成员函数时,参数表中有一个参数

D、C++中可以重载所有的运算符

此题主要考查了运算符重载。

一元运算符还可以作为全局函数重载,所以选项B错误。

二元运算符重载为非成员函数时,参数表中有两个参数,所以选项C错误。

有些运算符不能被重载,如域运算符(::),条件运算符(?:)等,具体哪些运算符不能被重载与编译器有关,所以选

项D错误。

故此题答案为A。

18、C++中的模板包括。

A、对象模板和函数模板

B、对象模板和类模板

C、函数模板和类模板

D、变量模板和对象模板

此题考查的是C++中的模板,包括函数模板和类模板。

函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。

类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的

类型。

故此题答案为C。

19、如果利用C++流进行输入输出,下面的表达中正确的选项是。

A、只能借助于流对象进行输入输出

B、只能进行格式化输入输出

C、只能借助于cin和cout进行输入输出

D、只能使用运算符>〉和〈〈进行输入输出

此题考查的是C++流的概念。

就像C语言一样,C++语言中也没有输入/输出语句。在C++中,将数据从一个对象到另一个对象的流动抽象为"流",数据

的输入与输出就是通过输入/输出流来实现的。C++流可以借助于cin、cout、cerr、clog进行输入输出;使用运算符“>>”、

和get。、getline0>put(),write。函数也可以进行输入输出。

故此题答案为A。

20、在函数中,可以用auto、extern,register和static这四个关键字中的―•个来说明变量的存储类型,如果不说明

存储类型,那么默认的存储类型是。

A、auto

B、extern

C、register

D、static

此题考查的是C++的变量类型。C++中的变量类型分为如下几种:

auto一函数内部的局部变量。(auto可以省略不写)一个局部变量如果没有用于存储类别定义符说明时,那么自动

被说明为auto。

static一静态存储分配,又分为内部和外部静态。

extern一全部变量〔用于外部变量说明)。

register—变量存储在硬件存放器中。

故此题答案为A。

21、以下符号中不属于C++关键字的是o

A、friend

B、namespace

C、continue

D、byte

此题考查的是C++关键字。

关键字也称保存字,它是由C++语言本身预先定义好的一类单词。

详细请见C++关键字表。

故此题答案为D。

22、有如下头文件:

intfl();

staticintf2();

classMA{

public:

intf3();

staticintf4();

};

在所描述的函数中,具有隐含的this指针的是O

A、fl

B、f2

C、f3

D、f4

此题考查的是this指针。

this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的

对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数,每次成员函数存

取数据成员时,那么隐含使用this指针。

this指针是指向对象本身的指针,它只存在于类的非静态成员中。fl,f2不是成员函数,不存在隐含指针;f4为静态成

员函数,也不含有this指针;含有this指针的函数在调用时按thiscall调用约定调用。

故此题答案为C。

23、以下各组类型声明符中,含义相同的一组是。

A、unsignedlongint和long

B、signedshortint和short

C、unsignedshort和short

D、shortint和int

此题考查的是符号常量声明。

整型常量除包括根本整型(int)外,还包括短整型(shortint)、长整型(longint)、无符号型(unsigned)o假

设整型常量为无符号型那么在表示时需要在前面加上unsigned,假设没加unsigned那么默认表示为有符号型(signed),

因此选项A、C错误;

选项D中int表示整型,shortint表示短整型,含义不同,所以错误;

选项B表示有符号的短整型,有符号(signed)可以隐藏,同时shortint可以表示为short,因此选项B正确。

故此题答案为B。

24、有以下程序:

ttinclude<iostream>

usingnamespacestd;

classB{

public:

virtualvoidshow(){cout〈〈〃B〃;}

};

classD:publicB{

public:

voidshow(){cout«z/D,z;}

};

voidfunl(B*ptr){ptr->show();}

voidfun2(B&ref){ref.show();}

voidfun3(Bb){b.show();}

intmain(){

Bb,*p=newD;

Dd;

funl(p);

fun2(b);

fun3(d);

return0;

)

程序运行的输出结果是。

A、BBB

B、BBD

C、DBB

D、DBD

此题考查的是虚函数的用法,及虚函数被继承后的相互调用关系。

首先通过B类生成b对象,通过B类生成*p对象指针并申请D类内存结构赋给*p。然后通过D类生成d。

调用funl函数,参数地址传递p指针地址。因为B.showO是虚函数,所以调用D.showO;输出D。

调用fun2函数,参数引用传递对象b,所以调用B.showO;输出B。

调用fun3函数,参数对象d;参数b二d地址。所以调用B.showO;输出B。

所以输出结果DBB。

故此题答案为C。

25、假设有如下类定义:

classB{

voidfunl(){}

protected:

doublevar1;

public:

voidfun2(){}

);

classD:publicB{

protected:

voidfun3(){}

};

obj是类D的对象,以下语句中不违反类成员访问控制权限的是o

A、obj.funl();

B、obj.varl;

C、obj.fun2();

D、obj.fun3()

此题考查的是类成员的访问控制。

类中提供了3中访问控制权限:公有(public)>私有(private)和保护(protected)0

B类中成员定义访问权限为:funl()为私有,varl为保护,fun2为公共类D公共继承B类结构,继承结构不改变成员权限。

因为对象外部调用成员,只能访问〔公共)Public权限成员,仅fun2()为Public权限。

故此题答案为C。

26、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classPart(

public:

Part(intx=0):val(x){cout«val;}

^Part(){cout«val;}

private:

intval;

);

classWhole(

public:

Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout«val;}

“Whole(){cout«val;}

private:

Partpl,p2;

intval;

);

intmain(){

Wholeobj(1,2,3);

return0;

}

程序的输出结果是O

A、123321

B、213312

C、213

D、123123

此题考查的是类以及类的构造函数。

classWhole{

public:

Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout«val;}

^WholeO{cout<<val;}

private:

Partpl,p2;〃定义时间的顺序跟那个

intval;

};

在定义类Whole的私有成员时,Partpl,p2;定义对象pl在p2前。所以在执行Whole(intx,inty,int

z=0):p2(x),pl(y),val(z){cout«val;},创立对象时先执行pl(y)构造方法,再执行p2(x)构造方法。

Wholeobj(1,2,3);创立Whole类对象obj这时调用Whole类的构造方法Whole(intx,inty,int

z=0):p2(x),pl(y),val(z){cout«val;},得到x=l,y=2,z=3,在执行:p2(x),pl(y),val(z)方法,因为对象pl在p2定义

前,所以先构造对象pl也就执行pl(2),调用Part类的Part(intx=0):val(x){cout〈〈val;}方法,输出2,接着构造p2对

象,执行p2(l)输出1。

再执行val(z)给val赋值为3再执行方法体的语句cout<〈val;输出3。

现在所有对象构造完了,开始析构对象了。因为析构与构造相反,所以先析构z再p2再pl,输出为312。总体输出就是213312。

故此题答案为B。

27、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(){++count;}

~MyClass(){--count;}

staticintgetCount0{returncount;}

private:

staticintcount;

);

intMyClass::count=0;

intmain(){

MyClassobj;

cout«obj.getCount();

MyClass*ptr=newMyClass;

cout«MyClass::getCount();

deleteptr;

cout«MyClass::getCount();

return0;

)

程序的运行结果是。

A、121

B、232

C、221

D、122

此题考查的是类的构造函数。

intMyClass::count=0;的意思是初始化静态变量coimt=0;

MyClassobj;是指创立类MyClass对象obj,这时会执行类MyClass的构造方法MyClass(){++count;},得到count=l,

cout«obj.getCount();输出1。

MyClass*ptr=newMyClass;创立类MyClass指针对象*ptr,这时会执行类MyClass的构造方法MyClass(){++count;}

得到coimt=2,cout<<MyClass::getCount();输出2。

deleteptr;删除指针对象,这时会调用析构方法~乂丫口4$5(){-count;},得到count=l,cout<XMyClass::getCount();

输出1。

故此题答案为A。

28、有以下程序:

ttinclude<iostream>

usingnamespacestd;

classBase(

public:

Base(intx=0){cout«x;}

);

classDerived:publicBase(

public:

Derived(intx=0){cout«x;}

private:

Baseval;

};

intmain(){

Derivedd(l);

return0;

)

程序的输出结果是O

A、0

B、1

C、01

D、001

此题考查的是类的相关知识。

“Baseval;〃因为类Derived有个Base类的对象val为私有变量。所以在给这类创立对象时会创立Baseval;对象。

在Derivedd(l);创立对象d时先创立Base的对象val,执行Base类的Base(intx=0){cout〈〈x;}方法,输出0;

接着创立类Derived对象d执行类Derived的带一个参数的构造方法Derived(intx=0){cout«x;},在执行前因为类

Derived是公共继承类Base所以先执行基类的构造方法Base(intx=0){cout«x;}输出0(这个方法是给参数赋默认值的;

intx=0意思是如果没有传参数过来就以0表示这个参数的值);

执行完基类的构造方法后执行自己的构造方法。因为传的参数为1所以输出1。

故此题答案为D。

29、对于一个类定义,以下表达中错误的选项是o

A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数

B、如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数

C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数

D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数

此题考查的是类的定义。

类是一种用户自定义的类型,声明一个类对象时,编译程序需要为对象分配存储空间,进行必要的初始化。在C++中这项

工作是由构造函数来完成的。构造函数的作用是在对象被创立时利用特定的值构造对象,将对象初始化为一种特定的状

态,使该对象具有区别于其他对象特征。构造函数在对象被创立的时候由系统自动调用。

故此题答案为B。

30、关于函数重载,以下表达中错误的选项是。

A、重载函数的函数名必须相同

B、重载函数必须在参数个数或类型上有所不同

C、重载函数的返回值类型必须相同

D、重载函数的函数体可以有所不同

此题考查的是函数的重载。

函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表。不可以根据函数返回值类型来重

载函数。函数重载是用同一个函数名在不同的参数上做不同的事情。对于仅仅是函数的返回值不同,其它参数全部相同,

不是重载。如果出现这种况,会在编译产生错误。

故此题答案为C。

31、一程序运行后执行的第一个输出操作是

cout«setw(10)«setfill(J*')«1234;

那么此操作的输出结果是。

A、1234

B、******1234

C、**********1234

D、1234******

〃setw(10)〃表示要输出10个宽度。

z/setfillC*')〃表示没有到达宽度要求的用*替换。

〃1234〃表示操作的数据,因此前应该有6个*。

故此题答案为B。

32、如下函数的作用是以双倍行距输出文件:

voiddouble_space(ifstream&f,ofstream&t){

charc;

while(){

if(c==,\n')t.put(c);

)

)

画线缺失的局部是O

A、f.get(c)与t.put(c)

B、f.put(c)与t.get(c)

C、t.get(c)与f.put(c)

D、t.put(c)与f.get(c)

此题考查的是文件流的输入输出。

文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。

ifstream是文件输入流类,只能用于输入,它没有提供任何用于输出的操作。

ofstream是文件输出流类,只能用于输出,它没有提供任何用于输入的操作。

fstream是文件输入输出流类。

f.get(c)为获得一个字符;

t.put(c)为输出一个字符,因为if(c='\n')t.put(c);此句,当c为间格字符(行距字符)时,再多输出一次t.put(c)o

故此题答案为A。

33、派生类的成员函数不能访问基类的。

A、公有成员和保护成员

B、公有成员

C、私有成员

D、保护成员

此题考查的是继承的类型。

类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有

继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private的,那么不能被继承。

故此题答案为C。

34、以下运算符函数中肯定不属于类FunNumber的成员函数的是。

A、intoperator-(FunNumber);

B、FunNumberoperator-0;

C、FunNumberoperator-(int);

D、intoperator-(FunNumber,FunNumber);

此题考查的是类的成员函数。

选项A是重载了负号或减法运算符,由于减法运算符它具有两个操作数,而题面原型中只有一个,如果重载的是减号运算

符,那么必为成员函数。

选项B中由于没参数,无论是负号或减法运算符至少具有一个参数,所以它必为成员函数,同时也必定是重载了负号运算

符。

选项C是必定以成函数的方式重载,因为C++规定不能对内置类的运算符进行重载,所以它不可能是友元函数(因为操作

数为内置的int型),所以必为成员函数重载,且必定是重载了减法运算符。

选项D有两个参数,无论是负号或减法运算符,其操作数不超2个,所以必定为友元函数重载,且重载了减法运算符。

故此题答案为D.

35、以下是重载乘法运算符的函数原型声明,其中错误的选项是。

MyClassoperator*(double,double);

MyClassoperator*(double,MyClass);

MyClassoperator*(MyClass,double);

MyClassoperator*(MyClass,MyClass);

此题考查的是运算符的重载。

重载的运算符应保持其原有的根本语义。重载的运算符应尽可能保持其原有的特性。运算符的重载应当配套。

至少要有一个形式参数是类的类型。所以选项A错。

故此题答案为A。

36、在两种根本测试方法中,测试的原那么之一是保证所测模块中每一个独立路径至少要执行一次。

标准答案为:白盒或白箱

白盒测试的根本原那么是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执

行一次;保证所测模块每一循环都在边界条件下至少执行一次;验证所有内部数据结构的有效性。

37、线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的存

储结构。

标准答案为:顺序

在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

38、对以下二叉树进行中序遍历的结果为。

标准答案为:ACBDFEHGP或A、C、B、D、F、E、H、G、P或A,C,B,D,F,E,H,G,P或A,C,B,D,F,E,H,G,P

二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后

遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。遍历的各种形式~牢记~

39、在E-R图中,矩形表示。

标准答案为:实体集

在E-R图中,矩形表示实体集。

40、软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是。

标准答案为:无歧义性

无歧义性是指对每一个需求只有一种解释,其陈述具有惟一性。作为设计的根底和验收的依据,软件需求规格说明

书应该是精确而无二义的,需求说明书越精确,那么以后出现的错误、混淆、反复的可能性越小。

41、有函数f的定义如下:

intf0(

staticints=0;

s+=2;

returns;

)

那么在某程序中第2次执行函数调用语句f();时,函数f的返回值是。

标准答案为:4

此题考查的是static的用法。

static在程序运行的过程中只初始化一次。

第一次运行时,s=2

第二次运行时,s=2+2=4

所以答案为4。

42、请将以下栈类Stack补充完整。

classStack{

private:

intpList[100];//int数组,用于存放栈的元素

inttop;〃栈顶元素〔数组下标)

public:

Stack():top(0){}

voidPush(constint&item);//新元素item压入栈

intPop(void);//新栈顶元素弹出栈

);

voidStack::Push(constint&item){

if(top=99)//如果栈满,程序终止}

exit(1);

top++;//栈顶指针增1

)

intStack::Pop(){

if(top<0)//如果栈空,程序终止

exit(1);

returnpList[top-];

)

标准答案为:pList[top]=item

此题考查堆栈的操作。

由于在本算法中,要弹出栈顶元素,要先将新元素item压入栈,然后取出stack[top]中的元素。

如果栈满,if(top=99),程序终止,栈顶指针增晨

如果栈空,程序终止。

按照堆栈先进后的原那么,向堆栈压入的数据总是在最上面的,top为最大记数,所以pList堆栈的第top数组位

置将被赋值成压入数据。所以答案为pList[top]二item。

43、类sample是一个抽象类,其成员函数display是无形参、无返回类型的纯虚函数,请完成其声明:

classsample{

public:

sample(){};

);

标准答案为:virtualvoiddisplay()=0;

此题考查的是纯虚函数。

这是一个纯虚函数定义。它的定义格式是:virtual函数返回类型函数名(参数列表)=0,根据题目的意思,返回类

型为空,那么用void表示函数名为display参数列表为空,那么用()表示结合起来,就是virtualvoiddisplay0=0;

〔其中0表示无函数体)。

44、如下程序的输出结果是23,请将画线缺失的局部补充完整。

#include<iostream>

usingnamespacestd;

classMyClass{

public:

voidPrint0const{cout<<23;}

};

intmain(){

MyClass*p=newMyClass();

.Print();

return0;

)

标准答案为:(*p)

此题考查的是指针。

MyClass*p二newMyClass0;是创立一个类MyClass的指针对象。要执行创立的对象,那么(*p).Print();即为执行

此对象的方法。

45、有如下程序:

ttinclude<iostream>

usingnamespacestd;

classA{

public:

A(){cout〈〈〃A〃;)

〜A(){cout〈〈〃A〃;}

);

classB{

Aa;

public:

B(){cout<<〃B〃;}

~B(){cout«"B〃;}

);

intmain(){

Bb;

return0;

)

程序的输出结果是。

标准答案为:ABBA

此题考查的是类的构造。

main(){Bb;

创立类B一个对象b,这时转到类B里去执行类B的构造方法B(),因为在类B里有个全局的类A的对象a,所以在

执行构造方法B()之前会先创立类A的对象a,就去执行类A的构造方法A(),输出字符A,再返回到类B执行它的构造

方法B()输出字符B,现在所有的构造方法执行完了,就执行析构方法了,因为析构方法与构造方法的执行顺序相反,所

以先执行第()方法输出字符B,再执行~A()输出字符A。所以输出结果ABBA。

46、请将如下程序补充完整,使得输出结果为:bbaa

#include<iostream>

usingnamespacestd;

classA{

public:

{cout〈<〃aa〃;)

);

classB:publicA{

public:

~B(){cout<<”bb〃;}

);

intmain(){

B*p=newB;

deletep;

return0;

)

标准答案为:~A()

此题考查的是一个带有指针的类的构造方法。

B*p=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论