二级C.docx
- 文档编号:6009012
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:15
- 大小:21.66KB
二级C.docx
《二级C.docx》由会员分享,可在线阅读,更多相关《二级C.docx(15页珍藏版)》请在冰豆网上搜索。
二级C
2006年9月二级C++考试试卷
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写
在答题卡相应位置上,答在试卷上不得分。
(1)下列选项中不符合良好程序设计风格的是______。
A)、源程序要文档化B)、数据说明的次序要规范化
C)、避免滥用goto语句D)、模块设计要保证高耦合,高内聚
(2)从工程管理角度,软件设计一般分为两步完成,它们是______。
A)、概要设计与详细设计B)、数据设计与接口设计
C)、软件结构设计与数据设计D)、过程设计与数据设计
(3)下列选项中不属于软件生命周期开发阶段任务的是______。
A)、软件测试B)、概要设计C)、软件维护D)、详细设计
(4)在数据库系统中,用户所见的数据模式为______。
A)、概念模式B)、外模式C)、内模式D)、物理模式
(5)数据库设计的四个阶段是:
需求分析、概念设计、逻辑设计和______。
A)、编码设计B)、测试阶段C)、运行阶段D)、物理设计
(6)设有如下三个关系表
下列操作中正确的是
A)、T=R∩SB)、T=R∪SC)、T=R×SD)、T=R/S
(7)下列叙述中正确的是
A)、一个算法的空间复杂度大,则其时间复杂度也必定大
B)、一个算法的空间复杂度大,则其时间复杂度必定小
C)、一个算法的时间复杂度大,则其空间复杂度必定小
D)、上述三种说法都不对
(8)在长为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为______。
A)、63B)、64C)、6D)、7
(9)数据库技术的根本目标是要解决数据的______。
A)、存储问题B)、共享问题C)、安全问题D)、保护问题
(10)对下列二叉树:
进行中序遍历的结果是______。
A)、ACBDFEGB)、ACBDFGEC)、ABDCGEFD)、FCADBEG
(11)下列有关内联函数的叙述中,正确的是______。
A)、内联函数在调用时发生控制转移
B)、内联函数必须通过关键字inline来定义
C)、内联函数是通过编译器来实现的
D)、内联函数体的最后一条语句必须是rennin语句
(12)下列情况中,不会调用拷贝构造函数的是______。
A)、用一个对象去初始化同一类的另一个新对象时
B)、将类的一个对象赋予该类的另一个对象时
C)、函数的形参是类的对象,调用函数进行形参和实参结合时
D)、函数的返回值是类的对象,函数执行返回调用时
(13)下列有关继承和派生的叙述中,正确的是______。
A)、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员
B)、派生类的成员函数可以访问基类的所有成员
C)、基类对象可以赋值给派生类对象
D)、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
(14)下列运算不能重载为友元函数的是______。
A)、=()[]->B)、+-++--
C)、><>=<=D)、+=-=*=/=
(15)关于在调用模板函数时模板实参的使用,下列表述正确的是______。
A)、对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,
则都可以省略
B)、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,
F
CE
AD
BG
则都可以省略
C)、对于虚拟型参数所对应的模板实参,若能够省略则必须省略
D)、对于常规参数所对应的模板实参,任何情况下都不能省略
2006年9月二级C++考试试卷第4页(共5页)
(16)下列关于输入流类成员函数getline()的描述中,错误的是______。
A)、该函数是用来读取键盘输入的字符串的
B)、该函数读取的字符串长度是受限制的
C)、该函数读取字符串时,遇到终止符便停止
D)、该函数读取字符串时,可以包含空格
(17)下列符号中,正确的C++标识符是______。
A)、enumB)、2bC)、foo-9D)_32
(18)下列语句中,错误的是______。
A)、constintbuffer=256;B)、constdouble*point;
C)、intconstbuffer=256;D)、double*constpoint;
(19)if语句的语法格式可描述为
格式1:
if(<条件>)<语句>
或
格式2:
if(<条件>)<语句1>else<语句2>
关于上面的语法格式,下列表述中错误的是
A)、<条件>部分可以是一个if语句,例如if(if(a=0)⋯)⋯
B)、<条件>部分可以是一个if语句,例如if(⋯)if(⋯)⋯
C)、如果在<条件>前加上逻辑非运算符!
并交换<语句1>和<语句2>的位置,语句功
能不变
D)、<语句>部分可以是一个循环语句,例如if(⋯)while(⋯)⋯
(20)有如下说明
inta[10]={1,2,3,4,5,,6,7,8,9,10},*p=a;
则数值为9的表达式是______。
A)、*p+9`B)、*(p+8)C)、*p+=9D)、p+7
2006年9月二级C++考试试卷第5页(共5页)
(21)或下面的函数调用
fun(a+b,3,max(n-1)b)
则fun的实参个数是______。
A)、3B)、4C)、5D)、6
(22)以下关键字不能用来声明类的访问权限的是______。
A)、publicB)、staticC)、protectedD)、private
(23)在公有继承的情况下,允许派生类直接访问的基类成员包括______。
A)、公有成员B)、公有成员和保护成员
C)、公有成员、保护成员和私有成员D)、保护成员
(24)关于运算符重载,下列表述中正确的是______。
A)、C++已有的任何运算符都可以重载
B)、运算符函数的返回类型不能声明为基本数据类型
C)、在类型转换符函数的定义中不需要声明返回类型
D)、可以通过运算符重载来创建C++中原来没有的运算符
(25)关于关键字class和typename,下列表述中正确的是______。
A)、程序中的typename都可以替换为class
B)、程序中的class都可以替换为typename
C)、在模板形参表中只能用typename来声明参数的类型
D)、在模板形参表中只能用class或typename来声明参数的类型
(26)有如下程序
#include
#include
usingnamespacestd;
intmain(){
2006年9月二级C++考试试卷第6页(共5页)
count< count<<12,345<<<<34,567; return0; } 若程序的输出是: **12。 345**34。 567 则程序中下划线处遗漏的操作符是______。 A)、setprecision(3)B)、fixedC)、setfill('*')D)、stew(8) (27)有如下程序 #include #include usingnamespacestd; classMyClass{ public: MyClass(){cout<<’A”;} MyClass(charc{cout< ~MyClass(){sout<<’B”;} }; Intmain(){ MyClassp1,*p2 p2=newMyClass(‘X’); deletep2; return0; } 2006年9月二级C++考试试卷第7页(共5页) 执行这个程序幕上将显示输出______。 A)、ABXB)、ABXBC)、AXBD)、AXBB (28)有如下程序 #include usingnamespacestd; inti=1; classFun{ public; staticinti; intvalue(){returni-1} intvalue()const{returni+1;} }; intFun;;i=2; intmain(){ inti=3; FunFun1 constFunfun2; return0; } 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是______。 A)、cout< : i< B)、cout< : i< value()< 2006年9月二级C++考试试卷第8页(共5页) C)、cout< value()< value()< : i; D)、cout< value()< : i< value(); (29)有如下程序 #include usingnamespacestd; classObj{ staticinti; public: Obj(){i++;} ~Obj(){i--;} staticintgetVal(){teturni;} }; intObj: : i=0; voidf(){Objob2;cout< getVal();} intmain(){ Objobl; F(); Obj*ob3=newObj;cout< Deleteob3;cout< : getVal(); Return0; } 程序的输出结果是______。 A)、232B)、231C)、222D)、221 (30)有如下程序 2006年9月二级C++考试试卷第9页(共5页) #include usingnamespacestd; classBase{ protected; Base(){cout<<’A’;} Base(charc){cout< }; classDerived;publicBase{ public: Derived(charc){cout< }; intmain(){ Derivedd1(‘B’); return0; } 执行这个程序屏幕上将显示输出______。 A)、BB)、BAC)、ABD)、BB (31)有如下类定义: classMyBase{ intk; public; MyBase(intn=0): k(n){} intvalue()const{returnk;} }; 2006年9月二级C++考试试卷第10页(共5页) classMyDerived;MyBase{ intj; public; MyDerived(inti): j(i){} intgetK()const{returnk;} intgutj()const{returnj;} }; 编译时发现有一处语法错误,对这个错误最佳准确的描述是 A)、函数getK试图访问基类的私有成员变量K B)、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或p rivate C)、类MyDerived缺少一个无参的构造函数 D)、类MyDerived的构造的数没有对基数数据成员K进行初始化 (32)在一个派生类对象结束其生命周期时 A)、先调用派生类的析构函数后调用基类的析构函数 B)、先调用基类的析构函数后调用派生类的析构函数 C)、如果基数没有定义析构函数,则只调用派生类的析构函数 D)、如果派生类没有定义析构函数,则只调用基类的析构函数 (33)有如下的运算重载函数定义: Doubleoperator+(inti,intk){returndouble(i+k);} 但定义有错误,对这个错误的最准确的描述是______。 A)、+只能作为成员函数重载,而这里的+是作为非成员函数重载的 B)、两个int型参数的和应该是int型,而这里将+的返回类型声明为double C)、没有将运算符重载函数声明为某个类的友元 2006年9月二级C++考试试卷第11页(共5页) D)、C++已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符 (34)语句ofstreamf(“SALARY。 DAT”,ios_base: : app)的功能是建立流对象f, 并试图打开 文件SALARY。 DAT与f关联,而且______。 A)、若文件存在,将其置为空文件;若文件不存在,打开失败 B)、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 C)、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败 D)、若文件存在,打开失败;若文件不存在,建立一个新文件 (35)有如下程序 #include usingnamespacestd; classA{ public: virtualVoidfuncl(){cout<<“A1”;} voidfune2(){cout<<“A2”;} }; classB: publicA{ public: voidfunc1(){cout<<“B1”;} voidfunc2(){cout<<“B2”;} }; Intmain(){ A*p=newB; p->funcl(); 2006年9月二级C++考试试卷第12页(共5页) p->func2(); retum0; } 运行程序,屏幕上将显示输出______。 A)、B1B2B)、A1A2C)、B1A2D)、A1B2 二、填空题(每空2分,共30分) 请将每一个空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。 (1)下列软件系统结构图 的宽度为[1]。 (2)[2]的任务是诊断和改正程序中的错误。 (3)一个关系表的行为[3]。 (4)按“行进后出”原则组织数据的数据结构是[4]。 (5)数据结构分为线性结构和非线性结构,带链的队列属于[5]。 (6)若有定义语句: int*a,b;,则变量b的数据类型是[6]。 (7)已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标 为i-1的单元,其中1≤i<n。 例如,当n=4,a中原有数据为1,2,3,4时,则移 动后a 中元素为2,3,4,4。 请将语句补充完整: For(inti=0;i (8)已知递归函数f的定义如下: 2006年9月二级C++考试试卷第13页(共5页) intf(intn) { If(n<=1)return1;//递归结束情况 elsereturnn*f(n-2);//递归}则函数调用语句f(5)的返回值是[8]。 (9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给 出数组元素的初值,则调用缺省构造函数,下列程序涉及到对象数组的创建和单个对象 的创 建,其输出结果是[9]。 #include usingnamespacestd; classFoo{ public: Foo(intX){cout<<’A”} Foo(){} }; intmain() Foof[3],g(3); return0; } (10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。 #include Usingnamespaceatd; ClassFoo{ intvalue; 2006年9月二级C++考试试卷第14页(共5页) public: Foo(): value(0){} VoidsetValue(intvalue) {[10]=value;//给Foo的数据成员value赋值}voidprint(){cout< }; Intmain() { Foof; f。 setValue(42); f。 print(); retum0; } (11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是 只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是[11]。 #include usingnamespacestd; classBase{ public: Voidprint(){cout<<‘B’;}}; classDerived: publicBase{ public voidprint(){cout<<‘D’;}} intmain() { 2006年9月二级C++考试试卷第15页(共5页) Derived*pd=newDreived); Base*pb=pd; pb->print(); pd->print(); deletepd; return0; } (12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承 private。 已知有如下类定义: classBase{ protected: voidfun(){} }; ClassDerived: Base{}; 则Base类中的成员函数fun(),在Derived类中的访问权限是[12](注意: 要求填 写private、protected或public中的一项)。 (13)在MyClass类的定义中,对赋值运算符=进行重载。 请将画线处缺失的部分补充 完整。 [13]MyClass: : operator=(constMyClassrhs) { if(this=&rhs)return*this; value=rhs。 value; return*this; } 2006年9月二级C++考试试卷第16页(共5页) (14)插入排序算法的主要思想是: 每次从未排序序列中取出一个数据,插入到已排 序序列中的正确位置,InsertSort类的成员函数sort()实现了插入排序算法,请将画线处 缺失的部分 补充完整。 classInsertSort{ public: InsertSort(int*a0,intn0): a(a0),n(n0){}//参数组首地址,n是数组元素个数 voidsort() {//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]⋯a[n-1] for(inti=1;i intj; for([14];j>0;--j){ if(t>a[j-1])break; a[j]=a[j-1];} a[j]=t;}} protected: int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数 }; (15)下列程序的输出结果是[15] #include usingnamespacestd; classA{ inta public: A(): a(9){} 2006年9月二级C++考试试卷第17页(共5页)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级