全国计算机二级C 考题真题_第1页
全国计算机二级C 考题真题_第2页
全国计算机二级C 考题真题_第3页
全国计算机二级C 考题真题_第4页
全国计算机二级C 考题真题_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

2006年9月考试真题(第24次)

i.从工程管理角度,软件设计一般分为两步完成,它们是____。

A、概要设计与详细设计B、过程控制C、软件结构设计与数据设计

D、程序设计与数据设计

从工程管理角度看,软件设计分为两步完成:概要设计与详细设计。概要设计(乂称结构设计)将软件需求转化为软件体

系结构、确定系统级接口、全局数据结构或数据库模式;详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算

法和数据结构的细节。故本题答案为A。

2.数据库技术的根本目标是解决数据的___。

A、存储问题B、共享问题C、安全问题D、保护问题

由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用

范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因

此,数据库设计的根本目标是要解决数据共享问题。

故本题答案为B。

3.在数据库系统中,用户所见数据模式为。

A、概念模式B、外模式C、内模式D、物理模式

数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式又称为子模式,或用户模式,是指数据库用户所看

到的数据结构,是用户看到的数据视图。模式又称为逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所

见到的数据视图的总和。外模式是模式的一部分。内模式又称为存储模式或物理模式,是指数据在数据库系统内的存储介质上的

表示,即对数据的物理结构和存取方式的描述。故本题答案为B。

4.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为。

A、63B、64C、6D、7

在进行顺序查找过程中,如果线性表中的第1个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高:但

如果被查找的元素是线性表中的最后一个元素,或者被杏找的元素根本就不在线性表中,则为了杳找这个元素需要与线性表中所

有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。故

本题答案为B。

5.对下列二叉树

进行中序遍历的结果是。

A、ACBDFEGB、ACBDFGEC、ABDCGEFD、FCADBEG

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

并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

故本题答案为A。

6.下列选项中不属于软件生命周期开发阶段任务的是。

A、软件测试B、概要设计C、软件维护D、详细设计

软件生命周期分为软件定义、软件开发及软件维护。其中软件开发阶段的任务中软件设计阶段可分解成概要设计阶段和详

细设计阶段;软件维护不属于软件开发阶段。故本题答案为C。

7.下列叙述中正确的是«

A、一个算法的空间复杂度大,则其时间复杂度也必定大

B、一个算法的空间复杂度大,则其时间复杂度必定小

C、一个算法的时间复杂度大,则其空间复杂度必定小D、上述三种说法都不对

算法的复杂度主要包括时间复杂度和空间复杂度:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度:算法

的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数,为了能够比较客观地反映出•个算

法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实

现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。故本题答案为D。

8.下列选项中不符合良好程序设计风格的是o

A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句

D、模块设计要保证高耦合、高内聚

良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此,程序设计风格对保证程序的质量很重要。主

要应注意和考虑下述一些因素:1、源程序要文档化;2、数据说明的次序要规范化;3、语句的结构应该简单直接,不应该为提高

效率而把语句复杂化,避免滥用got。语句。模块设计要保证低耦合、高内聚。故本题答案为D。

9.设有如下三个关系表

从图中可以看出,关系T是关系R和关系S的简单扩充,而扩充的符号为X,所以答案为T=RXS。

故本题答案为C。

10.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和。

A、编码设计B、测试阶段C、运行阶段D、物理设计

数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和

维护阶段。故本题答案为D。

11.下列运算符不能重投为友元函数的是___。

A、=()[]->B、+-++~C、><>=<=D、+=-=*=/=

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

在C++中,可以通过两种方式对运算符进行重载。一种是类成员函数的方式、一种是友元函数的方式。=0[]->以及所有的

类型转换运算符只能作为成员函数重载,不能重载为友元函数。故本题答案为A。

12.语句ofstreamf("SALARY.DAT",ios_base::app);的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且____。

A、若文件存在,将其置为空文件;若文件不存在,打开失败

B、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件

