公共基础知识及C_第1页
公共基础知识及C_第2页
公共基础知识及C_第3页
公共基础知识及C_第4页
已阅读5页,还剩64页未读, 继续免费阅读

下载本文档

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

文档简介

公共基础知识及C++语言程序设计(考试时间90分钟,满分100)分)选择题((1-(35)每小题2分,共70分)(DC⑵C⑶B(4)A(5)D(6)B(7)D(8)B⑼C(10)A(11)D(12)D(13)C(14)D(15)A(16)A(17)D(18)B(19)D(20)C(21)B(22)A(23)B(24)B(25)C(26)D(27)C(28)A(29)A(30)C(3DC(32)B(33)D(34)B(35)B二、填空题(每空2分,共30分)(1)[1]时间(2)12]存储结构或物理结构或物理存储结构(3)[3]黑盒或黑箱(4)14]一对多或1对多或I:M或I:N(其中M、N大小写均可)⑸⑸投影(6)[6]60⑺[7]编译(8)[8]friend(9)[9]A(aa),c(aa+1)或c(aa+l),A(aa)(10)[10]7(11)[11]042(12)[12]n*fact(n-l)(13)[13]3,3.14(14)[14](*p).name(15)115]25一、选择题((1)〜(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)卜面叙述正确的是A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上三种描述都不对(2)以下数据结构中不属于线性数据结构的是A)队列B)线性表C)二叉树 D)栈(3)在一棵二叉树上第5层的结点数最多是A)8 B)16 C)32 D)15(4)下面描述中,符合结构化程序设计风格的是A)使用顺序、选择和五复(循环)三种基本控制结构表示程序的控制逻辑B)模块只有一个入口,可以有多个出口C)注重提高程序的执行效率D)不使用goto语句(5)下面概念中,不属于面向对象方法的是A)对象 B)继承 C)类 D)过程调用(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是A)可行性分析 B)需求分析 C)详细设计 D)程序编码(7)在软件开发中,下面任务不属于设计阶段的是A)数据结构设计 B)给出系统模块结构C)定义模块算法 D)定义需求并建系统模型(8)数据库系统的核心是A)数据模型 C)软件工具B)数据库管理系统 D)数据库(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库设计是指设计数据库管理系统C)数据库技术的根本目标是要解决数据共享的问题D)数据库系统中,数据的物理结构必须与逻辑结构一致(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是A)内模式B)外模式 C)概念模式 D)逻辑模式(11)关于面向对象的程序设计方法,下列说法正确的是A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)在面向对象的程序设计中,结构化程序设计方法仍仃着电要作用(12)判断字符型变量ch是否为大写英文字母,应使用表达式A)ch>='A'&ch<='Z'B)ch<='A'llch>='Z'C)'A'<=ch<='Z' D)ch>='A'&&ch<='Z'(13)已知下列语句中的x和y都是int型变量,其中错误的语句A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;不能是;|(或表达式(14)执行语句序列intn;cin»n;switch(n){case1:cout«11';cout«2;break;default:cout«3;}时,若键盘输入1,则屏幕显示A)1 B)2 C)3 D)12(15)下列程序的输出结果是#include<iostream>usingnamespacestd;intmain()chara[]="Hello,World11;char*ptr=a;while(*ptr)(if(*ptr>='a,&&*ptrv='z')cout«char(*ptr+'A'-'a1);elsecout«*ptr;ptr++;}return0;)A)HELLO,WORLD B)Hello,WorldC)hELLO,WORLD D)hello,world(16)已知:intm=10;在下列定义引用的语句中,正确的是A)int&x=m; B)inty=&m;C)int&z; D)int&t=&m;(17)下列函数原型声明中错误的是A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0);D)voidFun(intx=0,inty);(18)已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列而载形式中正确的是A)chartest(int,int,int);B)doubletest(int,int,double);C)inttest(int,int,int=O);D)floattest(int,int,float=3.5F);(19)有以下程序#include<iostream>inti=0;voidfun(){{staticinti=1;std::cout«i++«'/;}std::cout«i«\,;}intmain()(fun();fun();return0;程序执行后的输出结果是A)1,2,1,2, B)1,2,2,3, C)2,0,3,0,D)l,0,2,0,(20)已知函数f的原型是:voidf(int*a,long&b);变量vl、v2的定义是:intvl;kmgv2;,正确的调用语句是A)f(vl,&v2); B)f(vl,v2);C)f(&v1,v2); D)f(&vl,&v2);(21)有以下类定义classMyClass(public:MyClass(){cout«l;));则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是A)llB)lllC)llllD)lllll(22)关于友元,下列说法错误的是A)如果类A是类B的友元,那么类B也是类A的友元B汝口果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(23)关于动态存储分配,下列说法正确的是A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(24)有以下程序#include<iostream>usingnamespacestd;classMyClass(public:MyClass(intn){number=n;}〃拷贝构造函数MyClass(MyClass&other){number=other.number;}-MyClass(){}private:intnumber;);MyClassfun(MyClassp)(MyClasstemp(p);returntemp;intmain()MyClassobjl(10),obj2(0);MyClassobj3(objl);obj2=fun(obj3);return0;}程序执行时,MyClass类的拷贝构造函数被调用的次数是A)5 B)4 C)3 D)2(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A)公有成员和私有成员 B)私有成员和保护成员C)公有成员和保护成员 D)私有成员、保护成员和公有成员(26)在C++中用来实现运行时多态性的是A)重载函数 B)析构函数C)构造函数 D)虚函数(27)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是A)每个派生类的构造函数都要为虚基类构造函数提供实参B)多继承时有可能出现对基类成员访问的二义性问题C)使用虚基类可以解决二义性问题并实现运行时的多态性D)建立最派生类对象时,虚基类的构造函数会首先被调用(28)在一个类体的下列声明中,正确的纯虚函数声明是A)virtualvoidvf()=0;B)voidvf(int)=0;C)virtualintvf(int); D)virtualvoidvf(int){}(29)在下面的运算符重载函数的原型中,错误的是Volumeoperator-(double,double);doubleVolume::operator-(double);VolumeVolume::operator-(Volume);Volumeoperator-(Volume,Volume);(30)下列是模板声明的开始部分,其中正确的是template<T>template<classT1,T2>template<classTl,classT2>template<classTl;classT2>(31)执行语句序列ofstreamoutfile(,'DATA.DATn);if(...)cout«“OK";elsecout«“FAIL”;后,如果文件打开成功显示“OK”,否则就显示“FZ.n。由此可知,上面if语句的...处的表达式应是A)outfile.fail()或outfileB)outfile.good()或ioutfileC)outfile.good()或outfileD)outfile.fail()或!outfile(32)C++流中重载的运算符>>是一个()A)用于输出操作的非成员函数 B)用于输入操作的非成员函数C)用于输出操作的成员函数 D)用于输入操作的成员函数(33)有以下类定义classPoint{public:Point(intx=0,inty=0){_.x=x;_.y=y;}voidMove(intxOff,intyOff){_x+=xOff;_.y+=yOff;}voidPrint()const{cout«*('«_x«V«_y«y«endl;}private:int_x,_y;);下列语句中会发生编译错误的是Pointpt;pt.Print();constPointpt;pt.Print();Pointpt;pt.Move(l,2);constPointpt;pt.Move(l,2);(34)有以下类定义classMyClass(private:intid;chargender,char*phone;public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,charge=*#\char*ph=NULL){id=no;gende=ge;phone=ph;});下列类对象定义语句中错误的是MyClassmyObj;MyClassmyObj(l1,n133011111550);MyClassmyObj(12Jm);MyClassmyObj(12);(35)有以下程序#include<iostream>usingnamespacestd;classComplex(public:Complex(doubler=0,doublei=0):re(r),im(i){}doublereal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain()(Complexa=Complex(l,1)+Complex(5);cout«a.real()«*+'«a.imagO«*i*«endl;return0;)程序执行后的输出结果是A)6+6iB)6+liC)l+6iD)1+li二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1卜[15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。(1)算法的复杂度主要包括[1]复杂度和空间复杂度。(2)数据的逻辑结构在计算机存储空间中的存放形式称为数据的[2]o(3)若按功能划分,软件测试的方法通常分为白盒测试方法和13J测试方法。(4)如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备''之间存在[4]的联系。(5)关系数据库管理系统能实现的专门关系运算包括选择、连接和[5]。(6)设有定义语句:inta=12;,则表达式a*=2+3的运算结果是⑹。(7)从实现的角度划分,C++所支持的两种多态性分别是[7]时的多态性和运行时的多态性。(8)将一个函数声明为一个类的友元函数必须使用关键字[8].(9)请按下面注释的提示,将类B的构造函数定义补充完整。classA(inta;public:A(intaa=0){a=aa;}};classB:publicA{intb;Ac;public:〃用aa初始化基类A,用aa+1初始化类对象成员cB(intaa):[9]{b=aa+2;}}:(10)下列程序的输出结果是[101.#include<iostream>usingnamespacestd;intmain()(inti=5;int&r=i;r=7;cout«i«endl;return0;)(11)下列程序的输出结果是111]O#include<iostream>usingnamespacestd;classTest{public:Test(){cnt++;}-Test(){ent—;}staticintCount(){returnent;}private:staticintent;};intTest::cnt=O;intmain()(cout«Test::CountO«**;Testtl,t2;Test*pT3=newTest;Test*pT4=newTest;cout«Test::CountO«**;deletepT4;deletepT3;cout«Test::Count()«endl;return0;)(12)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-l)*...*2*l)unsignedfact(unsignedn)(if(n<=1)return1;return[12];)(13)下列程序的输出结果是[13]«#include<iostream>usingnamespacestd;template<tytenameT>Tfun(Ta,Tb){return(a<=b)?:b;}intmain()(cout«fun(3,6)««fun(3.14F,6.28F)«endl;return0;(14)与成员访问表达式p->name等价的表达式是[14]。(15)下列程序的输出结果是[15]o#include<iostream>usingnamespacestd;classbase{public:intn;base(intx){n=x;)virtualvoidset(intm){n=m;cout«n«'});classderiveA:publicbase{public:deriveA(intx):base(x){}voidset(mtm){n+=m;cout«n«',;}};classderiveB:publicbase[public:deriveB(intx):base(x){}voidset(intm){n+=m;cout«n«";));intmain()(deriveAdl(l);deriveBd2(3);base*pbase;phase=&dl;pbase->aet(1);phase=&d2;pbase->set(2);return0;)2004年9月全国计算机等级考试二级笔试试卷公共基础知识及C++语言程序设计答案及评分标准选择题((1)—(35)每小题2分,共70分)⑴C(2)C (3)B (4)A(5)D(6)B⑺D(8)B⑼c(10)A⑴)D(12)D(13)C(14)D(15)A(16)A(17)D(18)B(19)D(20)C⑵)B(22)A(23)B(24)B(25)C(26)D(27)C(28)A(29)A(30)C⑶)C(32)B(33)D(34)B(35)B二、填空题(每空2分,共30分)(1)11]时间(2)[2]存储结构或物理结构或物理存储结构⑶[3]黑盒或黑箱(4)[4]一对多或1对多或I:M或I:N(其中M、N大小写均可)⑸[5]投影(6)[6]60⑺⑺编译(8)[8]friend(9)[9JA(aa),c(aa+1)或c(aa+l),A(aa)(10)[10]7(ll)[ll]042(12)[12]n*fact(n-l)(13)[13]3,3.14(14)[14](*p).name(15)[15]252010年3月计算机等级考试二级C++笔试试题一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(bg2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具

