《2006年9月全国计算机二级C语言考试真题及答案.doc》由会员分享,可在线阅读,更多相关《2006年9月全国计算机二级C语言考试真题及答案.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2006年9月全国计算机二级C语言考试真题及答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列选项中不符合良好程序设计风格的是_。A)、源程序要文档化B)、数据说明的次序要规范化C)、避免滥用goto语句D)、模块设计要保证高耦合,高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是_。A)、概要设计与详细设计B)、数据设计与接口设计C)、软件结构设计与数据设计D)、过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是_。A)、软件测试B)、概要设计C)、
2、软件维护D)、详细设计(4)在数据库系统中,用户所见的数据模式为_。A)、概念模式B)、外模式C)、内模式D)、物理模式(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和_。A)、编码设计B)、测试阶段C)、运行阶段D)、物理设计(6)设有如下三个关系表下列操作中正确的是A)、T=RSB)、T=RSC)、T=RSD)、T=R/S(7)下列叙述中正确的是A)、一个算法的空间复杂度大,则其时间复杂度也必定大B)、一个算法的空间复杂度大,则其时间复杂度必定小C)、一个算法的时间复杂度大,则其空间复杂度必定小D)、上述三种说法都不对(8)在长为64的有序线性表中进行顺序查找,坏情况下需要比较
3、的次数为_。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)、将类的一个对象赋
4、予该类的另一个对象时C)、函数的形参是类的对象,调用函数进行形参和实参结合时D)、函数的返回值是类的对象,函数执行返回调用时(13)下列有关继承和派生的叙述中,正确的是_。A)、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B)、派生类的成员函数可以访问基类的所有成员C)、基类对象可以赋值给派生类对象D)、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(14)下列运算不能重载为友元函数的是_。A)、=()-B)、+-+-C)、=D)、+=-=*=/=(15)关于在调用模板函数时模板实参的使用,下列表述正确的是_。A)、对于虚类型参数所对应的模板实参,如果能从模
5、板函数的实参中获得相同的信息,则都可以省略B)、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的后的若干个参数,FCEADBG则都可以省略C)、对于虚拟型参数所对应的模板实参,若能够省略则必须省略D)、对于常规参数所对应的模板实参,任何情况下都不能省略(16)下列关于输入流类成员函数getline()的描述中,错误的是_。A)、该函数是用来读取键盘输入的字符串的B)、该函数读取的字符串长度是受限制的C)、该函数读取字符串时,遇到终止符便停止D)、该函数读取字符串时,可以包含空格(17)下列符号中,正确的C+标识符是_。A)、enumB)、2bC)、foo-9D)_32(18)下列语句中,
6、错误的是_。A)、constintbuffer=256;B)、constdouble*point;C)、intconstbuffer=256;D)、double*constpoint;(19)if语句的语法格式可描述为格式1:if()或格式2:if()else关于上面的语法格式,下列表述中错误的是A)、部分可以是一个if语句,例如if(if(a=0)?)?B)、部分可以是一个if语句,例如if(?)if(?)?C)、如果在前加上逻辑非运算符!并交换和的位置,语句功能不变D)、部分可以是一个循环语句,例如if(?)while(?)?(20)有如下说明inta10=1,2,3,4,5,6,7,8,
7、9,10,*p=a;则数值为9的表达式是_。A)、*p+9B)、*(p+8)C)、*p+=9D)、p+7(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)、运算符函
8、数的返回类型不能声明为基本数据类型C)、在类型转换符函数的定义中不需要声明返回类型D)、可以通过运算符重载来创建C+中原来没有的运算符(25)关于关键字class和typename,下列表述中正确的是_。A)、程序中的typename都可以替换为classB)、程序中的class都可以替换为typenameC)、在模板形参表中只能用typename来声明参数的类型D)、在模板形参表中只能用class或typename来声明参数的类型(26)有如下程序#include#includeusingnamespacestd;intmain()countcount12,34534,567;return0
9、;若程序的输出是:*12.345*34.567则程序中下划线处遗漏的操作符是_。A)、setprecision(3)B)、fixedC)、setfill(*)D)、stew(8)(27)有如下程序#include#includeusingnamespacestd;classMyClasspublic:MyClass()coutA”;MyClass(charccoutMyClass()soutB”;Intmain()MyClassp1,*p2p2=newMyClass(X);deletep2;return0;执行这个程序幕上将显示输出_。A)、ABXB)、ABXBC)、AXBD)、AXBB/co
10、unt12,34534,567;(28)有如下程序#includeusingnamespacestd;inti=1;classFunpublic;staticinti;intvalue()returni-1intvalue()constreturni+1;intFun;i=2;intmain()inti=3;FunFun1constFunfun2;return0;若程序的输出结果是:123则程序中下划线处遗漏的语句是_。A)、coutB)、coutC)、coutD)、cout(29)有如下程序#includeusingnamespacestd;classObjstaticinti;public
11、:Obj()i+;Obj()i-;staticintgetVal()teturni;intObj:i=0;voidf()Objob2;coutintmain()Objobl;F();Obj*ob3=newObj;coutgetval();Deleteob3;coutreturn0;程序的输出结果是_。A)、232B)、231C)、222D)、221(30)有如下程序#includeusingnamespacestd;classBaseprotected;Base()coutA;Base(charc)cout;classDerived;publicBasepublic:Derived(charc
12、)cout;intmain()Derivedd1(B);return0;执行这个程序屏幕上将显示输出_。A)、BB)、BAC)、ABD)、BB(31)有如下类定义:classMyBaseintk;public;MyBase(intn=0):k(n)intvalue()constreturnk;classMyDerived;MyBaseintj;public;MyDerived(inti):j(i)intgetK()constreturnk;intgutj()constreturnj;编译时发现有一处语法错误,对这个错误准确的描述是A)、函数getK试图访问基类的私有成员变量KB)、在类MyDe
13、rived的定义中,基类名MyBase前缺少关键字public、protected或privateC)、类MyDerived缺少一个无参的构造函数D)、类MyDerived的构造的数没有对基数数据成员K进行初始化(32)在一个派生类对象结束其生命周期时A)、先调用派生类的析构函数后调用基类的析构函数B)、先调用基类的析构函数后调用派生类的析构函数C)、如果基数没有定义析构函数,则只调用派生类的析构函数D)、如果派生类没有定义析构函数,则只调用基类的析构函数(33)有如下的运算重载函数定义:Doubleoperator+(inti,intk)returndouble(i+k);但定义有错误,对这
14、个错误的准确的描述是_。A)、+只能作为成员函数重载,而这里的+是作为非成员函数重载的B)、两个int型参数的和应该是int型,而这里将+的返回类型声明为doubleC)、没有将运算符重载函数声明为某个类的友元D)、C+已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符(34)语句ofstreamf(“SALARY.DAT”,ios_base:app)的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且_。A)、若文件存在,将其置为空文件;若文件不存在,打开失败B)、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C)、若文件存在,将文件指针定位
15、于文件首;若文件不存在,打开失败D)、若文件存在,打开失败;若文件不存在,建立一个新文件(35)有如下程序#includeusingnamespacestd;classApublic:virtualVoidfuncl()cout“A1”;voidfune2()cout“A2”;classB:publicApublic:voidfunc1()cout“B1”;voidfunc2()coutfuncl();p-func2();retum0;运行程序,屏幕上将显示输出_。A)、B1B2B)、A1A2C)、B1A2D)、A1B2/return0;/getval();/intmain()二、填空题(每空
16、2分,共30分)请将每一个空的正确答案写在答题卡115序号的横线上,答在试卷上不得分。(1)下列软件系统结构图的宽度为1。(2)2的任务是诊断和改正程序中的错误。(3)一个关系表的行为3。(4)按“行进后出”原则组织数据的数据结构是4。(5)数据结构分为线性结构和非线性结构,带链的队列属于5。(6)若有定义语句:int*a,b;,则变量b的数据类型是6。(7)已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i1的单元,其中1in。例如,当n=4,a中原有数据为1,2,3,4时,则移动后a中元素为2,3,4,4。请将语句补充完整:For(inti=0;i(8)已知递归函数
17、f的定义如下:intf(intn)If(n1)return1;/递归结束情况elsereturnn*f(n-2);/递归则函数调用语句f(5)的返回值是8。(9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数,下列程序涉及到对象数组的创建和单个对象的创建,其输出结果是9。#includeusingnamespacestd;classFoopublic:Foo(intX)coutA”Foo();intmain()Foof3,g(3);return0;(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。#include
18、Usingnamespaceatd;ClassFoointvalue;public:Foo():value(0)Voidsetvalue(intvalue)10=value;/给Foo的数据成员value赋值voidprint()cout;Intmain()Foof;f.setvalue(42);f.print();retum0;(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是11。#includeusingnamespacestd;classBasepublic:Voidprint()coutB;cl
19、assDerived:publicBasepublicvoidprint()coutprint();pd-print();deletepd;return0;(12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:classBaseprotected:voidfun();ClassDerived:Base;则Base类中的成员函数fun(),在Derived类中的访问权限是12(注意:要求填写private、protected或public中的一项)。(13)在MyClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。1
20、3MyClass:operator=(constMyClassrhs)if(this=&rhs)return*this;value=rhs.value;return*this;(14)插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置,InsertSort类的成员函数sort()实现了插入排序算法,请将画线处缺失的部分补充完整。classInsertSortpublic:InsertSort(int*a0,intn0):a(a0),n(n0)/参数组首地址,n是数组元素个数voidsort()/此函数假设已排离序列初始化状态只包含a0,未排序序列初始为a1?
21、an-1for(inti=1;iintj;for(14j0;-j)if(taj-1)break;aj=aj-1;aj=t;protected:int*a,n;/指针a用于存放数组首地址,n用于存放数组元素个数;(15)下列程序的输出结果是15#includeusingnamespacestd;classAintapublic:A():a(9)virtualvoidprint()constcout;classB:publicAcharb;public:B()b=S;voidprint()constcoutprint();show(d1);show(d2);return0;参考答案一、选择题:0105DACBD0610CDBBA1115ADDAD1620CCBBC2125DACBC2630ABCDC3135ADBAD3640BBADC4145CBBCD4650BABDC二、填空题:1、32、调试3、元组4、栈5、线性6、12346.07、10118、19、7410、n=n/1011、(x+8)12、sin(x)13、014、i%2=015、s-16、*s+17、1818、161119、-data20、”rb”22
限制150内