C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

D、若文件存在,打开失败;若文件不存在,建立一个新文件

本题考查的是文件流的输出。

ofstreamf("SALARY.DAT?*,ios_base::app);

是以ios_base::app方式打开文件,若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。故本题答

案为B。

13.有如下程序

#include<iostream>usingnamespacestd;

classA{public:virtualvoidfunclO{cout«,'Al";)voidfunc2(){cout«,'A2H;}

);

classB:publicA{public:voidfunclO{cout«,,Br,;}voidfunc2(){cout«,,B2n;}

);

intmain(){A*p=newB;p->funcl();p->func2();return0;}

运行此程序,屏幕上将显示输出0

A、B1B2B、A1A2C、B1A2D、A1B2

本题考查的是派生类。

派生类B由基类A公有继承而来。调用p->funcl();后,执行派生类B的函数voidfunclO:调用p->func2();后,执行基类的函

数voidfunc2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针p调用func2时将直接

调用基类中的voidfunc2()o故本题答案为C。

14.if语句的语法格式可描述为:

格式1:if(〈条件〉)〈语句〉

或格式2:if(〈条件〉)〈语句l>else(语句2>

关于上面的语法格式,下列表述中错误的是一O

A、<条件)部分可以是一个if语句,例如if(if(a=0)…)…

B、<语句)部分可以是一个if语句,例如if(…)if(•,•)…

C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和〈语句2>的位置,语句功能不变

D、〈语句〉部分可以是一个循环语句,例如if(…)while(…)…

本题考杳的是if语句。

if为关键字,<条件>通常是一个表达式:if子句和else子句可以是任何类型的语句,当然也可以是if…else语句本身和while

语句。

if…else语句的基本执行过程是:首先计算〈条件》的值,如果此值不为0(〃真〃),则执行〈语句1>,然后忽略《语句2>,而去

执行if语句之后的卜一条语句;如果此值为0(〃假〃),则执行〈语句2>,然后忽略〈语句1>,然后继续执行if语句之后的卜.一条语

句。故木题答案为A。

15.下列语句中,错误的是

A、constintbuffer=256;B、constdouble*point;

C、intconstbuffer=256;D>double*constpoint;

本题考杳的是符号常量定义。

constintbuffer=256;〃声明常量buffer

constdouble*point;〃声明常量指针*point,*poinl不可变,但poinl的值可以改变

intconstbuffer=256;〃声明常量buffer

double*constpoint;〃声明的point是常量,*poinl可变,但poinl的值不可以改变,point不是外部的,必须在声明初

始化常量对象。可改为:

doubleaa=123.45;

double*constpoint=&aa;

故本题答案为D。

16.关于运算符重载,下列表述中正确的是o

A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型

C、在类型转换符函数的定义中不需要声明返回类型

D、可以通过运算符重载来创建C++中原来没有的运算符

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

运算符重载是针对C++中原有的运算符进行的,不可能通过重载创造出新的运算符,故选项D错误。除了.、.*、->*、::、?:

这5个运算符外,其它运算符都可以重载,故选项A错误。运算符函数的返回类型可以声明为基本数据类型,故选项B错误。在重载

类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。故本题答案为C。

17.关于在调用模板函数时模板实参的使用,下列叙述正确的是___。

A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

B、对于虚拟类型参数所对应的模板实参,如果他们是参数表中的最后的若干参数,则都可以省略

C、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

D、对于常规参数所对应的模板实参,任何情况下都不能省略

本题考查的是函数模板中模板实参的省略。

对于虚拟类型参数所对应的模板实参,如果从模板函数的实参表中获得的信息已经能够判定其中部分或全部虚拟类型参数,

而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。反之,对于某个模板实参,如果从模板函

数的实参表中无法获得相同的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有不能省略的实参,则其自身还

是不能省略,故选项A和B错误。对于虚拟类型参数所对应的模板实参,若能够省略可以省略,也可以不省略,故选项C错误。常规