D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A)定义阶段B)开发阶段。维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是A戊件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段R(10)有两个关系R和T如下:Rr *t* r-•'r।a_Tb.;cI|c-3;3dL,,2则由关系R得到关系T的操作是A)选择B)投影C)交D)并(11)下列关于函数的描述中,错误的是A)函数可以没有返回值B)函数可以没有参数C)函数可以是一个类的成员D)函数不能被定义为模板(12)若MyClass是一个类名,且有如下语句序列MyClasscl,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是A)1B)2C)3D)4(13)下列关于继承方式的描述中,错误的是A)如果不显式地指定继承方式,缺省的继承方式是私有(private)B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员(14)将前缀运算符“-”重载为非成员函数,下列原型中,能正确用于类中说明的是A)Decr&operator—(int);B)Decroperator—(Decr&,int);C)friendDecr&operator—(Decr&);D)frlendDeeroperator—(Decr&,int);(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempp2;MyTempp3[2];编译系统在处理上.面的语句序列时,所生成的模板MyTemp的实例的个数是A)1B)2C)3D)0(16)在C++中,cin是个A)类B)对象C)模板D)函数(17)在下列字符中,不允许作为C++标识符的是A)bB)BC)_D)2(18)下列叙述中,错误的是A)false是一个逻辑型常量B)“b"是一个字符型常量0365是一个int常量D)3.1415926是一个double常量(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是A)if(x==O)y=l;elsey=2;B)if(x==O)theny=lelsey=2;C)if(x==O)y=lelsey=2;D)ifx==0y=l;elsey=2;(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是A)intx[3]={0,0,0};B)intx[]={0};Ostaticintx[3]={0};D)intx[]={0,0,0);(21)关于函数中的〈返回类型〉,下列表述中错误的是A)〈返回类型〉中有可能包含关键字intB)<返回类型〉中有可能包含自定义标识符C)〈返回类型〉中有可能包含字符*D)〈返回类型〉中可能包含口(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是A)MyClassp=MyClass;B)MyClassp=newMyClass;C)MyClass&p=newMyClass;D)MyClassa,&p=a;(23)有如下两个类定义classXX{private:doublex1;protected:doublex2;public:doublex3;);classYY:protectedXX{private:doubleyl;protected:doubley2;public:doubley3;);在类YY中保护成员变量的个数是A)1B)2C)3D)4(24)下列关于运算符重载的描述中,错误的是A)可以通过运算符重:载在C++U」创建新的运算符B)赋值运算符只能重载为成员函数C)运算符函数重载为类的成员函数时,第一操作数是该类对象D)重载类型转换运算符时不需要声明返回类型(25)下列关于类模板的描述中,错误的是A)类模板的成员函数都是模板函数B)可以为类模板参数设置默认值C)类模板描述了一组类D)类模板中只允许有一个类型参数(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是A)setprecisionB)setwOsetfillD)showpoint(27)下列程序段中包含4个函数,其中具有隐含this指针的是intfun1();classTest{public:intfun2();friendintfun3();staticintfun4();};A)funlB)fun2C)fun3D)fun4(28)有如下程序#includeusingnamespacestd;classTest{public:Test(){)Test(constTest&t){cout«l;)};Testfun(Test&u){Testt=u;returnt;}intmain。{Testx,y;x=fun(y);return0;}运行这个程序的输出结果是A)无输出B)1C)llD)lll(29)有如下程序#includeusingnamespacestd;classA{public:A(inti=0):rl(i){}voidprint(){cout«*E,«R1«->;}<p>voidprint()const{cout«'C'«R1*R1«*-;}<p>voidprint(intx){cout«*Pf«R1*R1*R1 }<p>private:intrl;intmain(){Aal;constAa2(4);al.print(2);al.print();return0;}运行时的输出结果是A)P8-E4B)P8-C16-OP0-E4-D)P0-C16-(30)下列代码声明了3个类classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是A)类Person是类Undergraduate的基类B)类Undergraduate从类Student公有继承C)类Student是类Person的派生类D)类Undergraduate是类Person的派生类(31)有如下程序#includeusingnamespacestd;ClassBase{public:Base(intx=0):valB(x){cout«VALB;}<p>-Base(){cout«VALB;}<p>private:intvalB;};classDerived:publicBase{public:Derived(intx=0,inty=0):Base(x),valD(y){cout«VALD;}<p>-Derived(){cout«VALD;}<p>private:intvalD;);intmain(){Derivedobj12(2,3);retuen0;运行时的输出结果是A)2332B)232303232D)3223(32)下面是类Shape的定义:classShape{public:virtualvoidDraw()=O;};下列关于Shape类的描述中,正确的是A)类Shape是虚基类B)类Shape是抽象类。类Shape中的Draw函数声明有误D)语句“Shapes;”能够建立Shape的一个对象s(33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是A)MyClockoperator+(MyClock,long);B)MyClockoperator+(MyClock,MyClock);C)MyClockoperator+(long,long);D)MyClockoperator+(long,MyClock);(34)打开文件时可单独或组合使用下列文件打开模式©ios_base::app@ios_base::binary®ios_base::in@ios_base::out若要以二进制读方式打开一个文件,需使用的文件打开模式为A)①③B)①④C)②③D)②④(35)有如F程序:#includeusingnamespacestd;ClassB{public:B(intxx):x(xx){++cout;x+=10;}virtualvoidshow()const{cout«COUNT«'_'«X«ENDL;}<p>protected:staticintcount;private:intx;);classD:publicB{public:D(intxx,intyy):B(xx),y(yy){++count;y+=100;}virtualvoidshow()const{cout«COUNT«L'«Y«ENDL;}<p>private:inty;);intB::count=0;intmain(){B*ptr=newD(10,20);ptr->show();deleteptr;return0;)运行时的输出结果是A)l_120B)2_120C)l_20D)2_20二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)一个队列的初始状态为空。现将元素人上©。正下,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【1】。(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针reaulO(指向队尾元素),则该循环队列中共有【2】个元素。(3)设二叉树如下:对该二叉树进行后序遍历的结果为[31o(4)软件是【4】、数据和文档的集合。(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号,【5】,成绩)。(6)若x和y是两个整形变量,在执行了语句序列x=5;y=6;y+=x—;后,x+y的值为【6】。(7)在执行语句序列inti=0;doi++;while(i*i<10);时,do后面的循环体语句i++被执行的次数为【7】o(8)有如下的函数定义:intXfun(int*a,intn){intx=*a;for(int*pa=a+1;paoif(*pa>x)x=*pa;returnx;}若执行了语句intx[5]={23,46,78,55,16);后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为【8】o(9)有如下的函数定义:intXfun(intx){inty=x;{intx=10;y+=x;}returnx+y;)通过表达式Xfun(5)调用该函数,则得到的返回值为【9】o(10)假定Xcs是一个类,该类中一个成员函数的原型为“Xcs*abc();",则在类外定义时对应的函数头为【10】。(11)请将下面的类Date的定义补充完整,使得由语句DateFirstDay;定义的对象FirstDay的值为2010年1月1日。classDate{public:Date([11]):year(y),month(m),day(d){}private:intyear,month,day;〃依次表示年、月、日};(12)请将卜.面的程序补充完整,使得程序输出“飘是张娜的书”。#includeusingnamespacestd;classBook{public:Book(char*str){strcpy(title,str);JvoidPrintlnfoO{cout«TITLE«ENDL;}<p>protected:chartitle[50];};classMyBook:publicBook{public:MyBook(char*sl,char*s2="张娜){strcpy(owner,s2);)virtualvoidPrintlnfo。{coutvvTITLEvv”是“OWNERvv”的书“vvENDL;}vp>private:charowner[10];};intmain(){Book*prt=newMyBook("飘”);prt->PrintInfo();return0;}(13)在有理数类Rational中重载插入运算符以便按a/q形式输出。请将<<运算符函数的定义补充完整。classRational(public:Rational(intaa,intqq):a(aa),q(qq){}friend[14]operator«(ostream&out,Rational&x)(return(out«X.A«*p?«x.q);o)private:inta,q;);(14)下面的函数定义是某函数模板能够生成的函数实例intsquare(intn){returnn*n;}doublesquare(doublen){returnn*n;}由此可知,该函数模板的定义是[15]o2007年4月计算机等级考试C++考试及答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是。A)算法的效率只与问题的规模有关,而与数据的存储结构无关.B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的.D)算法的时间复杂度与空间复杂度一定相关.(2)在结构化程序设计中,模块划分的原则是.A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度,模块间具有低耦合度(3)下列叙述中正确的是。A)软件测试的主:要目的是发现程序中的错误.B)软件测试的主要目的是确定程序中错误的位置.C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误(4)下面选项中不属于面向对象程序设计特征的是。A)继承性B)多态性C)类比性D)封装性(5)下列对列的叙述正确的是。A)队列属于非线性表B)队列按“先进后出”的原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据(6)对下列二叉树A)DYBEAFCZXB)YDEBFZXCAC)ABDYECFXZD)ABCDEFXYZ(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为A)n+1B)n-1C)2nD)n/2(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是。A)井B)交C)投影D)笛卡儿乘积(9)在E-R图中,用来表示实体之间是联系的图形是.A)矩形B)椭圆形C)菱形D)平行四边形(10)下列叙述中错误的是。A)在数据库系统中,数据的物理结构必须与逻辑结构一致.B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)为了取代C中带参数的宏,在C++中使用A)市载函数B)内联函数C)递归函数D)友元函数(12)下列关于类定义的说法中,正确的是A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的D)成员函数只能在类体外进行定义(13)下列关于派生类构造函数和析构函数的说法中,错误的是A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(14)通过运算符重载,可以改变运算符原有的A)操作数类型B)操作数个数C)优先级D)结合性(15)有如下函数模板:template<classT>Tsouare(Tx)(retumx*x;)基中T是A)函数形参B)函数实参C)模板形参D)模板实参(16)使用输入输出操作符setw,可以控制A)输出精度B)输出宽度C)对齐方式D)填充字符(17)下列字符串中,不可以用作C++标识符的是A)y_2006B)TEST_HC)ReturnD)switch(18)字面常量42、4.2、42L的数据类型分别是A)long>doubleintB)long>float、intC)int、double>longD)int、float、long(19)执行下列语句段后,输出字符“*”的个数是for(inti=50;1>1;—i)cout«,,*,tA)48B)49050D)51(20)有如下程序段inti=0,j=1;int&r=i;//①r=j;〃②int*p=&i;〃③*p=&r;//@基中会产生编译错误的语句是A)④B)③C)②D)①(21)有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=O,y=1func(x,y);则变量x和y值分别是A)0和1B)1和1C)0和2D)1和2(22)有如下程序:#include<iostream>usingnamespacestd;classA{publicstaticinta;voidinit(){a=l;}A(inta=2){init();a++;)};intA:;a=0Aobj;Inimain()(cout«obj.a;retumO;}运行时输出的结果是A)OB)1C)2D)3(23)下列有关继承和派生的叙述中,正确的是A)派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现(24)下列运算符中,不能被重载的是A)&&B)!=C).D)++(25)下列函数模板的定义中,合法的是template<typenameT>Tabs(Tx){returnx<0-x:x;}templateclass<T>Tabs(Tx){retumx<0-x;x;}templateT<classT.>abs(Tx){returnx<0-x;x;}templateTabs(Tx){returmx<0-x;x;}(26)在语句cin»data;中,cin是A)C++的关键字B)类名C)对象名D)函数名(27)有如下程序:#include<iostream>usingnamespacestd;classtest{private:inta;public:test(){cout<v''constructor“vvendl;}test(inta){cout«a«endl;}test(consttest&_test)(a=_testa;coul<v"copyconstructor^ccendl;)test(){cout«,,destructor,,«endl;}};intmain()}testA(3)returnO;运行时输出的结果是3constructordestruclorcopyconstructor3dstructordestruclor(28)若有如下类声明classMyClass{public:MyClass(){cout«l;}};执行卜列语句MyClassa,b[2],*P[2];以后,程序的输出结果是A)11B)111C)1111D1I1I1(29)有如下程序:#include<iostream>usingnamespacestd;classpoint{public:staticintnumber;public:point(){number+4-;〜point(){number-;}};imtpoint::number=0;voidmain(){point*ptr;printA,B;(point*ptr_point=newpoint{3};ptr=ptr_point;)pointC;cout«point::number«endl;delete[]ptr;}运行时输出的结果是A)3B)406D)7(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。#include<iostream>usingnamespacestd;classBase{inta,b;public:Bace(intx,inty){a=x;b=y;}Voidshow(){cout«a«,,,«b<<endl;})clsaaDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;}Voidshow(){cout«c«,,,d«endl;)};intmain()BaseBl(50,50),*pb;DerivedDI(10,20,30,40);Pb=&Dl;Pb->show();Return0;}运行时输出的结果是A)10,20B)30,40020,30D)50,50(31)有如下程序:#inc1ude<iostream>usingnamespacestd;classA(public;A(inti){x=i;}Voidsispa(){cout«x«\,;}Private:intx;);classB;publicA(public;B(inti):A(i+10){x=i;}vouddispb(){dispa();cout«x<,endl;}Private:Intx;);intmain()(Bb(2);b.dispb()return0:}运行时输出的结果是A)10,2B)12,10C)12,2D)2,2(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#include<iostream>usingnamespacestd;classBasepublic:virtualvoidf(){coutvv"fO+'';}voidg(){coutvv"gO+'';}};classDerived:publicBase(public:voidf(){coutvv"f+'';}voidg(){coutvv"g+'';});intmain()(Derivedd;Base*p=&d;p->f();p->g();return0:)运行时输出的结果是A)f+g+B)fO+g+C)f+gO+D)fO+gO+(33)下面程序中对一维坐标点类Point进行运算符重载#include<iostream>usingnamespacestd;classpoint{public:point(intval){x=val;}point&operator++(){x++;retum*this;}printoperator++(int){pointold=*this,++(*this);retumold;}intGetX()const{returnx;}private:intx;};intmain()(pointa(10);cout«(++a).GetX();cout«a++.GetX();return();)编译和运行情况是A)运行时输出1011B)运行时输出1111C)运行时输出1112D)编译有错(34)有如下程序:#include<iostream>usingnamespacestd;intmain()(charstr[100],*p;cout«^pleaseinputastring:";cin»str;p=str;for(imi=0;*p!=''\0";p++,i++);cout«i«endl;return0;}运行这个程序时,若输入字符串为abcdefgabed则输出结果是A)7B)12013D)100(35)有如下程序::#include<iostream>usingnamespacestd:classSample(friendlongfun(Samples);public:Sample(longa){x=a;}Private:longx;);longfun(Samples)(if(s.x<2)return1;returns.x*fun(Sample(s.x-a));)intmain()(intsum=0for(inti=0;i<6;i++){sum+=fun(Sample(i);)}cout«sum;return0;}运行时输出的结果是A)120B)160154D)34二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)在深度为7的满二叉树中,度为2的结点个数为【1】。(2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于【2】测试。(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为【3】。(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于[4]阶段。(5)在结构化分析使用的数据流图(DFD)中,利用【5】对其中的图形元素进行确切解释。(6)C++中只有两个逻辑常量:true和【6】。(7)若要访问指针变量p所指向的数据,应使用表达式【7】。(8)已知一个函数的原型是:intfn(doublex);若要以5.27为实参调用该函数,应使用表达式【8】.(9)有如下定义:classMA{intvalue;public:MA(intn=0):valut(n){});MA*ta,tb;其中MA类的对象名标识符是【9】o(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。ClassmyClass{Private:Intdata:Public:MyClass(intvalue);〃构造函数MyClass(const[10]anotherObject);〃拷贝构造函数}(11)用来派生新类的称为[111,而派生出的新类称为它的子类或派生类。(12)有如下程序:#include<iostream>usingnamespacestd;clsaaCA{public:CAD{cout«A';}};classCB;privateCA{public;CB(){cout«B,;});intmain(){cout«B,;)};intmain(){CAa;CBb;retumO;)这个程序的输出结果是[12]o(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是[13]个。(14)有如下程序:#include<iostream>usingnamespacestd;classDA{intk;public:DA(intx=l):k(x){}〜DA(){cout«k;});intmain(){DAdlJ={DA(3),DA(3),DA(3)};DA*p=newDA[2];delete[]p;retumO;}这个程序的输出结果是【14】o(15)C++语言中的多态性分为编译时的多态性和【15】时的多态性。2007年4月计算机等级考试C++考试答案选择题:1-5BDACD6-10CABCA11-15BADAC16-20BCDBA21-25CCCCA26-30CDBDA30-35CBBBC填空:1、637里合乙、7v>»nn.3、DBMS4、开发5、数据字典6、false7、*P8、fn(5.27)9、tb10、myclass&

