全国计算机等级考试二级C++笔试历年真题.docx
《全国计算机等级考试二级C++笔试历年真题.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C++笔试历年真题.docx(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2006年9月考试真题(第24次)1 .从工程管理角度,软件设计般分为两步完成,它们是.A、概要设计与详细设计 B、过程控制C、软件结构设计与数据设计D、程序设计与数据设计从工程管理角度看,软件设计分为两步完成:概要设计与详细设计。概要设计(又称结构设计)将 软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;详细设计确立每个模块的 实现算法和局部数据结构,用适当方法表示算法和数据结构的细节. 故本题答案为A。2 .数据库技术的根本目标是解决数据的.A、存储问题B、共享问题 C、安全问题 D、保护问题由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今大,数据库与
2、网络的结合 扩大了数据关系的应用范用。数据的共享本身又“I极大地减少数据冗余性,不仅减少了不必要的存储空间, 更为重要的是可以避免数据的不 致性。因此,数据库设计的根本目标是要解决数据共享问题。故本题答案为B。3 .在数据库系统中,用户所见数据模式为.A、概念模式 B、外模式 C、内模式 D、物理模式数据库管理系统的三级模式结构III外模式、模式和内模式组成。外模式又称为子模式,或用户模式, 是指数据库用户所看到的数据结构,是用户看到的数据视图。模式又称为逻辑模式,是数据库中对全体数 据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分.内模式又称 为存储模式或物理
3、模式,是指数据在数据库系统内的存储介质匕的表示,即时数据的物理结构和存取方式 的描述。 故本题答案为B。4 .在长度为64的有序线性表中进行顺序查找,最坏情况下需耍比较的次数为。A、 63 B、 64 C、 6 D、 7在进行顺序查找过程中,如果线性表中的第1个元素就是被查找元索,则只需做一次比较就查找成 功,杏找效率最高;但如果被春找的元素是线性表中的最后一个元素,或者被杳找的元索根本就不在线性 衣中,则为/音找这个元素需要5线性衣中所有的元素进行比较,这是顺序有找的最坏情况。所以对长度 为n的线性表进行顺序查找,在最坏情况下需要比较n次.故本题答案为B。5 .对下列二叉树进行中序遍历的结果
4、是.A、 ACBDFEG B、 ACBDFGE C, ABDCGEF D、 FCADBEG二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根 结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。故本题答案为A。6 .卜.列选项中不属于软件生命周期开发阶段任务的是.A、软件测试B、概要设计C、软件维护D,详细设计软件生命周期分为软件定义、软件开发及软件维护。其中软件开发阶段的任务中软件设计阶段可分 解成概要设计阶段和详细设计阶段:软件维护不属于软件开发阶段。故木题答案为C。7 .下列叙述中正确的是 。A、一个算法的
5、空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、上述三种说法都不对算法的复杂度主要包括时间复杂度和空间复杂度:算法在运行过程中需辅助存储空间的大小称为算 法的空间复杂度:尊法的时间复杂度是指执行算法所需要的计算工作鼠,即算法执行过程中所需要的基本 运算次数,为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用 的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可 以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量. 故本题答案为
6、D。8.5列选项中不符合良好程序设计风格的是.A、源程序要文档化B、数据说明的次序耍规范化 C、避免滥用goto语句D、模块设计要保证高耦合、高内聚良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此,程序设计风格对保证 程序的质量很重要。主要应注意和考虑卜,述一些因素:1、源程序要文档化:2、数据说明的次序要规范化; 3、语句的结构应该简单直接,不应该为提高效率而把语句发杂化,避免滥用got。语句模块设计要保证低 耦合、高内聚。故本题答案为D。9 .设有如下三个关系表故本题答案为C。10 .数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和二A、编码设计B、测试阶段C、运行
7、阶段D、物理设计数据库设计分为以卜6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实 施阶段及数据库运行和维护阶段。故本题答案为及11 .下列运算符不能重载为友元函数的是A, = () - B、 + - + C, = 以及所有的类型转换运算符只能作为成员函数重载,不能重载为友元函数。故本题答案为A。12 .语句ofstream f (SALARY. DAT, ios_base: :app);的功能是建立流对象f,并试图打开文件SALARY. DAT 与f关联,而且.A、若文件存在,将其置为空文件;若文件不存在,打开失败B,若文件存在,将文件指针定位于文件尾:若文件不存在,
8、建立一个新文件C、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D、若文件存在,打开失败;若文件不存在,建立一个新文件本题考查的是文件流的输出。ofstream f(SALARY. DAT, ios base:app);是以ios base: :app方式打开文件,若文件存在,将文件指针定位于文件尾:若文件不存在,建立一个新文件。故木题答案为B。13 .有如下程序#includeiostream using namespace std;class A public:virtual void fund() cout,AlM;coutnA2M;coutMBr,;)coutHB2H;)v
9、oid func2() );class B:public A public:void fund () void func2() ; int mai n() (A*p=new B; p-funcl (); p-func2(); return 0;) 运行此程序,屏幕上将显示输出 OA、 B1B2 B、 A1A2 C、 B1A2 D、 A1B2 本题考查的是派生类。派生类B由菸类A公有继承而来。调用p-funcl();后,执行派生类B的函数void funclO:调用 p-”unc2();后,执行基类的困数voidfunc2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是 根据指针类型调用
10、。故通过指针p调用func2时将直接调用基类中的void func2()。故本题答案为C。14 . if语句的语法格式可描述为:格式1: if条件)语句或格式2: if(条件)语句lelse语句2关于上面的语法格式,下列表述中错误的是 0A、条件部分可以是一个if语句,例如if(if(a=0)B、语句部分可以是一个if语句,例如if()if()C、如果在条件前加上逻辑非运算符!并交换语句1和语句2的位置,语句功能不变D、语句部分可以是一个循环语句,例如if()while()本题考查的是if语句.if为美键字,(条件通常是一个表达式;if子句和else子句可以是任何类型的语句,当然也可以是if
11、else语句本身和while语句.ifelse语句的基本执行过程是:首先计算条件的值,如果此值不为0 (真”),则执行语句1,然后忽略,而去执行if语句之后的下条语句;如果此值为0 (假”),则执行语句2,然后忽略*、:、?:这5个运算符外,其它运算符都可以重载,故选项A错误。运算符函数的返回类型可 以声明为基本数据类型,故选项B错误。在近载类型转换符时,由于运算符本身C经表示出返回值类型,因 此不需要返回值类型的声明。故本题答案为C。17 .关于在调用模板函数时模板实参的使用,卜.列叙述正确的是。A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则 都可以省略B、
12、对于虚拟类型参数所对应的模板实参,如果他们是参数表中的最后的若干参数,则都可 以省略C、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D、对于常规参数所对应的模板实参,任何情况下都不能省略本题考簧的是函数模板中模板实参的省略。对于虚拟类型参数所对应的模板实参,如果从模板函数的实参表中获得的信息已经能够判定其中部分 或全部虚拟类型参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省 略。反之,对于某个模板实参,如果从模板函数的实参表中无法获得相同的信息,就不能省略:或者虽然 能够获得同样的信息,但在它后面还仃不能省略的实参,则其自身还是不能省略,故选项A和B错误
13、。对于 虚拟类型参数所对应的模板实参,若能够省略可以省略,也可以不省略,故选项C错误.常规参数的信息无 法从模板函数的实参表中获得,因此在调用时必须显式的说明.故本题答案为D。18 .若有下面的函数调用:fun(a+b, 3, raax (n-1, b)则fun的实参个数是. A、3 B、4 C、5 D、6 本题考查的是函数的调用。在C+中,形参列表是由逗号分开的,分别说明函数的各个参数。在fun()函数中它包括3个形参,a+b, 3和mx(n-l,b);当调用一个函数时,实参与形参对地匹配,所以实参个数也是3个。 故本题答案为A。19 .下列有关内联函数的叙述中,正确的是。A、内联函数在调用
14、时发生控制转移 B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句 木题考查的是内联函数。在C+中使用inline关键字来定义内联函数。iniine关键字放在函数定义中函数类型之前。不过编译器 会将在类的说明部分定义的任何函数都认定为内联函数,即使它们没有inline说明。一个内联函数可以有, 也可以没有return语句。内联函数在程序执行时并不产生实际函数调用,而是在函数调用处将函数代码展 开执行。内联函数是通过编译器来实现的。故本题答案为C。20 .在公有继承的情况下,允许派生类直接访问的基类成员包括一A、公有
15、成员 B、公有成员和保护成员C、公有成员、保护成员和私有成员D、保护成员本题考查的是派生类。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对 基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。故木题答案为B。21 .有如下程序:#includeusing namespace std;class Objstatic int i;public:ObjO i+;、Obj() ;static int getVal () return i;);int Obj:i=0;void f() Obj ob2;coutob2. getV
16、al(); int main()Obj obi;f();0bj*ob3=new Obj;coutgetVal ();delete ob3;coutObj: getVal ();return 0;)程序的输出结果是。 A、232 B、231 C、222 D、221本题主要考查了 C+中类的价态成员。由于i是类Obj的静态成员,该成员被类的所有实例共享。当定义obi时,系统自动调用构造函数Obj(), i的值将加1;调用函数()时,在定义ob2时系统会自动调用构造函数Obj(), i的值将再加1;调用 ob2. getVal ();后,将i的值输出,输出值为2;当调用函数f()即将结束时,系统自动
17、调用析构函数、Obj(),i的值将减1;当定义ob3时,系统自动调用构造函数Obj(), i的值将加1,调用coutgetVal 0 ;后, 将i的值输出,输出值为2;调用delete ob3后将执行Obj的析构函数、Ob_j(),执行后,i的值将减1, Obj:getVal()为类的一个静态成员函数,其作用是返回私有静态成员变量i的值1。故本题答案为D。22 .下列有关继承和派生的叙述中,正确的是.A、如果一个派生类私有继承其基类,则该派生类中的成员不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的个纯虚函数,则该派生
18、类是个抽象类23 .下列情况中,不会调用拷贝构造函数的是.A、用一个对象去初始化同一类的另一个新对象时B、将类的一个时象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时 本题考查的是拷贝构造函数。拷贝构造函数通常在以下3种情况下会被调用:(1)用类的一个已知的时象去初始化该类的另一个正在创建的对象。(2)采用传值调用方式时,对象作为函数实参传递给函数形参.(3)对象作为函数返回值。故本题答案为B。24 .有如下程序#include#include using namespace std; int mainO couts
19、etprecision(3)fixedsetfill (*)setw(8);cout12. 34534. 567;return 0;若程序的输出是:*12. 345*34. 567则程序中下划线处遗漏的操作符是 oA、setprecision B、fixed C、setfill (*) D、setw(8) 本题考杏的是输入输出宽度的控制和输出精度的控制。setw(int n);设置输入输出的宽度。setprecision(int n);设置浮点数的精度(有效位数或小数位数)。setfill (char c);设置填充字符。由程序可以看出,本题设置小数的输出宽度为8,小数位数为3。输出数据时,如
20、果数据宽度小于8,则 空闲的位置用*填充。故本题答案为D。25 .有如下的运算符重载函数定义:double operator + (int i, int k) return double(i+k) ;但定义有错误,对这个错误最准确的描述是 OA、+只能作为成员函数重载,而这里的+是作为非成员函数重载的B、两个int型参数的和也应该是int型,而这里将+的返回类型声明为doubleC、没有将运算符重载函数声明为某个类的友元D、C+已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符 本题考查的是运算符的重载。在C+中可以对用户自定义类的运算符进行重载,但不能诸如int, char,
21、 double等内置类型运算符进 行重载。故本题答案为D。26 .有如下程序#include using namespace std; class Base protected:BaseO cout*A*;Base (char c) coutc;) ;class Derived:public Base public:Derived (char c) coutc; ;int main() Derived dl(B); return 0; 执行这个程序屏幕上将显示输出。 A、B B、BA C、AB D、BB 木题考查的是派生的构造函数和基类的构造函数的调用顺序。建立.派生类对象时,构造函数的执行顺
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 C+ 笔试 历年
限制150内