参数的信息无法从模板函数的实参表中获得,因此在调用时必须显式的说明。故本题答案为D。

18.若有下面的函数调用:

fun(a+b,3,max(n-l,b))

贝ijfun的实参个数是.A、3B、4C、5D、6

本题考查的是函数的调用。

在C++中,〈形参列表〉是由逗号分开的,分别说明函数的各个参数。在fun()函数中它包括3个形参,a+b,3和max(nT,b);当

调用一个函数时,实参与形参一对一地匹配,所以实参个数也是3个。故本题答案为鼠

19.下列有关内联函数的叙述中,正确的是o

A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义

C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句

本题考查的是内联函数。

在C++中使用inline关键字来定义内联函数。inline关键字放在函数定义中函数类型之前。不过编译器会将在类的说明部分定

义的任何函数都认定为内联函数,即使它们没有inline说明。一个内联函数可以有,也可以没有return语句。内联函数在程序执

行时并不产生实际函数调用,而是在函数调用处将函数代码展开执行。内联函数是通过编译器来实现的。故本题答案为C。

20.在公有继承的情况下,允许派生类直接访问的基类成员包括。

A、公有成员B、公有成员和保护成员C、公有成员、保护成员和私有成员D、保护成员

本题考查的是派生类。

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

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

故本题答案为B。

21.有如下程序:

#include<iostream>usingnamespacestd;

classObj{staticinti;

public:Obj(){i++;}'Obj(){i一;}

staticintgetVal0{returni:)

);

intObj::i=0;

voidf(){Objob2:cout«ob2.getVal();}

intmainO{Objobi;f0;

0bj*ob3=newObj;cout«ob3->getVal();

deleteob3;cout«0bj::getVal0;

return0;

)

程序的输出结果是。A、232B、231C、222D、221

本题主要考查了C++中类的静态成员。

由于i是类Obj的静态成员,该成员被类的所有实例共享。当定义obi时,系统自动调用构造函数Obj(),i的值将加1;调用函

数f()时,在定义ob2时系统会自动调用构造函数Obj(),i的值将再加1;调用。b2.getVal();后,将i的值输出,输出值为2;当调

用函数f。即将结束时,系统自动调用析构函数、Obj(),i的值将减1;当定义ob3时,系统自动调用构造函数Obj(),i的值将加1,

调用cout〈〈ob3->getVal();B,将i的值输出,输出值为2;调用deleteob3后将执行Obj的析构函数“Obj(),执行后,i的值将减1,

Obj::getVal()为类的•个静态成员函数,其作用是返回私有静态成员变量i的值1。故本题答案为I)。

22.下列有关继承和派生的叙述中,正确的是_____。

A、如果一个派生类私有继承其基类,则该派生类中的成员不能访问基类的保护成员

B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象

D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

本题考查的是拷贝构造函数。

拷贝构造函数通常在以下3种情况卜.会被调用:

(1)用类的一个已知的对象去初始化该类的另一个正在创建的对象。

(2)采用传值调用方式时,对象作为函数实参传递给函数形参。

(3)对象作为函数返回值。故本题答案为B。

23.下列情况中,不会调用拷贝构造函数的是。

A、用一个对象去初始化同一类的另一个新对象时

B、将类的一个对象赋值给该类的另一个对象时

C、函数的形参是类的对象,调用函数进行形参和实参结合时

D、函数的返回值是类的对象,函数执行返回调用时

本题考查的是拷贝构造函数。

拷贝构造函数通常在以下3种情况卜.会被调用:

(1)用类的一个已知的对象去初始化该类的另一个正在创建的对象。

(2)采用传值调用方式时,对象作为函数实参传递给函数形参。

(3)对象作为函数返回值。

故本题答案为B。

24.有如下程序

#include<iostream>#include<iomanip>usingnamespacestd;

intmainO{cout«setprecision(3)«fixed«setfi11('*')<<setw(8);

cout«12_345««34.567;return0;

)