11、基类12、AAB13、1个14、1133315、运行2007年9全国计算机等级考试二级笔试试卷C++语言程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列个体A、B、C、D四个选项重,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置匕答在试卷上不得分。(1)软件是指A程序A程序C算法加数据结构B程序和文档D程序、数据与相关文档的完整集合(2)软件调试的H(2)软件调试的H的是A发现错误C改善软件的性能改正错误验证软件的正确性(3)在面对对象方法中,实现信息隐蔽是依靠A对象的继承CA对象的继承C对象的封装D对象的分类(4)下列叙述重,不符合良好程序设计风格要求是A程序的效率第一,清晰第二B程序的可读性好C程序中要有必要的注释 D输入数据前要有提示信息(5)下列叙述中正确的是A程序执行的效率与数据的存储结构密切相关B程序执行的效率只取决于程序的控制结构C程序执行的效率之取决于所处理的数据量D以上三种说法都不对(6)下列叙述中正确的是A数据的输入结构与存储结构必定是——对应的B计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D以上三种说法都不对(7)冒泡排序在最坏的情况下的比较次数是An(n+1)/2Bnlog2n Cn(n-1)/2 Dn/2(8)一棵二叉树中共有70个叶子结点于80个度为I的结点,则该二叉树重的总结点数为A219 B22l C229 D221(9)下列叙述重正确的是A数据库系统是一个独立的系统,它需要操作系统的支持B数据库技术的根本目标是要解决数据的共享问题C数据库管理系统是数据库系统D以上说法都不正确(10)下列叙述中正确的是A为了建立一个关系,首先是要构造数据的逻辑关系B表示关系的二维表中各各组的每一个分量还可以分成若干数据项C一个关系的属性名称为关系模式D一个关系可以包括多个二维表(II)在函数中,可以用auto,extern,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是Aauto Bextern Cregister Dstatic(12)对于一个类定义,下列叙述中错误的是A如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是Apublic和public Bpublic和protectedCprotected和public Dprotected和protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是Aintoperator-(FunNumber)BFunNumberoperator-()CFunNumberoperator-(int)Dintoperator—(FunNumber)(15)C++中的模板包括A对象模板和函数模板 B对象模板和类模板C函数模板和类模板 D变量模板和对象模板(16)如果调用C++流进行输入输出,下面的叙述中正确的是A只能借助于流对象进行输入输出B只能进行格式化输入输出C只能借助于cin和cout进行输入输出D只能使用运算符》和《进行输入输出(17)下列富豪中不属于C++关犍字的是Afriend BnamespaceCcontinue Dbyte(18)下列各组的量申明中,含义相同的一组是Aunsignedlongint和long Bsignedshortint和shortBunsignedshort和short Dshortint和int(19)必须用一对打括号括起来的程序段是Aswitch语句中的case标号语句Bif语句的分支C循环语句的循环体D函数的函数体(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是Aint*p;p=&k Bint*p;p=kCint*p;*p=&k Dint*p;*p=k(21)关于函数重载,下列叙述中错误的是A重载函数的函数名必须相同B重载函数必须在函数个数或类型上有所不同C重载函数的返回值类型必须相同D重载函数的函数体可以有所不同(22)有如下头文件Intf1();Staticintf2();ClassMA{PublicIntf3();Staticintf4(););在所描述的函数中,具有隐含的this指针的是Afi Bf2 Cf3 Df4(23)派生类的成员函数不能访问基类的A共有成员和保护成员 B共有成员C私有成员 D保护成员(24)下列关于运算符重载的描述中,正确的是A运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B一元运算符只能作为成员函数重载C二元运算符重载为非成员函数时,参数表中有一个参数DC++中可以重载所有的运算符(25)F列关于类模板的模板参数的叙述中,错误的是A模板参数可以作为数据成员的类型B模板参数可以作为成员函数的返回类型C模板参数可以作为成员函数的参数类型D模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是Cout«setw(10)«setfill(*)<<1234则此操作的输出结构是A1234 b******1234

C**********j234d1234******(27)有如下程序#include<iostrcam>Usingnamespacestd;Classmyclass{Public:MyClass(){++count;}-MyClass(){-count;}Staticintgetcount(){returncount;}PrivateStaticintcount;);IntMyClass::count=0;Intmain(){Myclassobj;Cout«obj,getCount();MyClass*ptr=newMyClass;Cout«MyClass::getcount();Deleteptr;Cout«MyClass::gercount();程序的输出结果是A121B232 C221D122程序的输出结果是A121B232 C221D122(28)有如下程序ttinclude<iostream>Usingnamespacestd;ClassMyclass<Public;Myclassconst(x):ual(x)<}Uoidprint()const<cout<<^const:ual=w<<ual<<\tw;}Uoidprint()<cout<<ual=^<<ual<<\t ;}Priuate;Intual;>;Intnain(){Constmyclassobj1(10);Myclassobj2(20);Obj1.print();0bj2.print();Return();程序的输出结果是Aval=lOconst:val=20Bconst:val=lOconst:val=20Cconst:val=lODval=lOval=20val=20(29)有如下程序#include<iostream>Usingnamespacestd;Classpart{Public;Part(intx=(\):val(x){cout„val;}-part(){cout«val;}Private;Intval;);Classwhole{Public;Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout«val;}Whole(){countyval;}Private;Partpl,p2;Intval;I;Intmaint{Wholeobj(l,2,3);Restum();)程序输出的结果是A123321B213312 C213(30)有如下程序:#include<iostream>Usingnamespacestd;Classbase{Public:Base(intx=0){cout«x;}};Classderived:publicbase{Public:Derivedrin(x=y){cout«x;}Priblic:Baseval;);Intmain(){Derivedd(!);Return();}程序的输出结果是AOB1 C01 D001(31)若有如F类定义:ClasssB{Voidfun(){}Protected;Doublevarl;Public:Voidfun2(){});ClassD:publicB{Protected;Voidfun3(){});已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是Aobj.funl(); Bobj.varl;Cobj.fun2();Dobj.fun3();(32)有如下程序:#include<iostream>Usingnamespacesid;Classbase{Public;Voidoutput(){cout«1;}Virtualvoidprint(){cout«B;});Classderived:publicbase{Public:Voidoutput(){cout«2;)Voidprint(){cout«,D,;});Intmain()Base*passnewderived;Ptr->output();Ptr->print();Deleteptr;Retum();)程序的输出结果是AIBBIDC2BD2D下列是重载乘法运算的函数原型声明,其中错误的是Amyclassoperator*(double,double);Bmyclassoperator*(double,myclass);Cmyclassoperator*(myclass,double);Dmyclassoperator*(myclass,myclass);

(34)如下函数的作用是以双倍行距输出文件:Uoiddouble_space(ifstream&F,ofstrean&t)<Charc;While()<If(c=&n,)t..put(c),>Bf.put(c)与t・Bf.put(c)与t・get(c)Dt・put(c)与F.get(c)Af.get(c)与t・put(c)Ct.ger(c)与19式((:)(35)有如下程序:#include<doslream>Usingnamespacestd:ClassB(Public:Virtualvoidshow(){coutvv"b";}};ClassD:publicB{Public:Voidshow(){cout«D;}};Voidfun1(B*ptr){ptr->show();}Voidfun2(B&ref){ref.show();)Voidfun3(Bb){b.show();}Intmain(){Bb,*p=newD;Dd;Funl(p);Fun2(b);Fun3(d);Retum();)程序的输出结果是ADBDBBBDCDBBDDBD二、填空题(每空2分,共三十分).请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。.软件需求规格说明书应具有完整性、无歧视性、正确性、可验证性、可修改性等特征,最重要的是..在两种基本测试方法中测试的原则之一是保证所测模板中每一个独立路径至少要执行一次。.线性表的存储结构主要分为顺序存储结构和链式储存结构。队列中是一种特殊的线性表。循环队列是队列的存储结构。.对下列二叉树进行中序遍历的结果为..在E-R图中,矩形属于在有定义语句:inta=3,b=2,c=l;则表达式a<b?a:b的值是.执行下列语句后,变量sum的值是一.Intsum=0;For(intj=I;j<=I;j++)For(intj=I;j<=I;j++)Sum++;.己知有函数f的定义如下:Intf(){Staticint-6;s-2;returns)则在某程序中第二次执行函数用语句f();时,函数f的返回值是.(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。#include<iostream>Usingnamespacestd;Classmyclass{Public:Voidprint()cout{cout«23;})Intmain(){Myclass*p=newmyclass(); print();Return();Classsample{Public:Sample(){}(13)有如下复数类的声明,请补充完整。Classcomplex(Doublereal;〃实部Doubleinag;〃虚部Public:Comple(doublex.doubley){Real=x;Imag=y;>、、_Complexoperator*(conplexc)《〃重载加法运算符”+Returncomplex();>(14)请将如下程序补充完整,使得输出结果为bbaa#include<iostream>Usingnamespacestd;ClassA{Public:{cout«,,aa,,;J);ClassB:publicA{Public:〜B(){coutvv“bb”;});Intmain(){B*p=newB;Deletep;Retum();)(15)请将下列栈类stack补充完整Classstack{Private;Intplist[100]: //int数组,用于存放栈的元素Inttop; 〃栈顶元素(数组下标)Public:Stack():top(0){}Voidpush(sonsint&item);〃新元素item压入栈Intpop(void); 〃将栈顶元素弹出栈);Voidstack::pbsh(constint&item){If(top==99) 〃如果栈满,程序结束Exit(l);Top++; 〃栈顶指针增1_[15]—;)Intstack::pop(){lf(top<0) 〃如果栈空,程序结束Exit(l);Returnplish[top-];}参考答案l-10:DBCAACCABBll-20:ABDDCADBDA21-30:CCCADBACDC31-35:CDAADL无歧性.逻辑覆盖.链式4.ACBDFHGPE5.实体9

温馨提示

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

评论

0/150

提交评论