2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第1頁
2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第2頁
2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第3頁
2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第4頁
2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2022年福建省莆田市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)學校: 班級: 姓名: 考號: 一、1.選擇題(10題) 設(shè)ch是char型變量,其值為'A,,則下面表達式的值是( )。ch=(ch>='A'&&ch<=Z)? (ch+32):chAB.aC.ZD.z 下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用以下程序的執(zhí)行結(jié)果為()。#include<iostream.h>classSample{intn;public:Sample(inti)(n=i;}operator++()(n++;}//前綴重載運算符operator++(int)(n+=2;}//后綴重載運算符voiddisp()(cout<<"n="<<n<<endl;});voidmain(){SampleA(2),B(2);A++;++B;A.disp();A.disp();)A.n=4B.n=lC.n=3D.n=5n=3n=2n=4n=6下列程序的輸出結(jié)果是#include<iostream.h>voidmain(){char*str=n12123434n;intxl=0,x2=0,x3=0,x4=0,i;for(i=0;str[i]!='\O*;i++)switch(str[i])(case*!*X4++;case'2'X3++;case'3*X2++;case'4':xl++;}cout<<xl<<”,”<<x2<<”,"<<x3<<”,”<<x4;}A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,2下列敘述中正確的是程序就是軟件B.程序就是軟件C.軟件既是邏輯實體,又是物理實體D.軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合在iosbase類中定義了3個用于文件流定位的枚舉常量,下列枚舉常量不屬于此類的是()。ios_ase::begios_base::curios_base::endios_base::ate內(nèi)部靜態(tài)變量的作用域是()。定義該靜態(tài)變量的文件外部B.定義該靜態(tài)變量的文件內(nèi)部C.定義該靜態(tài)變量的函數(shù)外部D.定義該靜態(tài)變量的函數(shù)內(nèi)部關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述正確的是對于虛擬類型參數(shù)所對應的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略對于虛擬類型參數(shù)所對應的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略對于虛擬類型參數(shù)所對應的模板實參,若能夠省略則必須省略對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略若有以下的定義,inta[]={l,2,3,4,5.6,7,8,9,10),*p=a;則值為3的表達式是 oA.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p有以下程序main(){inta[][3]={{l,2,3},{4,5,0)},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[l][i]=pa[l][i]-l;elsepa[l][i]=l;cout<<a[l][l]+a[l][l]+a[l][2]<<endl;}執(zhí)行后輸出結(jié)果是A.7B.6C.8D.無確定值二、單選題(13題)11.對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是()構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重載設(shè)有a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為A.OB.lC.2D.3有下列程序:#include<stdiO.h>voidmain( ){inta=S,b=l,t;t=(a?2)|b;printf("%d\n",t);)程序運行后的輸出結(jié)果是()oA.21B.llC.6D.l下列對于線性鏈表的描述中,正確的是()。存儲空間必須連續(xù),且各元素的存儲順序是任意的存儲空間不一定是連續(xù),且各元素的存儲順序是任意的存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面下列關(guān)于對象初始化的敘述中,正確的是A.定義對象的時候不能對對象進行初始化定義對象之后可以顯式地調(diào)用構(gòu)造函數(shù)進行初始化定義對象時將自動調(diào)用構(gòu)造函數(shù)進行初始化在一個類中必須顯式地定義構(gòu)造函數(shù)實現(xiàn)初始化以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()opubliCB.staticC..protectedD.private17.25.執(zhí)行語句:cout?8etfill(/*,)?setw(10)?setfill(,^,)?left?123<<,,OK"<<endli后將輸出().123?*?****OK123##S#若##()K123********OK??***?**123S#節(jié)###WOK########在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪問性與單繼承的規(guī)則()。完全相同B.完全不同C.部分相同,部分不同D.以一上都不對已知類MyClass的定義如下:classMyClass{public:voidfunctionl(MyClass&c){out?c.data;)statievoidfunction2(MyClas&c)(cout?c.data;)voidfunction3(){out?data;|staticvoidfunction4(){COut?data;)private:intdata;):其中有編譯錯誤的函數(shù)是( )OA.function!B.function?C.functionsD.function4以下非法的賦值表達式是()。A.n=(i=2,++i);B.j++;C.++(i+l);D.x=j>0;下列類的定義中,有()處語法錯誤。classBase(public:Base()(}Base(inti){data=i;}private:intdata;};classDerive:publicBase{public:Derive():Base(O){}Derive(intx)(d=x;)voidsetvalue(inti)(data=i;)private:d;};A.lB.2C.3D.4有如下程序#include<iostream>usingnamespacestd;inti=l;classFun(public:staticinti;intvalue(){returni-1;)intvalue()const{returni+1;}1;intFun::i=2; intmain()(inti=3;Funfunl;constFunfun2;return0;}若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語句是cout<<funl.value()<<Fun::i<<fun2.value();cout<<Fun::i<<funl.value()<<fun2.value();cout<<funl.value()<<fun2.value()<<Fun::i;cout<<fun2.value()<<Fun::i<<funl.value();下列對重載函數(shù)的描述中,錯誤的是( )。A.重載函數(shù)中不允許使用默認參數(shù)重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇的不要使用重載函數(shù)來描述毫不相干的函數(shù)構(gòu)造函數(shù)重載將會給初始化帶來多種方式三、2.填空題(12題)定義一個函數(shù)時,若只允許函數(shù)體訪問形參的值而不允許修改它的值,則應把該形參聲明為【】類型。下面程序的輸出結(jié)果為 #include<iostream.h>voidmain()(cout<<HHello\bu;}在算法的4個特性中,算法必須能在執(zhí)行有限個步驟之后終止指的是算法的 特性。表達式x.operator+(y.operator++(0))還可以寫成 若有定義語句:int*a,b;,則變量b的數(shù)據(jù)類型是—以下程序的執(zhí)行結(jié)果是 o#include<iostream.h>classCSample(private:intn;staticintk:public:CSample(inti)(n=i;k++;};voiddispO;);voidCSample::disp()(cout<<"n="<<n<<",k="<<k<<endl)intCSample:表達式x=operator-(y,z)其可以表示 為。對線性表采用折半查找法,該線性表必須【loC++中,派生類繼承了基類的全部數(shù)據(jù)成員和除【】之外的全部函數(shù)成員。假定A為一個類,貝IJ語句A(A&a);為該類【】函數(shù)的原型說明。重載的流運算符函數(shù)經(jīng)常定義為類的【】函數(shù)。耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中【】反映了模塊內(nèi)各成分之間的聯(lián)系。四、程序改錯題(10題)使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include(iostream.h>classCOpublic:/********error********/staticintn=O:COn++:COn—:):/********error********/intCO::nvoidmainCOobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout?C.n?endl;cout?C0::n?endl;}37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在試題程序:#include<iostream>#include<fstream>usingstd;voidWriteFile(char*s)(ofstreamoutl;outl.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++)outl.puts(s[i]);)outl.close;)voidClearFileofstreamoutl:outl.open("l.txt");outl.close;)intmain(chars[1024];ClearFile;cout?"pleaseinputastrin9:"?endl;cin.getline(s,1024);WriteFile(s);returnO;}38.使用VC++6.0打開考生文件夾下的源程序文件1-cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******err()r******的下面°試題程序:#include<iostream>#include<fstream>//********eifor********usingstd;voidWriteFile(char*s)(ofstreamoutl;//********eifor********outl.open("1.txt",binarylapp);for(inti=0;s[i]!=0;i++)//********euor********outl.puts(s[i]);}outl.close;}voidClearFile{ofstreamoutl;outl.open("l.txt");outl.close;}intmain(chars[1024];ClearFile;cout?"pleaseinputastrin9:"?endl;cin.getline(s,1024);WriteFile(s);returnO;39.使用VC++6.。打開考生文件夾下的源程序文件1.cppo本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?''時,默認字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>voidmain(inti=O;charstr[120];cout?"Enterastringendwith?."?endl;cin.getline(str,120);while(str)if(str[i])=a)str[i]=str[i]-a+A;i++;}cout?str?endl:return;}40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果為:sizeof(S1)=5sizeof(s2)=10sizeof(s3)=l注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。⑴不能刪除assert()語句。(2)只能修改后面的數(shù)字。提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。試題程序:#include<iostream.h>#include<assert.h>voidmain()(char*sl=”abc”://********eifor********assert(sizeof(s1)==3):cout?"sizeof(s1)=5"?endl;chars2[10]=”ab”://********eifor********assert(sizeof(s2)==2);cout?Msizeof(s2)=10"?endl;chars3=23://********eifor********assert(sizeof(s3)==4);cout?"sizeof(s3)=r,?endl;return;}41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為Constructor?i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC(inti;public:TC;voiddisplay;?TC;};TC:TC{cout?"Constructor"?",";i=0;TC:display{tout?Hi=,,?i?n,H?endl;TC:TC{COUI?"Destructor"?endl:)voidmain(TCa;a.display;}42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>voidmain//******errc)r******intm=0142:intn=0X27:intq=32;cout<<m<<endl;coutVVn<Vendl;cout<<q<<endl;return;}43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:number=1number=10number=100也不能更改程序的結(jié)注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>classTC{public:TC(inti){number=i;)voidSetNumber(intm)(number=m;}intGetNumberconst{returnnumber;}voidPrintconst(cout?"number=,'?number?endl;)private:intnumber;voidmain//********error********TCobjl;objl.Print;TCobj2(3);//********eifor********objl.number=10;//********error*%()******TC.SetNumber(lOO);objl.Print;obj2.Print;44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******eiror******的下面。試題程序:#include<iostream.h)intmain(trythrow("errorH);I//********error********catch(chars)cout?s?endl;throw((int)0);catchcout?i?endl;throw(O);throw("error");catchcout?"ERROR"?endl:returnO;45.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");catch(chars)(cout?s?endl;throw((int)0);catchcout?i?endl;}try{throw(O);throw("errorH);catch(cout?"ERROR"?endl:}returnO;五、綜合應用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“//********1********”之后添加適當?shù)恼Z句。定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳人。請在注釋“//********2********”之后添加適當?shù)恼Z句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請在注釋“//********3********”之后添加適當?shù)恼Z句。⑷完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值在輸出時以空格隔開。請在注釋“//********4********”之后添加適當?shù)恼Z句。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。試題程序:#include<iostream.h>classA(inta;public://********]********intgeta{retuma;}};classAl:publicAintb;public://********2********intgetb{retumb;}};classA2:publicAl{intC;public://****,****3********voidshow//********4********};voidmain(A2a(8.3.7):cout?a.geta?endl:cout?a.getb?endl:a.show;}47.請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.cpp,補充編制C++程序proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。要求:補充編制的內(nèi)容寫在%**********”與“//**********,,兩行之間。實現(xiàn)將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結(jié)果輸出到文件Out.dat中,輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#include<iostream>#include<fstream>#include<catting>usingnamespacestd;classdoc{private:char*sir;〃文本字符串首地址intlength;〃文本字符個數(shù)public:〃構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字符串首地址doc(char*filename);voidreverse;//W字符序列反轉(zhuǎn)一doc;voidwriteToFile(char*filename);};doc::doc(char}filename){ifstreammyFile(filename):intlen=1001,tmp;atr=newchar[1en];length=0;while((trap=myFile.get)!=EOF)(str[length++]=trap;}str[length]='\O';myFile.close;)voiddoc::reverse{〃將數(shù)組atr中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個〃字符交換 Idoc::?doedelete[]str;Ivoiddoc::writeToFile(char*filename)(OfstreamoutFile(filename):outFile?str;outFile.close;)voidmain(docmyDoc(”in.dat”);myDoc.reveme;myDoc.writeToFile(,,out.dat");)六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程MyProjl3o此工程包含一個源程序文件MyMainl2.cpp0程序中定義了兩個類Base和Derived,但類的定義并不完整。請按要求完成下列操作,將類的定義補充完成:定義類shapes的保護成員x和y,它們都是整型變量。請在注釋“〃**1**”之后添加適當?shù)恼Z句。完成構(gòu)造函數(shù)shapes(intd,intw)定義,使類shapes的保護成員x、y分別初始化為d、w,并分別具有默認值0、0。請在注釋“〃**2**”之后添加適當?shù)恼Z句。完成類shapes的成員函數(shù)setvalue(intd,intw)的定義,shapes類的數(shù)據(jù)成員x和y分別被設(shè)置成d和w。請在注釋“〃**3**”之后添加適當?shù)恼Z句。將類shapes的成員函數(shù)voiddisp()設(shè)置成純虛函數(shù)。請在注釋“//**4**''之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。源程序文件MyMainl3.cpp清單如下://MyMainl3.cpp#include<iostream>usingnamespacestd;classshapes(〃***]***public:〃***2***voidsetvalue(intd,intw)(〃***3***}〃***4***);classsquare:publicShapes(public:voiddisp()(cout<<x*y<<endl;});intmain()shapes*ptr;squaresi;ptr=&s1;ptr->setvalue(10,5);ptr->disp();return0;}49.使用VC6打開考生文件夾下的工程test34_3o此工程包含一個test34_3.cpp(其中定義了表示棧的類stacko源程序中stack類的定義并不完整,請按要求完成下列操作,將程序補充完整。定義類stack的私有數(shù)據(jù)成員sp和size,它們分別為整型的指針和變量,其中sP指向存放棧的數(shù)據(jù)元素的數(shù)組,size為棧中存放最后一個元素的下標值。請在注釋“〃**1**”之后添加適當?shù)恼Z句。完成類stack的構(gòu)造函數(shù),該函數(shù)首先從動態(tài)存儲空間分配含有100個元素的int型數(shù)組,并把該數(shù)組的首元素地址賦給指針sp,然后將該數(shù)組的所有元素賦值為0,并將size賦值為-l(size等于-1表示棧為空)。請在注釋“〃**2**”之后添加適當?shù)恼Z句。完成類stack的成員函數(shù)push的定義。該函數(shù)將傳入的整型參數(shù)x壓入棧中,即在size小于數(shù)組的最大下標情況下,size自加1,再給x賦值。請在注釋“〃**3**”之后添加適當?shù)恼Z句。完成類stack的成員函數(shù)pop的定義,該函數(shù)返回棧頂元素的值,即在size不等于?1的情況下,返回數(shù)組中下標為size的元素的值,并將size減1。請在注釋“〃**4**”之后添加適當?shù)恼Z句。程序輸出結(jié)果如下:thetopelem:1thepopelem:1thestackisempty注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。源程序文件test34_3.cpp清單如下:#include<iostream.h>classstack(〃**]**public:stack();boolempty(){returnsize==-l;}boolfull(){returnsize==99;)voidpush(intx);voidpop();voidtop();1;stack::stack()(〃**2**for(inti=0;i<100;i++)*(sp+i)=0;size=-1;1voidstack::push(intx)(〃**3**cout<<"thestackisfull"<<endl;else(size++;*(sp+size)=x;})voidstack::pop(){//**4**cout<<"thestackisempty"<<endl;else(cout<<"thepopelem:"<<*(sp+size)<<endl;size—;})voidstack::top(){ifiempty())cout<<"thestackisempty"<<endl;else{cout<<"thetopelem:M<<*(sp+size)<<endl;}}voidmain()(stacks;s.push(l);s.top();s.popO;s.top();}參考答案l.B解析:ch=(ch>='A'&&ch<='Z')?(ch+32):ch,其中,初始ch='A',則ch>=,A,\u3000&&ch<=Z為真,執(zhí)行ch+32變成小寫aoA靜態(tài)成員表示整個類范圍共享的信息;必須對靜態(tài)數(shù)據(jù)成員進行初始化;靜態(tài)數(shù)據(jù)成員是屬于類的,不能通過類的對象調(diào)用。AD解析:本題考查循環(huán)的嵌套。只要注意在C++語言中,系統(tǒng)在字符指針的最后位置會增加一個字符串結(jié)束符'\\0',執(zhí)行8次for循環(huán),再根據(jù)switch語句中的條件易知答案。注意:C++中各種條件判斷,循環(huán)語句的用法。D解析:軟件是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。軟件并不只是包括在計算機上運行的程序,與這些程序相關(guān)的文檔也被認為是軟件的一部分。簡單地說,軟件就是程序加文檔和數(shù)據(jù)的集合體。D解析:C++文件流的定位方式有3種,被定義為ios_base::seek_dir中的一組枚舉符號:①iosbase::beg相對于文件首?iosbase::cur相對于當前位置(負數(shù)表示當前位置之前)③ios_base::end相對于文件尾D解析:內(nèi)部靜態(tài)變量只被初始化一次,它在定義該變量的函數(shù)內(nèi)部有效。D解析:本題考查的是模板實參的省略。模板實參在以下幾種情況中不能省略:從模板函數(shù)實參表獲得的信息有矛盾:需要獲得特定類型的返回值,而不管參數(shù)的類型如何;虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參表中;函數(shù)模板含有常規(guī)形參。故本題的正確答案是選項D。AA解析:本題考察對二維數(shù)組的使用。按照要求分析各個數(shù)組元素的位置,即可以正確的得到答案為A。A一個類中只能定義一個析構(gòu)函數(shù),否則會造成對同一對象的多次刪除;而構(gòu)造函數(shù)可以根據(jù)不同的參數(shù)個數(shù)和類型進行多次重載。C解析:在&&運算中,如果第1個表達式的值為假時,第2個表達式將不再計算。在表達式中第1個表達式m=a>b的值為0,也就是假,所以第2個表達式的將不再計算。所以n的值沒有變。AAo【解析】本題考查移位運算符在程序中對5邏輯左移2位,其值擴大4倍等于20,然后再進行按位運算,其值等于21。B解析:在鏈式存儲結(jié)構(gòu)中,存儲數(shù)據(jù)結(jié)構(gòu)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。C解析:構(gòu)造函數(shù)的作用是在對象被創(chuàng)建的時候?qū)ο筮M行初始化。構(gòu)造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調(diào)用。故C項正確。B解析:本題考查了類的訪問權(quán)限。在C++中,類的訪問權(quán)限一共有3種,分別是:\u3000public(公有)、protected(保護)和private(私有)。因此,本題應該選擇B。TOC\o"1-5"\h\zBADDo【解析】靜態(tài)函數(shù)調(diào)用非靜態(tài)變量錯誤。必須通過對象實例來訪問非靜態(tài)變量。C解析:對于任何一種賦值運算,其賦值號或復合賦值號左邊必須是一個左值。左值是指具有對應的可由用戶訪問的存儲單元,并且能夠由用戶改變其值的量。而在。選項中賦值號對應的是表達式“i+1”,不是一個左值,因此是非法的賦值表達式。B解析:本題考核派生類的定義和成員的訪問權(quán)限。第1處錯誤:在派生類的構(gòu)造函數(shù)Derive(intx)中沒有調(diào)用基類的構(gòu)造函數(shù)對基類對象初始化。第2處錯誤:數(shù)據(jù)data是基類Base的私有成員,派生類Derive不能訪問,所以在函數(shù)setvalue中對data的賦值是錯誤的。A解析:本題主要考查的是常成員函數(shù)。const關(guān)鍵字可以用于參與對重載函數(shù)的區(qū)分。重載的原則是:常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù)。當類中只有一個常成員函數(shù)時,一般對象也可以調(diào)用該常成員函數(shù)。由此可見,通過funl調(diào)用value。函數(shù)時,是調(diào)用前一個,而通過fun2調(diào)用value。函數(shù),是調(diào)用后一個。另外,value。函數(shù)中訪問的i是類中定義的數(shù)據(jù)成員i,全局變量i在類中被“屏蔽”。觀察4個選項不難發(fā)現(xiàn),要輸出的表達式來來去去只有3個:fun1.value。、fun2.value()和Fun::i。funl.value()調(diào)用的是前一個value。函數(shù),輸出i?l,這里的i是Fun類的成員i,即等于2-1=1ofun2.value()調(diào)用的后一個value()函數(shù),輸出i+l=2+l=3。\u3OOOFun::i是通過類名直接訪問類的靜態(tài)數(shù)據(jù)成員i的值,即2。所以正確的輸出順序應該是:funl.value(),Fun::i,fun2.value()o故應該選擇A。AAo【解析】選項A中,重載函數(shù)中是允許使用默認參數(shù)的;為了使重載函數(shù)有意義,不要使用重載函數(shù)來描述毫不相干的函數(shù);重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇的,包括參數(shù)的個數(shù)和類型。constconst解析:用const修飾的參數(shù)為常類型參數(shù)。Hello有窮性有窮性解析:算法的四個基本特性包括:可靠性、確定性、有窮性和擁有足夠的情報,其中,算法的有窮性指的是算法必須在有限的時間內(nèi)完成,即算法必須在執(zhí)行有限個步驟之后終止。x+y++或x+(y++)x+y++或x+(y++)28.intint解析:缺數(shù)據(jù)類型。n=10k=3n-20k=3n=30k=3x=y-z采用順序存儲結(jié)構(gòu)且元素按值有序采用順序存儲結(jié)構(gòu),且元素按值有序構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)解析:C++的類的繼承中,基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被繼承??截悩?gòu)造拷貝構(gòu)造解析:本題考核拷貝構(gòu)造函數(shù)的定義??截悩?gòu)造函數(shù)是一種特殊的成員函數(shù),它的作用是使用一個已存在的對象來初始化一個被創(chuàng)建的同類的對象。友元友元內(nèi)聚內(nèi)聚(l)“staticintn=O”應改為“staticintn;“intCO::n;”應改為“intCO::n=0;"coutv<c.n?endl;"應改為t6cout?c->n?endl:【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應改為"coutvvc.>nvVendl;"。(1)應改為“usingnamespacestd;"。應改為"outl?open("l.txt",ios::binaryIios::app);應改為“outl.put(s[i]);”。【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“outl.open(”l?txt”,binaryIapp);”語句缺少類ios,即第2處的語句修改為"outl.open("l.txt”,ios::binaryIios::app);第3個標識應該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“outl.put(s[i]);(1)應改為"usingnamespacestd;\n(2)應改為“outl.open(*l.txt',ios::binary|ios::app);\n(3)應改為“outl.put(s[i]);\n【解析】本題第1處的“usingstd建是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為44usingnamespacestd; 第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“outl.openC.txf,binary|app)語句缺少類ios,即第2處的語句修改為“outl.open(l.txf,ios::binary|ios::app);氣第3個標識應該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out].put(s[i]);”。(1)應改為“ein.getline(str,120,?);"。應改為“while(str[i])”。應改為“iRstr[i]>=a&&str[i]v=2)“?!窘馕觥勘绢}中要求以輸入字符“?"為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為4tcin.getline(字符數(shù)組,字符個數(shù),終止標志字符)",所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為"if(str[i]>=a&&str[i]>=z)''。(1)應改為Massert(sizeof(s1)==4);"。\n(2)應改為"assert(sizeof(s2)==lO);\n(3)應改為“assert(sizeof(s3)==l);\n【解析】assert函數(shù)如果為假,貝IJ會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。uassert(sizeof(sl)=3);”語句中“sizeof(sl)=3"為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)=10)尸。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為t4assert(sizeof(s3)==l);”。(1)應改為“TC::TC”。(2)應改為“voidTC::display”。⑶應改為“TC::?TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::",作用域運算符用釆表示某個成員屬于哪個類,使用格式為“(類名)::V成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句"TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“?”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::?TC”。(l)"voidmain''e“intm=0144;"?!癷ntn=OX25;”或“intn===0x25;【解析】本題主要考查了主函數(shù)定義及幕同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0x25;'‘或“intn=0x25;"。(1)應改為“TCobjl(l);”。\n(2)應改為“Objl.SetNumber(lO);\n(3)應改為“0bj2.SelNumber(lOO);”。\n【解析】本題第1處的“TCobjl語句是聲明TC類的對象Objl,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補全參數(shù)1,即第1處的“TCobjl⑴;第2處處的uobjl.number=10;"應該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為“objl.SetNumber(lO);”。類是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論