若程序的输出是:**12.345**34.567

则程序中下划线处遗漏的操作符是_____。

A>setprecisionB、fixedC、setfillC*")D、setw(8)

本题考查的是输入输出宽度的控制和输出精度的控制。

setw(intn);设置输入输出的宽度。

setprecision(intn);设置浮点数的精度(有效位数或小数位数)。

setfill(charc);设置填充字符。

由程序可以看出,本题设置小数的输出宽度为8,小数位数为3。输出数据时,如果数据宽度小于8,则空闲的位置用*填充。

故本题答案为D。

25.有如下的运算符重载函数定义:

doubleoperator+(inti,intk){returndouble(i+k);)

但定义有错误,对这个错误最准确的描述是O

A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B、两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

C、没有将运算符重载函数声明为某个类的友元

D、C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

本题考查的是运算符的重教。

在C++中可以对用户自定义类的运算符进行重载,但不能诸如int,char,double等内置类型运算符进行重载。故本题

答案为D。

26.有如下程序

#include<iostream>usingnamespacestd;

classBase{protected:BaseO(cout«*A';}Base(charc){cout<<c;}

);

classDerived:publicBase(

public:Derived(charc){cout«c;}

};

intmain(){Deriveddl('B');return0;}

执行这个程序屏幕上将显示输出oA、BB、BAC、ABD、BB

本题考查的是派生的构造函数和基类的构造函数的调用顺序。

建立派生类对象时,构造函数的执行顺序如下:

(1)执行基类的构造函数。

(2)执行成员对象的构造函数。

(3)执行派生类的构造函数。

派生类Derived由基类Base公有派生而来。在派生类构造函数声明时系统会自动调用基类的缺省构造函数。调用Derived

dl(E);后,执行类Derived的构造函数的Derived(charc)定义,系统会自动调用基类的缺省构造函数Base。,输出字母A;再执

行派生类的构造函数Derived(charc),输出字母B。

故本题答案为C。

27.关于关键字class和typename,下列表述中正确的是___

A、程序中的typename都可以替换为classB、程序中的class都可以替换为typename

C、在模板形参表中只能用typename来声明参数的类型

D、在模板形参表中只能用class或typename来声明参数的类型

本题考查的是模板形参。

模板形参分为两种类型:虚拟类型参数和常规参数。虚拟类型参数须用typename或class定义。常规参数用具体的类型修饰符

(如int、double、char*等)定义,故选项C和D错误。在定义模板时,关键字typename与class可以互相交换,但在定义类时,只

能使用class。typename仅仅用于定义模板,故程序中所有的typename都可以替换成class,但对于用于类定义的class不能使用

typename来替换。故本题答案为A。

28.在一个派生类对象结束其生命周期时。

A、先调用派生类的析构函数后调用基类的析构函数

B、先调用基类的析构函数后调用派生类的析构函数

C、如果基类没有定义析构函数,则只调用派生类的析构函数

D、如果派生类没有定义析构函数,则只调用基类的析构函数

本题考查的是派生类析构函数的执行顺序。

行主函数结束时,派生类析构函数的执行顺序是:先执行派生类的析构函数,再执行成员对象的析构函数,最后执行基类的

析构函数。故本题答案为A。

29.有如下类定义:

classMyBase{

intk;

public:

MyBase(intn=0):k(n){}

intvalue()const{returnk;}

);

classMyDerived:MyBase{

intj;

public:

MyDerived(inti):j(i){)

intgetK()const{returnk;}

intgetj()const{returnj;}

);

编译时发现有•处语法错误,对这个错误最准确的描述是O

A、函数getK试图访问基类的私有成员变量k

B、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private

C、类MyDerived缺少一个无参的构造函数

D、类MyDerived的构造函数没有对基类数据成员k进行初始化

本题考查的是派生类访问权限。

在一个派生类中,其成员由两部分构成:一部分是从基类继承得到的,另•部分是自己定义的新成员,所有这些成员仍然分

为公有、私有和保护三种访问属性。其中,从基类继承下来的全部成员构成派生类的基类部分,这部分的私有成员是派生类不能

直接访问的,公有成员和保护成员则是派生类可以直接访问的。

故本题答案为A。

30.有如下程序

#include<iostream>#include<iomanip>usingnamespacestd;

classMyClass{public:

MyClassO{cout<<,A';J

MyClass(charc){cout«c;}

^MyClassO{cout«*B';}

};

intmainO{MyClasspl,*p2;p2=newMyClass(X);deletep2;return0;}

执行这个程序屏幕上将显示输出oA、ABXB、ABXBC、AXBD、AXBB

本题考查的是析构函数和构造函数。

在定义对象P1时由系统自动调用构造函数MyClass。,输出字母A;用new创建单个对象MyClass(X)时,要根据参数调用相应

的构造函数MyClass(charc),输出字母X:在执行delete时,系统会自动调用析构函数、MyClass(),输出字母B,当对象的生存周

期即将结束时系统会自动调用析构函数MyClassO,输出字母B。故本题答案为及

31.以下关键字不能用来声明类的访问权限的是_____0

A、publicB、staticC、protectedD、private

本题考查的是类的定义。

类定义的一般格式如卜.:

class〈类名〉

(

public:

〈成员函数或数据成员的说明》〃公有成员,外部接口

protected:

《数据成员或成员函数的说明)〃保护成员

private:

(数据成员或成员函数的说明》〃私有成员

};

关键字public、private和protected称为访问权限修饰符,他们限制了类成员的访问控制范围。

故本题答案为B。

32.有如下程序

#include<iostream>

usingnamespacestd;

inti=l;

classFun{

public:

staticinti;

intvalue(){returni-l;)

intvalue()const{returni+1;}

};

intFun::i=2;

intmainO{

inti=3;

Funfunl;

constFunfun2;

return0;

}

若程序的输出结果是:

123

则程序中下划线处遗漏的语句是。

A、cout«funl.value()«Fun::i«fun2.value();

B,cout«Fun::i«funl.value()«fun2.value();

C、cout<<funl.value()«fun2.value()<<Fun::i;

D、cout«fun2.value()«Fun::i«funl.value();

本题主要考查了常对象的一些概念。

由于i是类Fun的静态成员,该成员被类的所有实例共享。对于类中的静态成员函数,可以通过"类名::函数名”的方法来调用,

并且该函数只能访问类中的静态成员。在C++中,对于常对象的成员函数调用,将自动调用其常成员函数。在本题中执行

funl.value(),将调用原型为"intvalue。;”的函数,i的值返回1;执行fun2.value。;,将调用原型为"intvalue。const;"的

函数,i的值返回3:执行Fun::i时,调用类的静态成员i,i的值返回2。故本题答案为鼠

33.有如下说明

inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;

则数值为9的表达式是。

A、*p+9B、*(p+8)C、*p+=9D、p+8

本题考杳的是指针与数组。

数组的下标是从0到数组的长度减1。*(p+i)是取数组的第i+1个元素,即下标为i的元素。因此*(P+8)取数组的第9个元素,即

元素9。故本题答案为B。

34.下列符号中,正确的C++标识符是____o

A、enumB、2bC、foo_9D>32

本题考查的是标识符。

标识符是•个以字母或下划线开头的,由字母、数字、下划线组成的字符串。标识符不能与任意一个关键字同名。故

本题答案为D。

35.下列关于输入流类成员函数getline。的描述中,错误的是。

A、该函数是用来读取键盘输入的字符串的B、该函数读取的字符串长度是受限制的

C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,可以包含空格

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

函数getline(char_type*s,streamsizen,char_typedelim)的作用是从当前位置开始提取字符存入s所指向的具有n各字节

的字符空间。字符的提取与存储在遇到下列情况时停止:

(1)已提取并存储了n-1个字符;

(2)到流尾,无字符可提取;

(3)卜一个要提取的字符等于结束标志del加。

故本题答案为B。

36.按"先进后出"原则组织数据的数据结构是1

标准答案为:栈考生答案为:栈

栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插

入或删除操作,是一种“先进后出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”

的线性表。

37.下列软件系统结构图

的宽度为。

标准答案为:3或三考生答案为:3

软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

38.的任务是诊断和改正程序中的错误。

标准答案为:程序调试或调试考生答案为:软件测试

程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软

件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。

39.一个关系表的行称为。

标准答案为:元组或记录考生答案为:元组

设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型;关系中的行称为元组,对应存储文件中的记录,关

系中的列称为属性,对应存储文件中的字段。

40.数据结构分为线性结构和非线性结构,带链的队列属于。

标准答案为:线性结构考生答案为:线性结构

与栈类似,队列也是线性表,也可以采用链式存储结构。

41.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。

下列程序涉及到对象数组的创建和单个对象的创建,其输出结果是―」

#include<iostream>

usingnamespacestd;

classFoo(

public:

Foo(intx){cout<<'A';}

Foo(){}

);

intmain()

(

Foof[3],g(3);

return0;

)

标准答案为:A考生答案为:AAAA

本题考查的是类的对象数组和成员对象。

从程序可以看出f[3]是类Foo的一个对象数组,因为1、[3]没有显式的给定初值,所以系统自动调用缺省构造函数Foo();在定

义类Foo的对象g(3)时,执行相应的构造函数Foo(intx),输出字母A。

42.插入排序算法的主要思想是:每次从未排序序列中取出的一个数据,插入到已排序序列中的正确位置。InsertSort类的成员

函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。

classInsertSort{

public:

InsertSort(int*aO,intnO):a(aO),n(nO){}〃参数aO是某数组首地址,n是数组元素个数

voidsortO

{〃此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[l]…

for(inti=l;i<n;++i){

intt=a[i];

intj;

for(;j>0;—j){

if(t>=a[j-l])break;

a[j]=a[j-l];}

protected:

int*a,n;〃指针a用于存放数组首地址,n用于存放数组元素个数

);

标准答案为:j二I考生答案为:尸i-l

本题考查的是插入排序。

在Sori函数中,实现函数的插入排序算法,若队列中已有i个数,则向其中插入第i+1个数时,依次与从卜.标为iT到下标为0

的数比较,如果后面的数小于前面的数,则交换这两个数,否则说明该数已排好序,直接跳出内层循环,故此空应填j=i。

43.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用

多态机制,其输出结果是_____。

#include<iostream>

usingnamespacestd;

classBase{

public:

voidprint(){cout«,B';}};

classDerived:publicBase{

public:

voidprint(){cout«,D';}};

intmain()

(

Derived*pd=newDerived();

Base*pb=pd;

pb->print();

pd->print();

deletepd;

return0;

)

标准答案为:BD考生答案为:BD

本题考查的是派生类。

派生类Derived由基类Base公有继承而来,是基类的子类型。调用pb->print();后,执行基类的函数voidprint(),因为尽

管pb的函数print。可以对类Base的公有派生类Derived的对象pd进行操作,但是只能使用从基类Base中继承的成员;调用

pd->print();后,执行派生类的函数voidprint0o

44.若有定义语句:int*a,b;,则变量b的数据类型是。

标准答案为:整型或int考生答案为:int

本题考查的是变量的定义。

int*a,b;把a定义为一个ini类型的指针;把b定义为一个整型变量。

45.在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:

classeBase{

protected:

voidfun(){}

);

classDerived:Base{};

则Base类中的成员函数fun(),在Derived类中的访问权限是一。(注意:要求填写private、protected或public中的一项)。

标准答案为:private考生答案为:private

46.下列程序的输出结果是o

#include<iostream>

usingnamespacestd:

classA{

inta;

public:

A():a(9){)

virtualvoidprint()const{cout<<a;};

1;

classB:publicA{

charb;

public:

B(){b』Sf

voidprint()const{cout«b;}

);

voidshow(A&x){x.print();)

intmain()

{Adl,*p;

Bd2;

p=&d2;

dl.print();

d2.print();

p->print();

show(dl);

show(d2);

return0;

)

标准答案为:9SS9S考生答案为:9SS9S

本题主要考查了缺省构造函数。

在dl、d2定义时分别调用它们的构造函数。调用dl.print。;后,执行类A的virtualvoidprint()函数;调用d2.print();

后,执行派生类B的构造函数voidprint。;调用p->print();后,执行执行派生类B的构造函数voidprint();调用show(dl);后,

调用函数show(A&x),再调用类A的virtualvoidprint。函数;调用show(d2);后,调用函数show(A&x),再调用派生类B的构造函

数voidprint()。

47.一知递归函数f的定义如下:

intf(intn)

(

if(n<=l)return1;〃递归结束情况

elsereturnn*f(n-2);〃递归}

则函数调用语句f(5)的返回值是一o

标准答案为:15

考生答案为:120

本题主要考查了递归算法。

函数每次将f(n)的值转换成相应的关系式n*f(n-2),直到f(l)时为止。所以f(5)=5*1(5-2)=5*3*f(1)=5*3*1=15。

48.已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为iT的单元,其中l〈二i〈n。例如,当n=4,a中

原有的数据为1,2,3,4时,则移动后a中元素变为2,3,4,40请将语句补充完整:

for(inti=0;i<n-l;i++)a[i]=a[];

标准答案为:i+1或1+1考生答案为:i+1

本题考查循环的基本应用。

解题思路为:循环条件是i<n-l,循环的结果是把将下标为i的元素移动到下标为iT的单元,即a[i+l]的值赋给a[i],所以答

案是i+L

49.己知下列程序的输出结果是42,请将画线处缺失的部分补充完整。

#include<iostream>

usingnamespacestd;

classFoot

intvalue;

public:

Foo():value(0){}

voidsetValue(intvalue)

{=value;}〃给Foo的数据成员value赋值

voidprint(){cout«value;}

);

intmainO

(

Foof;

f.setValue(42);

f.print();

return0;

)

标准答案为:this->value或Foo::value或(*this).value考生答案为:

本题考查的是this指针。

this指针,它是成员函数的所属对象的指针,它指向类对象的地址。本题要输出42,也就是要把f.setValue(42);中的42赋

值给Foo的数据成员value,因此横线处缺少的是给Foo的数据成员value赋值的语句,所以答案为this->value或Foo::value。

50.在MyClass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。

MyClass::operator=(constMyClass&rhs)

(

if(this==&rhs)return*this;

value=rhs.value;

return*this;

)

标准答案为:MyClass&考生答案为:

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

一个类如果要重载运算符二,通常也就需要定义自己特有的拷贝构造函数。可以在类体中增加:(const&operatorMyClass&

rhs);然后在MyClass的类体外给出它的完整定义:

MyClass&MyClass::operator=(constMyClass&rhs)

因此在MyC1ass类的定义中缺少MyC1ass&语句。

2010年3月考试真题(第31次)

1.数据流程图(DFD图)是。

A、软件概要设计的工具B、软件详细设计的工具

C、结构化方法的需求分析工具D、面向对象方法的需求分析工具

常见的需求分析方法有:结构化分析方法和面向对象的分析方法。结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构

化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。故本题答案为C。

2.软件(程序)调试的任务是___.

A、诊断和改正程序中的错误B、尽可能多地发现程序中的错误

C、发现并改正程序中的所有错误D、确定程序中错误的性质

程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错

误,然后借助于一定的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。故

本题答案为A。

3.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是。

A、编辑软件B、操作系统C、教务管理系统D、浏览器

软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,

事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。系统软件是计算

机管理白身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数

据库管理系统等,所以选项B属于系统软件。故本题答案为B。

4.软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于«

A、定义阶段B、开发阶段C、维护阶段I)、上述三个阶段

软件生命周期可分为软件定义、软件开发及软件运行维护三个阶段。软件开发阶段包括概要设计、详细设计、实现和测试四个活

动阶段。故本题答案为瓦

5.下列叙述中正确的是___。

A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)

C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为Ooga11)

D、对氏度为n的有序链表进行对分查找,最坏情况下需要的比较次数为Slogan)

对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较bg2n次,而顺序杳找需要比较n次。二分法杳找只适用于顺序

存储的有序表,如果采用链式存储结构,也只能用顺序杳找,所以选项A是正确的。

故本题答案为A。

6.有两个关系R和T如下:

A、选择B、投影C、交D、并

从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。由图可知关系R通过

运算得到关系T,关系T与关系R相比,属性的个数没有发生变化,记录的条数发生了变化。因此所使用的运算应该是选择。故

本题答案为A。

7.算法的时间复杂度是指。

A、算法的执行时间B、算法所处理的数据量C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的基本运算次数

所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出,个算法的效率,在度量一个算法的工

作量时、不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,

可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。故本题答案为I)。

8.数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的.

A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段

E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的

工具。故本题答案为c。

9.在学生管理的关系数据摩中,存取•个学生信息的数据单位是o

A、文件B、数据库C、字段D、记录

实体是概念世界中的基本单位,属性附属于实体,它本身并不构成独立单位。属性有属性域,每个实体可取属性域内的值。一个

实体的所有属性取值组成了一个值集叫元组(或称记录)。在概念世界中,可以用元组表示实体,也可用它区别不同的实体。所

以在学生管理的关系数据库中,存取一个学生信息的数据单位是元组(或记录)。故本题答案为D。

10.数据库管理系统中负责数据模式定义的语言是o

A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言

数据定义语言(DDL):该语言负责数据的模式定义与数据的物理存取构建。

数据操纵语言(DML):该语言负责数据的操纵,包括杳询及增、册IJ、改等操作。

数据控制语言(DCL):该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

故本题答案为A。

11.有如下两个类定义

classXX{

private:

doublexl;

protected:

doublex2;

public:

doublex3;

};

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

);

在类YY中保护成员变量的个数是o

A、1B、2C、3D、4

本题主要考杳了类的继承与派生。

类的继承方式有三种:公有(public)继承、保护(protected)继承和私有(private)继承。当派生类从基类保护继承时,

基类的公有成员和保护成员在派生类中都为保护成员。本题派生类YY从基类XX保护继承,因此基类XX的公有成员x3和保护成员x2

都成为派生类YY的保护成员,再加上派生类YY自身的保护成员y2,因此类YY中有3个保护成员。故木题答案为C。

12.在C++中,cin是一个。

A、类B、对象C、模板D、函数

本题主要考杳了I/O流。

在C++中,数据的输入与输出是通过I/O流来实现,cin和cout是预定义的流类对象。

故本题答案为B。

13.若x和y是程序中的两个整型变量,则下列if语句中正确的是___.

A、if(x==0)y=l;elsey=2;B、if(x==0)theny=lelsey=2;

C、if(x—0)y=lelsey=2;I)、ifx==0y=l;elsey=2;

本题主要考杳了if语句。

if语句的语法形式为:

if(表达式)语句1

else语句2

在C++中,if语句中没有then,语句最后必须有一个分号,因此选项A正确,选项B和选项C错误;在选项D中,表达式x==0应该

用圆括号括起来,因此选项D错误。故本题答案为A。

14.将运算符重载为非成员函数,下列原型声明中,错误的是___。

A、MyClockoperator+(MyClock,long);B、MyClockoperator+(MyClock,MyClock);

C、MyClockoperator+(long,long);D^MyClockoperator+(long,MyClock);

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

运算符的重载是针对新类型数据的实际需要,对原有运

温馨提示

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

评论

0/150

提交评论