全國計算機二級C++等級考試真題及答案_第1頁
全國計算機二級C++等級考試真題及答案_第2頁
全國計算機二級C++等級考試真題及答案_第3頁
全國計算機二級C++等級考試真題及答案_第4頁
全國計算機二級C++等級考試真題及答案_第5頁
已閱讀5頁,還剩158頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

全國計算機二級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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論