C++试题六套

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

全国计算机等级考试二级笔试试卷公共基础知识及C++语言程序设计(04年9月)(考试时间90分钟,满分100)分)一、选择题((1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(5)下面概念中,不属于面向对象方法的是A)对象B)继承C)类D)√过程调用(11)关于面向对象的程序设计方法,下列说法正确的是A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)√在面向对象的程序设计中,结构化程序设计方法仍有着重要作用(21)有以下类定义classMyClass{public:MyClass(){cout1;}};则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是A)11B)√111C)1111D)11111(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)有以下程序#includeiostreamusingnamespacestd;classMyClass{public:MyClass(intn){number=n;}//拷贝构造函数MyClass(MyClass&other){number=other.number;}~MyClass(){}private:intnumber;};MyClassfun(MyClassp){MyClasstemp(p);returntemp;}intmain(){MyClassobj1(10),obj2(0);MyClassobj3(obj1);obj2=fun(obj3);return0;}程序执行时,MyClass类的拷贝构造函数被调用的次数是A)5B)√4C)3D)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)在下面的运算符重载函数的原型中,错误的是A)√Volumeoperator-(double,double);B)doubleVolume::operator-(double);C)VolumeVolume::operator-(Volume);D)Volumeoperator-(Volume,Volume);(30)下列是模板声明的开始部分,其中正确的是A)templateTB)templateclassT1,T2C)√templateclassT1,classT2D)templateclassT1;classT2(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','_y')'endl;}private:int_x,_y;};下列语句中会发生编译错误的是A)Pointpt;pt.Print();B)constPointpt;pt.Print();C)Pointpt;pt.Move(l,2);D)√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;}};下列类对象定义语句中错误的是A)MyClassmyObj;B)√MyClassmyObj(11,13301111155);C)MyClassmyObj(12,'m');D)MyClassmyObj(12);(35)有以下程序#includeiostreamusingnamespacestd;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);couta.real()'+'a.imag()'i'endl;return0;}程序执行后的输出结果是A)6+6iB)√6+1iC)1+6iD)1+1i二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1]-[15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。(7)从实现的角度划分,C++所支持的两种多态性分别是[7]编译时的多态性和运行时的多态性。(8)将—个函数声明为一个类的友元函数必须使用关键字[8]friend。(9)请按下面注释的提示,将类B的构造函数定义补充完整。classA{inta;public:A(intaa=0){a=aa;}};classB:publicA{intb;Ac;public://用aa初始化基类A,用aa+1初始化类对象成员cB(intaa):[9]A(aa),c(aa+1)或c(aa+1),A(aa){b=aa+2;}};(11)下列程序的输出结果是[11]042。#includeiostreamusingnamespacestd;classTest{public:Test(){cnt++;}~Test(){cnt--;}staticintCount(){returncnt;}private:staticintcnt;};intTest::cnt=0;intmain(){coutTest::Count0'';Testtl,t2;Test*pT3=newTest;Test*pT4=newTest;coutTest::Count0'';deletepT4;deletepT3;coutTest::Count()endl;return0;}(12)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)unsignedfact(unsignedn){if(n=1)return1;return[12]n*fact(n-1);}(13)下列程序的输出结果是[13]3,3.14。#includeiostreamusingnamespacestd;templatetytenameTTfun(Ta,Tb){return(a=b)?:b;}intmain(){coutfun(3,6)','fun(3.14F,6.28F)endl;return0;}(14)与成员访问表达式p-name等价的表达式是[14](*p).name。(15)下列程序的输出结果是[15]25。#includeiostreamusingnamespacestd;classbase{public:intn;base(intx){n=x;}virtualvoidset(intm){n=m;coutn'';}};classderiveA:publicbase{public:deriveA(intx):base(x){}voidset(mtm){n+=m;coutn'';}};classderiveB:publicbase[public:deriveB(intx):base(x){}voidset(intm){n+=m;coutn'';}};intmain(){deriveAdl(1);deriveBd2(3);base*pbase;pbase=&dl;pbase-aet(1);pbase=&d2;pbase-set(2);return0;}2007年4月计算机等级考试C++考试及答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(4)下面选项中不属于面向对象程序设计特征的是。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)有如下函数模板:templateclassTTsouare(Tx)(retumx*x;)基中T是A)函数形参B)函数实参C)√模板形参D)模板实参(16)使用输入输出操作符setw,可以控制A)输出精度B)√输出宽度C)对齐方式D)填充字符(20)有如下程序段inti=0,j=1;int&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④基中会产生编译错误的语句是A)√④B)③C)②D)①(22)有如下程序:#includeiostreamusingnamespacestd;classA{publicstaticinta;voidinit(){a=1;}A(inta=2){init();a++;}};intA:;a=0Aobj;Intmain(){coutobj.a;retum0;}运行时输出的结果是A)0B)1C)√2D)3(23)下列

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功