




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机二级C++等级考试真题及答案全国计算机二级C++等级考试真题及答案全国计算机二级C++等级考试真题及答案全国计算机二级C++等级考试真题及答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:2007年9全国计算机等级考试二级笔试试卷一、选择题(每小题2分,共70分)(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是AAautoBextemCregisterDstatic(12)对于一个类定义,下列叙述中错误的是BA如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是DApublic和publicBpublic和protectedCprotected和publicDprotected和protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是DAintoperator-(FunNumber)BFunNumberoperator-()CFunNumberoperator-(int)Dintoperator–(FunNumber)(15)C++中的模板包括CA对象模板和函数模板B对象模板和类模板C函数模板和类模板D变量模板和对象模板(16)如果调用C++流进行输入输出,下面的叙述中正确的是AA只能借助于流对象进行输入输出B只能进行格式化输入输出C只能借助于cin和cout进行输入输出D只能使用运算符》和《进行输入输出(17)下列符号中不属于C++关键字的是DAfriendBnamespaceCcontinueDbyte(18)下列各组的量申明中,含义相同的一组是BAunsignedlongint和longBsignedshortint和shortBunsignedshort和shortDshortint和int(19)必须用一对打括号括起来的程序段是DAswitch语句中的case标号语句Bif语句的分支C循环语句的循环体D函数的函数体(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是AAint*p;p=&kBint*p;p=kCint*p;*p=&kDint*p;*p=k(21)关于函数重载,下列叙述中错误的是CA重载函数的函数名必须相同B重载函数必须在函数个数或类型上有所不同C重载函数的返回值类型必须相同D重载函数的函数体可以有所不同(22)有如下头文件Intf1();Staticintf2();ClassMA{PublicIntf3();Staticintf4();(静态函数)};在所描述的函数中,具有隐含的this指针的是CAf1Bf2Cf3Df4(23)派生类的成员函数不能访问基类的CA共有成员和保护成员B共有成员C私有成员D保护成员(24)下列关于运算符重载的描述中,正确的是AA运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B一元运算符只能作为成员函数重载C二元运算符重载为非成员函数时,参数表中有一个参数DC++中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是DA模板参数可以作为数据成员的类型B模板参数可以作为成员函数的返回类型C模板参数可以作为成员函数的参数类型D模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是BCout<<setw(10)<<setfill(*)<<1234则此操作的输出结构是A1234B******1234C**********1234D1234******(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();Return();}程序的输出结果是AA121B232C221D122程序的输出结果是CAval=10const:val=20Bconst:val=10const:val=20Cconst:val=10val=20Dval=10val=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(){count<<val;}Private;Partp1,p2;Intval;};Intmaint{Wholeobj(1,2,3);Resturn();}程序输出的结果是DA123321B213312C213(30)有如下程序:#include<iostream>Usingnamespacestd;Classbase{Public:Base(intx=0){cout<<x;}};Classderived:publicbase{Public:Derivedrin(x=y){cout<<x;}Priblic:Baseval;};Intmain(){Derivedd(!);Return();}程序的输出结果是CA0B1C01D001(31)若有如下类定义:ClasssB{Voidfun1(){}Protected;Doublevarl;Public:Voidfun2(){}};ClassD:publicB{Protected;Voidfun3(){}};已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是CAobj.fun1();Bobj.var1;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;Return();}程序的输出结果是DA1BB1DC2BD2D33.下列是重载乘法运算的函数原型声明,其中错误的是AAmyclassoperator*(double,double);Bmyclassoperator*(double,myclass);Cmyclassoperator*(myclass,double);Dmyclassoperator*(myclass,myclass);*是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的34.A(35)有如下程序:#include<iostream>usingnamespacestd;classB{public:virtualvoidshow(){cout<<"b";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}voidmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);}程序的输出结果是DADBDBBBDCDBBDDbb二、填空题(每空2分,共三十分)(6).在有定义语句:inta=3,b=2,c=1;则表达式a<b?a:b的值是_____(7).执行下列语句后,变量sum的值是____.Intsum=0;For(intj=I;j<=I;j++)For(intj=I;j<=I;j++)Sum++;(8).已知有函数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(){}_________}(14)请将如下程序补充完整,使得输出结果为bbaa#include<iostream>Usingnamespacestd;ClassA{Public:_____{cout<<”aa”;}};ClassB:publicA{Public:~B(){cout<<”bb”;}};Intmain(){B*p=newB;Deletep;Return();}(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(1);Top++;//栈顶指针增1___【15】____;}Intstack::pop(){If(top<0)//如果栈空,程序结束Exit(1);Returnplish[top--];}参考答案9.(*p)10.ABBA11.voidBase::fun()12.virtualdisplay()==0;14.-A()15.pList[top]=item2008年9月计算机等级考试一、选择题(每小题2分,共70分)(11)在下列原型所示的C++函数中,按“传值”方式传递参数的是(A)。A)voidf1(intx); B)voidf2(int*x);C)voidf3(constint*x);D)voidf4(int&x);(12)在C++中,编译系统自动为一个类生成缺省构造函数的条件是(A)。A)该类没有定义任何有参构造函数B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数D)该类没有定义任何成员函数(13)在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译。这说明(C)。A)f()是基类的私有成员C)派生类的继承方式为私有B)f()是基类的保护成员D)派生类的继承方式为保护(14)下列关于运算符重载的叙述中,错误的是(B)。A)有的运算符可以作为非成员函数重载B)所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载(15)下列关于模板的叙述中,错误的是(D)。A)调用模版函数时,在一定条件下可以省略模板实参B)可以用int、double这样的类型修饰符来声明模版参数C)模板声明中的关键字class都可以用关键字typename替代D)模板的形参表中可以有多个参数(16)要利用C++流进行文件操作,必须在程序中包含的头文件是(B)。A)iostream B)fstreamC)strstream D)iomanip(17)下列字符串中不能作为C++标识符使用的是(B)。A)WHILEB)userC)_lvarD)9stars(18)下列语句中错误的是(D)。A)constinta;B)constinta=10;C)constint*point=0;D)constint*point=newint(10);(19)有如下程序:#include<iostream>
usingnamespacestd;intmain(){intsum;for(inti=0;i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;}cout<<sum<<end1;return0;}运行时的输出结果是(A)。A)3
B)10 C)12 D)15(20)下列语句中,正确的是(D)。A)char*myString="Hello-World!";B)charmyString="Hello-World!";C)charmyString[11]="Hello-World!";D)charmyString[12]="Hello-World!";(21)若已经声明了函数原型“voidfun(inta,doubleb=0.0);”,则下列重载函数声明中正确的是(C)。A)voidfun(inta=90,doubleb=0.0);B)intfun(inta,doubleB);C)voidfun(doublea,intB);D)boolfun(inta,doubleb=0.0);(22)有如下程序:#include<iostream>
usingnamespacestd;classSample{public:Sample(){}~Sample(){cout<<'*';}};intmain(){Sampletemp[2],*pTemp[2];return0;}执行这个程序输出星号(*)的个数为(B)。A)1 B)2 C)3 D)4(23)下列选项中,与实现运行时多态性无关的是(A)。A)重载函数
B)虚函数C)指针
D)引用(24)下列运算符函数中,肯定不属于类Value的成员函数的是(B)。A)Valueoperator+(Value);B)Valueoperator-(Value,Value);C)Valueoperator*(int);D)Valueoperator/(Value);(25)下列模板声明中,有语法错误的是(D)。A)template<typenameT>Tfun(Tx){returnx;}B)template<typenameT>Tfun(Tx,intn){returnx*n;}C)template<classT>Tfun(T*p){return*p;}D)template<classT>TclassA{Tn;};(26)在语句“cout<<'A';”中,cout是(B)。A)类名 B)对象名C)函数名 D)C++的关键字(27)有如下程序:#include<iostream>
usingnamespacestd;classMyClass{public:
MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass(){cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0:}运行时的输出结果是(A)。A)112444 B)11114444C)121444 D)11314444(28)有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidSet(intx){val=x;}voidPrint()const{cout<<"val="<<val<<'\t';}private:intval;};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();
//语句1obj2.Print();
//语句2obj1.Set(20);
//语句3obj2.Set(30);
//语句4return0;}其主函数中错误的语句是(C)。
A)语句1 B)语句2C)语句3 D)语句4(29)在类声明中,紧跟在“public:”后声明的成员的访问权限是(A)。A)私有 B)公有 C)保护 D)默认(30)对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是(D)。A)公有或私有 B)私有C)保护或私有 D)公有或保护(31)定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为(A)。A)私有继承 B)非私有继承C)保护继承 D)公有继承(32)建立一个有成员对象的派生类对象时,各构造函数体的执行次序为(C)。A)派生类、成员对象类、基类B)成员对象类、基类、派生类C)基类、成员对象类、派生类D)基类、派生类、成员对象类(33)如果表达式a>=b中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为(A)。A)a.operator>=(b) B)b.operatotr>=(a)C)operator>=(a,b) )operator>=(b,a)(34)当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(B)。A)iosbase::inB)ios_base::binaryC)ios_base::in|ios_base::outD)ios_base::out(35)在一个抽象类中,一定包含有(C)。A)虚函数
B)纯虚函数C)模板函数
D)重载函数二、填空题(每空2分,共30分)(6)当使用关键字__void__作为函数返回类型时,该函数不返回任何值。(7)已知数组a中有n个元素,下列语句将数组a中从下标x1开始的k个元素移动到从下标x2开始的k个元素中,其中0<=x1<x2<n,x2+k<n,请将下列语句补充完整。for(inti=x1+k-1;i>=x1;i--)a[_x2+k-1_]=a[i];(8)有如下程序:#include<iostream>
usingnamespacestd;intfun1(intx)
{return++x;}intfun2(int&x){return++x;}intmain(){intx=1,y=2;y=fun1(fun2(x));cout<<x<<','<<y;return0:}程序的输出结果是_2,3_。(9)有如下程序:#include<iostream>
usingnamespacestd;classpumpkin{public:pumpkin(){++count;}~pumpkin(){--count;}staticvoidtotal_count(){cout<<count<<"pumpkin(s)"<<endl;}private:staticintcount;};intpumpkin::count=0;intmain(){pumpkinpl[10];pumpkin::total_count();return0;}这个程序的输出结果是__10pumpkin(s)__。(10)有如下递归函数:intFun(intn){if(n<=1)
return1;__elsereturnn*Fun(n-1);__}请补充完整,使得函数Fun能够正确计算形参n的阶乘。(11)请在下列程序中的空格处填写正确的语句:classSample{public:Sample(){}~Sample(){}voidSetData(intdata){//将Sample类成员变量data设置成形参的值__Sample::data=data__//注意形参与成员同名}private:intdata;};(12)有如下类定义,请将Sample类的拷贝构造函数补充完整。classSample{
public:Sample(){)~Sample(){if(p)deletep;)Sample(constSample&s){__p=newint;*p=s.*p__}voidSetData(intdata)
{p=newint(data);}private:int*p;};(13)重载加法运算符“+”,其函数名是__operator+_。(14)有如下程序:#include<iostream>usingnamespacestd;classWages{//"工资"类doublebase;//基本工资doublebonus;//奖金doubletax;//税金public: Wages(doubleCBase,doubleCBonus,doubleCTax):base(CBase),bonus(CBonus),tax(CTax){}doublegetPay()const;//返回应付工资额Wagesoperator+(Wagesw)const;//重载加法};doubleWages::getPay()const{returnbase+bonus-tax;}WagesWages::operator+(Wagesw)const{returnWages(base+w.base,bonus+w.bonus,tax+w.tax);}intmain(){Wageswl(2000,500,100),w2(5000,1000,300);cout<<(wl+w2).getPay()<<endl;return0;}(15)有如下程序:#include<iostream>usingnamespacestd;
classPet{charname[10];public:Pet(char*name){strcpy(this->name,name);}constchar*getName()const{returnname;}virtualvoidcall()const=0;};classDog:publicPet{public:Dog(char*name):Pet(name){}voidcall()const{cout<<"汪汪叫";}};classCat:publicPet{public:Cat(char*name):Pet(name){}voidcall()const{cout<<"喵喵叫";}};intmain(){
Pet*pet1=newDog("哈克"),*pet2=newCat("吉米");cout<<pet1->getName();pet1->call();cout<<end1;cout<<pet2->getName();pet2->call();cout<<end1;return0;}程序的输出结果是__哈克汪汪叫____吉米喵喵叫__2008年9月二级C++笔试试卷参考答案二、填空题(6)void(7)X2+k-1(8)2,3(9)10pumpkin(s)(10)elsereturnn*Fun(n-1);(11)Sample::data(12)p=newint;*p=s.*p;(13)operator+(14)81002009年9月全国计算机二级笔试C++选择题(1-10,21-40每题2分,11-20每题1分)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则D
A)FA必须定义在FB之前B)FB必须定义在FA之前
C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
(12)有如下两个类定义C
classAA{};
classBB{
AAv1,*v2;
BBv3;
int*v4;
};
其中有一个成员变量的定义是错误的,这个变量是
A)v1B)v2C)v3D)v4由于AA和BB都是类的定义,在类定义中无法声明一个自己的对象,所以在BB的类定义中,企图声明一个BB类的对象,是非法的。
(13)有如下类定义:B
classXX{
intxdata;
public:
XX(intn=0):xdata(n){}
};
classYY:publicXX{
intydata;
public:
YY(intm=0,intn=0):XX(m),ydata(n){}
};
YY类的对象包含的数据成员的个数是
A)1B)2C)3D)4下列有关运算符函数的描述中,错误的是C
A)运算符函数的名称总是以operator为前缀
B)运算符函数的参数可以是对象
C)运算符函数只能定义为类的成员函数(友元函数)
D)在表达式中使用重载的运算符相当于调用运算符重载函数
(15)下列关于模板形参的描述中,错误的是B
A)模板形参表必须在关键字template之后
B)模板形参表必须用括弧()括起来
C)可以用class修饰模板形参
D)可以用typename修饰模板形参
(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是A
A)ios_base::curB)ios_base::begC)ios_base::outD)ios_base::end
(17)下列字符串可以用作C++标识符的是D
A)2009varB)gotoC)test-2009D)_123
(18)下列枚举类型的定义中,包含枚举值3的是A
A)enumtest{RED,YELLOW,BLUE,BLACK};
B)enumtest{RED,YELLOW=4,BLUE,BLACK};
C)enumtest{RED=-1,YELLOW,BLUE,BLACK};
D)enumtest{RED,YELLOW=6,BLUE,BLACK};
(19)有如下程序段:C
inti=1;
while(1){
i++;
if(i==10)break;
if(i%2==0)cout<<'*';
}
执行这个程序段输出字符*的个数是
A)10B)3C)4D)5
(20)已知数组arr的定义如下:D
intarr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是
A)cout<<*arr+1<<endl;B)cout<<*(arr+1)<<endl;C)cout<<arr[1]<<endl;
D)cout<<*arr<<endl;(21)计算斐波那契数列第n项的函数定义如下:B
Intfib(intn){
if(n==0)return1;
elseif(n==1)return2;
elsereturnfib(n-1)+fib(n-2);
}
若执行函数调用表达式fib(2),函数fib被调用的次数是
A)1B)2C)3D)4
(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是D
Samplea[2],*p=newSample;
A)0B)1C)2D)3
(23)下列关于虚基类的描述中,错误的是C
A)使用虚基类可以消除由多继承产生的二义性
B)构造派生类对象时,虚基类的构造函数只被调用一次
C)声明“classB:virtualpublicA”说明类B为虚基类
D)建立派生类对象时,首先调用虚基类的构造函数
(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是B
A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元运算符
(25)有如下模板声明:D
template<typenameT1,typenameT2>
classA;
下列声明中,与上述声明不等价的是
A)template<classT1,classT2>
classA;B)template<classT1,typenameT2>
classA;
C)template<typenameT1,classT2>classA;D)template<typenameT1,T2>classA;
(26)下列关于C++流的描述中,错误的是A
A)cout>>'A'表达式可输出字符AB)eof()函数可以检测是否到达文件尾
C)对磁盘文件进行流操作时,必须包含头文件fstream
D)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件
27)有如下程序:C
#include<iostream>
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;}
~Toy(){count--;}
char*GetName(){returnname;}
staticintgetCount(){returncount;}
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmail(){
Toyt1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);
cout<<t1.getCount()<<endl;
return0;
}
运行时的输出结果是
A)1B)2C)3D)运行时出错
(28)有如下程序B
#include<iostream>
usingnamespacestd;
classA{
public:
A(inti):rl(i){}
voidprint(){cout<<'e'<<r1<<'-';}
voidprint()const{cout<<'C'<<r1*r1<<'-';}
private:
intrl;
};
intmain(){
Aal(2);
constAa2(4);
al.print();
a2.print();
return0;
}
运行时的输出结果是
A)运行时出错B)E2-C16-C)C4-C16-D)E2-E4-
29)有如下程序:D
#include<iostream>
usingnamespacestd;
className{
charname[20];
public:
Name(){
strcpy(name,"");
cout<<'
';
}
Name(char*fname)){
strcpy(name,fname);
cout<'
';
}
};
intmain(){
Namenames[3]={Name(“张三”),Name(“李四”)};
Return0;
}
运行此程序输出符号?的个数是
A)0B)1C)2D)3(30)有如下程序:A
#include<iostream>
usingnamespacestd;
public:
AA(){cout<<'1';}
};
classBB:publicAA{
intk;
public:
BB():k(0){cout<<'2';}
BB(intn):k(n){cout<<'3';}
}
intmain(){
BBb(4),c;
return0;
}
运行时的输出结果是
A)1312
D)132
C)32
D)141(31)有如下程序:B
#include<iostream>
usingnamespacestd;
classC1{
public:
~C1(){cout<<1;}
};
ClassC2:publicc1{
public:
~c2(){cout<<2;}
};
intmain(){
C2cb2;
C1*cb1;
return0;
}
运行时的输出结果是
A)121
B)21
C)211
D)12
(32)有如下程序D
#include<iostream>
usingnamespacestd;
classPublication{//出版物类
charname[30];
public:
Publication(char*name="未知名称"){
strcpy(this->name,name);
}
constchar*getName()const{returnname;}
virtualconstchar*getType()const{return"未知类型";}
};
classBook:publicPublication{//书类
public:
Book(char*name):Publication(name){}
virtualconstchar*getType()const{return"书";}
};
voidshowPublication(Publication&p){
cout<<p.getType()<<":"<<p.getName()<<endl;
}
intmain(){
Bookbook("精彩人生");
showPublication(book);
return0;
}
运行时的输出结果是
A)未知类型:未知名称
B)未知类型:精彩人生
C)书:未知名称
D)书:精彩人生
(33)下列关于运算符重载的描述中,错误的是C
A)::运算符不能重载
B)类型转换运算符只能作为成员函数重载
C)将运算符作为非成员函数重载时必须定义为友元
D)重载[]运算符应完成“下标访问”操作
(34)有如下程序:B
#include<iostream>
#include<iomanip>
Usingnamespacestd;
intmain(){
ints[]={123,234};
cout<<right<<setfill('*')<<setw(6);
for(inti=0;i<2;i++){cout<<s[i]<<endl;}
return0;
}
运行时的输出结果是
A)123
B)***123
C)***123
D)***123
234
234
***234
234***
(35)有如下类定义A
classA{
char*a;
public:
A():a(0){}
A(char*aa){
//把aa所指字符串拷贝到a所指向的存储空间
a=
;
strcpy(a,aa);
strcpy(a,aa);
}
~A(){delete[]a;}
};
横线处应填写的表达式是
A)neschar[strlen(aa)+1]
B)char[strlen(aa)+1]
C)char[strlen(aa)]
D)newchar[sizeof(aa)-1]
二、填空题(每空2分,共30分)(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为【6】。(7)有如下循环语句:
For(inti=50;i>20;i-=2)
cout<<i<<',';
运行时循环体的执行次数是【7】。(8)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int*p=a;后,利用指针p也可访问该元素,相应的表达式是【8】。(9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。
voidreverse(int*a,intsize){
if(size<2)return;
intk=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1,
【9】);
}
(10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。
classSample{
public:
Sample(intdata=0);
Private:
Intdata;
};
Sample::Sample(intdata){
【10】
}
(11)有如下类定义:
classSample{
public:
Sample();
~Sample();
Private:
Staticintdate;
};
将静态数据成员data初始化为0的语句是【11】。
(12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。
classShape{
public:
virtualintCalArea()=0;
}
classTriangle:publicShape{
public:
Triangle{ints,inth}:side(s),height(h){}
【12】{returnside*height/2;}
private:
intside;
intheight;
};
(13)有如下程序:
#include<iostream>
usingnamespacestd;
classGrandChild{
public:
GrandChild(){strcpy(name,"Unknown");}
constchar*getName()const{returnname;}
virtualchar*getAddress()const=0;
private:
charname[20];
};
classGrandSon:publicGrandChild{
public:
GrandSon{char*name}{}
Char*getAddress()const{return"Shanghai";}
};
intmain(){
GrandChild*gs=newGrandSon("Feifei");
cout<<gs->getName()<<"住在"<<gs->getAddress()<<endl;
deletegs;
return0;
}
运行时的输出结果是【13】。(14)如下程序定义了“单词”类word,类中重载了<运算符,用于比较“单词”的大小,返回相应的逻辑值。程序的输出结果为:AfterSorting:HappyWelcome,请将程序补充完整。
#include<iostream>
#include<string>
usingnamespacestd;
classWord{
public:
Word(strings):str(s){}
stringgetStr(){returnstr;}
booloperator<(Wordw)const{return(str<w.str);}
friendostream&operator<<(ostream&output,constWord&w)
{output<<w.str;returnoutput;}
private:
stringstr;
};
Intmain(){
Wordw1("Happy"),w2("Welcome");
Cout<<"Aftersorting:";
if(w1<w2)cout<<w1<<''<<w2;
elsecout<<w2<<''<<w1;
return0;
}
(15)请将下列模板类Data补充完整。
template<typenameT>
classData{
public:
voidput(Tv){val=v;}
Tget()
//返回数据成员val的值,返回类型不加转换
{returnval;}
private:
Tval;
};2009年9月全国计算机等级考试二级C++笔试参考答案double(7)15(8)*(p+i)(9)size-1(10)this->data=data;(11)intSample::data=0;(12)intCalArea(size,height)(13)Unknown住在Shanghai2012年3月全国计算机等级考试二级笔试试卷
一、选择题(每小题2分,共70分)(1)下列叙述中正确的是AA)循环队列是队列的一种链式存储结构 B)循环队列是一种逻辑结构C)循环队列是队列的一种顺序存储结构 D)循环队列是非线性结构(2)下列叙述中正确的是DA)栈是一种先进先出的线性表B)队列是一种后进先出的线性表C)栈与队列都是非线性结构D)以上三种说法都不对(3)一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为AA)4 B)16 C)10 D)6(4)在下列模式中,能够给出数据库物理存储结构与物理存取方法的是BA)逻辑模式 B)概念模式 C)内模式 D)外模式(5)在满足实体完整性约束的条件下AA)一个关系中可以没有候选关键字B)一个关系中只能有一个候选关键字C)一个关系中必须有多个候选关键字D)一个关系中应该有一个或多个候选关键字(6)有三个关系R、S和T如下:D
R
s
t
ABC
ABC
ABCa12
a12
b21b21
d21
c31c31
则由关系R和S得到关系T的操作是A)并 B)差 C)交 D)自然连接(7)软件生命周期的活动中不包括AA)软件维护 B)需求分析 C)市场调研 D)软件测试(8)下面不属于需求分析阶段任务的是DA)确定软件系统的性能需求 B)确定软件系统的功能需求C)制定软件集成测试计划 D)需求规格说明书评审(9)在黑盒测试方法中,设计测试用例的主要根据是DA)程序外部功能 B)程序数据结构C)程序流程图D)程序内部结构
(10)在软件设计中不使用的工具是AA)系统结构图 B)程序流程图C)PAD图 D)数据流图(DFD图)(11)若一个函数的原型为"int*Xfun1(intx,int&y,charz);",则该函数的返回值类型为BA)int*B)intC)int&D)char(12)若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为AA)AA.getA()B)x.getA()C)x.aD)AA::a(13)当派生类继承一个基类时,默认的继承方式为CA)publicB)protectedC)privateD)不确定(14)若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是DA)XVoperator*(XV,XV)B)XV*(XV)C)operator*(XV)D)XVoperator*(XV);(15)在定义函数模板或类模板时,开头的保留字是AA)typenameB)templateC)classD)typedef(16)若需要向一个二进制文件尾部添加数据,则该文件的打开方式为AA)ios_base::appB)ios_base::binary|ios_base::outC)ios_base::outD)ios_base::binary|ios_base::app(17)在开发一个c++程序的整个过程中,第3个步骤为CA)链接B)运行C)编辑D)编译(18)若有定义"intx=4,y=5;",则表达式"y>x++?x--:y++"的值为CA)3B)4C)5D)6(19)有如下程序:#include<iostream>usingnamespacestd;intmain(){inti,s=0;for(i=1;s<20;i+=2)s+=i*i;cout<<i<<endl:return0;}运行这个程序的输出结果是DA)3B)5C)7D)9(20)若字符指针p所指向的字符串为"abcdefg",在执行语句char*ap=newchar[strlen(p)+1];之后,ap指向的字符数组的元素个数为BA)9B)8C)7D)6(21)有如下程序:#include<iostream>usingnamespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<endl:return0;}运行这个程序的输出结果是DA)22B)23C)24D)25(22)有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(an){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;return0;}运行这个程序的输出结果是BA)9B)11C)13D)15(23)有如下程序:#include<iostream>usingnamespacestd;classXX{intx;public:XX(intxx=0):x(xx){}intgetX(){returnx;}};classYY:publicXX{inty;public:YY(intxx,intyy):x(xx),y(yy){}intgetV(){returngetX()+y;}};intmain(){YYc(3,4);cout<<c.getV()+c.getX()<<endl;return0;}运行这个程序的输出结果是BA)3B)4C)7D)10(24)在类中重载赋值运算符时,应将其声明为类的BA)静态函数B)友元函数C)成员函数D)构造函数(25)若有函数模板mySwap和一些变量定义如下:template<classT>voidmySwap(TX,TY);doubled1,d2;inti1,i2;下列对mySwap的调用中,错误的是AA)mySwap(i1,i2)B)mySwap(d1,d2)C)mySwap(i1,d1)D)mySwap<int>(i2,d2)(26)在C++中,打开一个文件时与该文件建立联系的是BA)流对象B)模板C)函数D)类(27)已知类IMS中两个成员函数的声明为"voidlisten()const;"与"voidspeak();",另有两个对象的定义为"IMSobj1;"与"constIMSobj2;",则下列语句中,产生编译错误的是BA)obj1.listen();B)obj1.speak();C)obj2.listen();D)obj2.speak();(28)有如下程序:#include<iostream>usingnamespacestd;classMonkey{public:Monkey(){cout<<'M';}Monkey(charn){cout<<n;}~Monkey(){cout<<'Y';}};intmain(){Monkeyp1,*p2;p2=newMonkey('X');deletep2;return0;}运行这个程序的输出结果是AA)MYXB)MYMYC)MXYD)MXYY(29)有如下程序:#include<iostream>usingnamespacestd;classBoat;classCar{public:Car(inti):weight(i){}friendintTotal(constCar&c.constBoat&b);//①private:intweight;};classBoat{public:Boat(inti):weight(i){}friendintTotal(constCar&c,constBoat&b);private:intweight;};intTotal(constCar&c,constBoat&b){//②returnc.weight+b.weight;}intmain(){Carc(10);Boatb(8);cout<<"Thetotalweightis"<<Total(c,b)<<endl;//③return0;}下列关于程序的描述中,正确的是DA)程序编译正确B)程序编译时语句①出错C)程序编译时语句②出错D)程序编译时语句③出错(30)有如下程序:#include<iostream>usingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<<page<<endl;}voidShow(){Media::Show();}//①};intmain(){BookBible;Bible.Name();//②Bible.Print();//③Bible.Show();//④return0;}编译时有错误的是AA)语句①B)语句②C)语句③D)语句④(31)有如下程序:#include<iostream>usingnamespacestd;classBase{public:virtualvoidShow(){cout<<'B';}};classDerived:publicBase{public:voidShow(){cout<<'D';}};intmain(){Base*p1=newDerived;Derived*p2=newDerived;p1->Show();p2->Show();deletep1;deletep2;return0;}运行这个程序的输出结果是DA)BBB)BDC)DBD)DD(32)有如下类定义:classAnimal{public:virtualvoidName()=0;};classKoala:publicAnimal{public:voidName(){/*函数体略*/}};关于上述类定义,下列描述中错误的是BA)类Koala是类Animal的派生类B)类Koala中的Name函数是一个虚函数C)类Animal中的Name函数是一个纯虚函数D)语句"Animala;"能够建立类Animal的一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防近视主题班会
- 餐饮地方风味保护规定
- 高端商业计划书
- 向日葵教学课件
- 高血糖患者的急救护理
- 八年级上册《分式的乘方及乘除混合运算》课件与练习
- 高职院校班主任述职报告
- 民族音乐讲座课件
- CFA考试效率提升试题及答案定位
- 高效备考的CFA试题及答案剖析
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 英语电影赏析智慧树知到课后章节答案2023年下上海杉达学院
- 未成年人违法犯罪的心理分析-以“四少年冷漠杀人案”为例
- VTE防治基础知识办公文档事务文书
- 更换架空光缆施工方案
- 短视频脚本创作课件分享
- 软件无线电的结构
- 普通地质学教材
- 我的连衣裙【经典绘本】
- 在中国脑卒中大会开幕式上讲话五篇
- 人教版英语七年级下册《期末考试试卷》含答案解析
评论
0/150
提交评论