版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年江蘇省鹽城市全國計算機等級考試C++語言程序設計真題(含答案)學校: 班級: 姓名: 考號: 一、1.選擇題(10題)對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數(shù)中正確的是()o冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-l)/2設有以下語句,對a數(shù)組元素的引用中(其中0<=i<10)不正確的是inta[10]={0,l,2,3,4,5,6,7,8,9},*p=a;a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))有如下程序:#include<iostream>usingnamespacestd;Classx{protected:inta;public:x()(a=l;});classxl:virtualpublicx{public:xl()(a+=l;cout<<A.lB.123C.242D.244下列選項中不全是C++語言關鍵字的是const,break,defaultlong,void,usingvirtual,extern,includetry,throw,thisC++語言本身沒有定義I/O操作,使用I/O流的程序需要包括()。A.stdio.hB.istream.hC.ostream.hD.iostrcam.h有以下程序:#include<iostream>usingnamespacestd;classCSample{private:inti;public:CSample();CSample(intval);voidDisplayO;-CSample();};CSample::CSample()(cout<<"Cl";i=0;)CSample::CSample(intval){cout<<"C2”;i=val;}voidCSample::DisplayO{cout<<i<<":}CSample::?CSample(){cout<<"D";)intmain(){CSamplea,b(10);return0;)執(zhí)行后的輸出結果為()。A.C1C2DDB.DDC1C2C.C2C1DDD.C1DC2D在進行單元測試時,常用的方法是()。A.采用白盒測試,輔之以黑盒測試B.采用黑盒測試,輔之以白盒測試只使用白盒測試D.只使用黑盒測試以下程序中調用cin函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是#include<iostream.h>voidmain(){int*p,*q,a,b;p=&a;cout<<"inputa:";cin>>p;)*p表示的是指針變量p的地址p表示的是變量a的地址,而不是變量a的值C?*p表示的是指針變量p的值*p只能用來說明p是一個指針變量有以下程序#include<iostream>usingnamespacestd;classMyClass{public:MyClass(intn)(number=n;}〃拷貝的構造函數(shù)MyClass(MyClass&other){number=other.number;}~MyClass()(}private:intnumber;};MyClassfun(MyClassp){MyClasstemp(p);returntemp;|intmain()MyClassobj1(10),obj2(0);MyClassobi3(obj1);obj2=fun(obj3);return0;}程序執(zhí)行時,MyClass類的拷貝構造函數(shù)被調用的次數(shù)是()。A.5B.4C.3D.2關于構造函數(shù)A()的拷貝構造函數(shù)正確的是A.A(A*B);B.A(AB);C.A(A&B);D.A(A);二、單選題(13題)以下各選項組中,均是C++語言關鍵字的組是()。publicoperatorthisshodstringstaticitwhile>=priratecoutprintf—個隊列的進隊列順序是1,2,3,4,則出隊列順序為()。A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,4已知類Myclass的定義如下classMyClass{public:voidfunction1(MyClass&C)(cout<<c.data;)staticvoidfunction2(MyClass&C){cout<<c.data;}voidfunction3(){cout<<data;|staricvoidfunction4()(cout<<data;}private:intdata;);其中有編譯錯誤的函數(shù)是()。A.function1B.function2C.functionsD.function4有如下程序:#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();)intmain()(Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);returnO;1程序的輸出結果是()。A.BBBB.BBDC.DBBD.DBD數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()o控制流B.加工C.數(shù)據(jù)存儲D.源和潭開發(fā)軟件所需高成本和產品的低質量之間有著尖銳的矛盾,這種現(xiàn)象稱作軟件投機B.軟件危機C.軟件工程D.軟件產生下列數(shù)據(jù)模型中,具有堅實理論基礎的是()。層次模型B.網(wǎng)狀模型C.關系模型D.以上3個都是對于模板定義關鍵字class和typename說法不正確的是( )。程序中的class并不能都替換為typenameclass和typename都可互相替換程序中的typename都能替換為class程序中的部分class可以替換為typename下列函數(shù)的運行結果是( )。#include<iostream.h>intadd(inta?intb);voidmain(){externintX?y;cout?add(X,y)?endl;)intx(20),y(5);intadd(inta?intb)(ints=a+b:returns;)25B.3OC.20D.15下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值靜態(tài)數(shù)據(jù)成員不能通過類的對象調用線性表L=(al,a2,a3,...ai,...an),下列說法正確的是()每個元素都有一個直接前件和直接后件線性表中至少要有一個元素表中諸元素的排列順序必須是由小到大或由大到小除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件下列關于賦值運算符“=”重載的敘述中,正確的是賦值運算符只能作為類的成員函數(shù)重載默認的賦值運算符實現(xiàn)了“深層復制”功能重載的賦值運算符函數(shù)有兩個本類對象作為形參如果已經定義了復制(拷貝)構造函數(shù),就不能重載賦值運算符有如下程序:#include<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn):{if(n<=O)return;function2(n-2);}voidfunction2(intn){if(n<=O)return;functionl(n-l);1intmain()(functionl(5);
returnO;)下列關于程序運行情況的描述中,正確的是()oA.functionl運行1次,function?運行2運行2次function!運行2次,functionl運行2次,functionl運行2次,function?運行]次function?運行3次function?運行2次三、2.填空題(12題)冒泡排序算法在最好的情況下的元素交換次數(shù)為【]o在深度為4的滿二叉樹中,葉子結點的個數(shù)為【】。數(shù)據(jù)庫系統(tǒng)其內部分為三級模式,即概念模式、內模式和外模式。其中, 是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。表達式cout<<hex改用ios類的成員函數(shù)表示為【】。為滿足運算符+的可交換性,必須將其重載為【】。若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。編譯時的多態(tài)性可以通過使用 獲得。下列程序中聲明了兩個類AA和BB,其中函數(shù)“print”是類AA的成員函數(shù),但是類BB的友元函數(shù)。請在①、②和⑧處各填入正確的內容,使程序能正常運行。#include<iostream.h>【];classAA{intt;public:AA(intx){t=x;)voidprint(BB&b););classBB{ints;public:BB(inty){s=y;}friendvoid【]print(BB&););void[]{cout<<"AA:"<<t<<”BB:H<<w.s<<endl;}<voidmain()(AAm(6);BBn(8);m.print(n);)輸出結果為:AA:6;BB:8表達式c3=c1.operator+(c2)或c3=operator+(cl,c2)還可以表示為已知數(shù)組a中的元素個數(shù)為n,下列語句的作用是將下標為i的元素移動到下標為i-1的單元,其中l(wèi)<i<no例如,當n=4,a中原有數(shù)據(jù)為1、2、3、4時,則移動后a中元素為2、3、4、4。請將語句補充完整:for(inti=0;i<n-1;i++)a[i]=a o將x+y*z中的“+”用成員函數(shù)重載,”*”用友元函數(shù)重載應寫為在C++中,一個函數(shù)一般由兩部分組成,分別是函數(shù)頭和【】。四、程序改錯題(10題)使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain(try(throw("error");catch(chars){cout?s?endl;try(throw((int)0);catch{cout?i?endl;}try(throw(O);throw("error");catchcout?"ERROR"?endl:IreturnO;使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出:9,8,7,6,5注意:錯誤的語句在/********error********/的下面,修改該語句即可。其他的語句不能修改。試題程序:#include(iostream.h>classTC/********error********/TC(inti)(m_i=i;}voidprint{cout?—m_i?,;}public:intmain/********error********/inti;TC04(10);while(i>5)/********erpQr********/i++04.print;}cout?endl;returnO;使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結果為:sizeof(Sl)=5sizeof(s2)=10sizeof(s3)=l注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。⑴不能刪除assert()語句。(2)只能修改后面的數(shù)字。提示:assert函數(shù)如果為假,則會產生一個中斷異常。試題程序:#include<iostream.h>#include<assert.h>voidmain(){char*sl=,,abc,*://********euor********assert(sizeof(s1)==3):cout?"sizeof(s1)=5"?endl;chars2[10]=%b”://********euor********assert(sizeof(s2)==2);cout?"sizeof(s2)=10,,?endl;chars3=23://********euor********assert(sizeof(s3)==4);cout?"sizeof(s3)=1"?endl;return;}使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");catch(chars)(cout?s?endl;throw((int)0);catch(cout?i?endl;)try{throw(O);throw("errorH);}catch(cout?"ERROR"?endl:}returnO;使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC(inti;public:TC;voiddisplay;?TC;//******error******TC:TCcout?nConstructor"?",i=0;)//******errc)r******TC:display(tout?ui=u?i?n,H?endl;1//******errc)r******TC:TC(COUI?',Destructor"?endl:}voidmain{TCa;a.display;41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在試題程序:#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;}voidClearFile{ofstreamoutl;outl.open("1.txt”);outl.close;}intmain(chars[1024];ClearFile;cout?"pleaseinputastrin9:"?endl;cin.getline(s,1024);WriteFile(s);returnO;142.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:number=lnumber=10number=100注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>classTC(public:TC(inti)(number=i;}voidSetNumber(intm)(number=m;}intGetNumberconst(returnnumber;)voidPrintconst⑴類CO不能被實例化,請定義一個純虛函數(shù)print,在注釋1后添加適當?shù)恼Z句。類C1私有虛繼承類CO,請在注釋2后添加適當?shù)恼Z句。類C2公有繼承于CO,請在注釋3后添加適當?shù)恼Z句。⑷類c3公有繼承于C2與Cl,請在注釋4后添加適當?shù)恼Z句。注意:增加代碼或者修改代碼的位置已經用符號表示出來。請不要修改其他的程序代碼。試題程序:#include(iostream.h)classCO(//********〔********};//********2********classCl:{public:voidprint(coutV”"Cl"VVendl;I};//********3********classC2:public:voidprintcoutVV”C2”VVendl;1);classC3:(public:voidprint(cout<<"C3"<<endh}};voidmain{C30bj3;C20bj2;obj3.print;obj2.print;return;}六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test29_3o此工程包含一個test29_3.cpp,其中定義了二維坐標類Coordinate和三維坐標類造函數(shù)中請將X賦值給數(shù)據(jù)成員b,將y作為基類A構造函數(shù)的參數(shù)值傳入。請在注釋“〃**2**”之后添加適當?shù)恼Z句。定義類A2的構造函數(shù),該構造函數(shù)有三個整型的參數(shù)x,y和2,在構造函數(shù)中請將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類A1構造函數(shù)的參數(shù)x和y。請在注釋7/**3**”之后添加適當?shù)恼Z句。完成類A2的成員函數(shù)show的定義,該函數(shù)調用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員c的值,上述三個值在輸出時以空格隔開。請在注釋“〃**4**”之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。程序輸出結果如下:96962源程序文件test3O_3.cpp清單如下:#include<iostream.h>classA(inta;public:〃**]**intgeta(){returna;});classAl:publicA{intb;public:〃**2**intgetb(){returnb;|);classA2:publicAlintc;序列按關鍵字有序或基本有序時,快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-l)/2oD解析:本題考核數(shù)組與指針。A選項中,p為指針,數(shù)組名a代表數(shù)組的首地址,所以p-a就是指針到數(shù)組首地址的偏移量。B選項中,&a[i]是取數(shù)組a中第i個元素的地址,而對于*(&a[i]),由指針運算符*的運算規(guī)則可知,語句*(&a[i])就是返回地址&a[i]空間中存放的值,也即a[i]oC)選項,由于指針p已指向數(shù)組a,所以pE就等于a[i]小這是常用的一種數(shù)組元素引用方式。D)選項是以指針方式對數(shù)組元素進行引用,由于a只是代表數(shù)組的首地址,并不是指針,所以表達式*(*(a+i))是錯誤的,正確的引用應該為:*(*(p+i))°D解析:本題程序中引入了虛基類。在主函數(shù)中,執(zhí)行語句“yobj;”時,先執(zhí)行虛基類x的構造函數(shù),使a=l,然后執(zhí)行類xl的構造函數(shù),使a=2,并輸出值2。再執(zhí)行類x2的構造函數(shù),使a=4,并輸出值4。最后執(zhí)行類y的構造函數(shù),輸出值4。C解析:要熟練掌握C++語言中的關鍵字。注意:include不是C++語言的關鍵字。注意:define也不是關鍵字。D解析:在C++中使用1/0流的程序需要包括iostream.h0A解析:本題程序首先定義了類CSample,其內部成員為private類型數(shù)據(jù)成員inti和public類型成員函數(shù),包括兩個構造函數(shù)、一個析構函數(shù)和一個普通成員函數(shù)voidDisplay(),其成員函數(shù)的功能分別為:?CSample::CSample():構造函數(shù),輸出構造函數(shù)的執(zhí)行消息“C1”,并將數(shù)據(jù)成員i賦值為i=0:CSample::CSample(intval):重載構造函數(shù),輸出構造函數(shù)的執(zhí)行消息“C2”,并將數(shù)據(jù)成員i賦值為i=val:voidCSample::DisplayO:成員函數(shù),輸出數(shù)據(jù)成員i的值;CSample::?CSample。:析構函數(shù),輸出析構函數(shù)的執(zhí)行消息,并輸出數(shù)據(jù)成員值。在主函數(shù)中,程序分別采用兩個構造函數(shù),創(chuàng)建了類CSample的兩個對象,一個利用不帶參數(shù)的構造函數(shù)創(chuàng)建對象a,另一個利用帶參數(shù)的構造函數(shù)創(chuàng)建對象b。根據(jù)上面的分析,可以得到a和b中數(shù)據(jù)成員i的值分別為0(不帶參數(shù)情況)和10(所帶參數(shù)值)。因此下面的兩條輸出語句分別輸出“0"和“10"。此外,由于系統(tǒng)在創(chuàng)建對象時會調用構造函數(shù),在對象生命期結束時會調用析構函數(shù),因此程序還會有相應的輸出。由于構造函數(shù)的調用順序與對象創(chuàng)建的先后順序一致,因此程序應該首先輸出兩個構造函數(shù)的調用信息,即“C1”和“C2”。在主函數(shù)執(zhí)行結束后,由于兩個對象a和b的生命期已經結束,因此系統(tǒng)將調用析構函數(shù)收回系統(tǒng)資源。由于析構函數(shù)的調用順序與構造函數(shù)完全相反,因此系統(tǒng)將首先調用對象b的析構函數(shù),程序輸出析構函數(shù)執(zhí)行信息“D”;之后調用對象a的析構函數(shù),程序輸出析構函數(shù)執(zhí)行信息“D”oA解析:單元測試的步驟如下:①理解需求和設計。清楚被測試模塊在整個軟件中所處的位置。一個原則是:好的設計,各模塊只負責完成自己的事情,層次與分工明確。單元測試時,可以不測試不屬于被測模塊所負責的功能,以減少測試用例的冗余。概覽源代碼。瀏覽源代碼,初步檢查源代碼的編碼風格與規(guī)范,大致估算測試工作量,確定模塊的復雜程度,初步制定測試的優(yōu)先級等。精讀源代碼。認真閱讀和分析代碼,理解代碼的業(yè)務邏輯,檢查代碼與設計是否相符,仔細研究邏輯復雜的模塊,可采用一些檢查列表來檢查程序可能會出現(xiàn)的問題。設計測試用例。綜合運用白盒測試方法(并結合黑盒測試方法)設計測試用例,包括功能測試、性能測試等,要達到一定的測試覆蓋率。本題正確答案為選項A。搭建單元測試環(huán)境。這個階段主要就是寫樁模塊和驅動模塊,然后驅動模塊想辦法獲取被測試模塊對數(shù)據(jù)的處理結果,并判定返回的實際結果與測試用例的預期結果是否一致,通過測試框架來記錄執(zhí)行的結果,對于出現(xiàn)的錯誤,還需統(tǒng)計錯誤的信息,供執(zhí)行完之后分析。執(zhí)行測試。運行寫好的驅動模塊完成對被測試模塊的測試。補充和完善測試用例。在測試過程中不斷補充測試用例,直到滿足要求為止。分析結果,給出評價。根據(jù)測試的結果分析、查找錯誤的原因,并找到解決的辦法。測試結束之后,根據(jù)測試過程的數(shù)據(jù)統(tǒng)計,給出被測試對象評價。B解析:p表示的是變量a的地址,定義后*p表示的是變量a的值。BC解析:固定的一種拷貝方式就是v類名>:<類名〉constv類名〉&v引用對象名〉注意:如果一個類中沒有聲明,拷貝構造函數(shù),編譯器會自層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。我們通常把滿足以下兩個條件的數(shù)據(jù)模型稱為層次模型。有且僅有一個結點無雙親,這個結點稱為根結點。其他結點有且僅有一個雙親。層次模型用樹形結構來表示各實體與實體間的聯(lián)系。實體是數(shù)據(jù)庫中數(shù)據(jù)描述的對象,可以是一個人、一種商品等。在層次模型中,每個結點表示一個記錄類型,記錄之間的聯(lián)系用結點之間的連線表示,這種聯(lián)系是父子之間一對多的聯(lián)系。記錄就是描述實體的相關數(shù)據(jù)。如果取消層次模型中的兩個限制,即允許一個以上的結點無雙親,則每一個結點可以有多個父結點,便形成了網(wǎng)狀。我們把網(wǎng)狀表示實體之間聯(lián)系的模型稱為網(wǎng)狀模型。關系模型用表格形式表示實體類型及其實體間的聯(lián)系。關系模型是目前最重要的一種模型,它是建立在嚴格的數(shù)學概念的基礎上的,具有最堅實的理論基礎。關系模型的基本數(shù)據(jù)結構是二維表,每一張二維表稱為一個關系。BB?!窘馕觥吭贑++程序中的typename是都可以替換為class的,但class不能都替換為typename。AAo【解析】由主函數(shù)main入手,定義外部變量x和y,調用函數(shù)addo因為x,y為外部變量,所以“intx(20),y(5);”的賦值在add也是有效的,即add函數(shù)的運算結果為25。A靜態(tài)成員表示整個類范圍共享的信息;必須對靜態(tài)數(shù)據(jù)成員進行初始化;靜態(tài)數(shù)據(jù)成員是屬于類的,不能通過類的對象調用。D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項C也有誤,只有D項是正確的。A解析:=、[]、()、?>以及所有的類型;轉換運算符只能作為成員函數(shù)重載,A項正確。默認的賦值運算符只實現(xiàn)了淺層復制,B項錯誤。賦值運算符只能作為成員函數(shù)重載,形參表中只有一個參數(shù),對應于第二操作數(shù),C項錯誤。一個類中如果需要重載運算符“=”,通常也就需要定義自己特有的復制構造函數(shù),反之亦然,故D項錯誤。DDo【解析】函數(shù)執(zhí)行過程為:function】。),function2(3),functionl(2),function2(0)return。24.00解析:冒泡排序算法在最好的情況下(已經有序的)元素交換次數(shù)為0。25.88解析:二叉樹有一個性質,即在二叉樹的第k層上,最多有2kl(k>l)個結點。而對于滿二叉樹來說,每一層上的結點數(shù)都達到最大值,即在滿二叉樹的第k層上有2k-l個結點。因此,在深度為4的滿二叉樹中,所有葉子結點在第4層上,即其結點數(shù)為2kJ=2kd=8外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結構和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結構的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。cout.serf(los::hexbasefield);友元函數(shù)友元函數(shù)解析:當需要重載運算符具有可交換性時,選擇重載為友元函數(shù)。黑盒或者黑箱黑盒或者黑箱解析:軟件測試的方法。虛函數(shù)和對象虛函數(shù)和對象解析多態(tài)性是指一個接口,多種方法。而虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù),并且通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。通過對象名調用的虛函數(shù),是在運行階段把虛函數(shù)和類對象“綁定"在一起的。31.classBB;AA::AA::print(BB&w)c3=cl+c2a[i+l]a[i+l]解析:實現(xiàn)由后面一個數(shù)組元素將前一個數(shù)組元素進行覆蓋,故應該為a[i]=a[i+l]ox..operator+(operator*(yz))x..operator+(operator*(y,z))解析:C++中用成員函數(shù)重載x*y為:x.operator*(y);用友元函數(shù)重載x*y為operator*(x,y);用成員函數(shù)重載x+y為:x.operator+(y);用友元函數(shù)重載x+y為:operator+(x,y)。函數(shù)體函數(shù)體解析:在C++中,一個函數(shù)由函數(shù)頭和函數(shù)體兩部分組成。(1)應改為ucatch(char*s),,o(2)應改為“cateh(inti)"。⑶應改為“catch(...)”?!窘馕觥勘绢}中第1個標識前的異常拋出語句為-throw("error"); 其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號表示它可以捕捉任何類型的異常信息,即修改為“catch(...)”。(1)應添加“public:\n(2)“inti”應改為“inti(10);”。\n(3)“i++;”應改為“i??;”。\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應在構造函數(shù)前添加“public:”,否則該類無法被實例化。變量的初始化可以通過“=''號,也可以和初始化對象一樣添加構造參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i每次減1,在i>5時循環(huán),故i初始化應為10。若循環(huán)中i每次增1,則循環(huán)永遠不會退出。(1)應改為“assert(sizeof(sl)=4);\n(2)應改為uassert(sizeof(s2)==10);\n(3)應改為"assert(sizeof(s3)==l);\n【解析】assert函數(shù)如果為假,貝IJ會產生一個中斷異常。所以要讓它正常執(zhí)行輸出結果,那么assert函數(shù)只有為真,才不會產生中斷異常?!癮ssert(sizeof(sl)=3);”語句中“sizeof(sl)=3”為假,這會使程序產生異常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為fctassert(sizeof(s1)==4);str2[10]說明,str2的空間為10,在第2處修改為4tassert(sizeof(s2)=10)尸。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為44assert(sizeof(s3)=1);(1)應改為"catch(char*s)‘‘。(2)應改為“cateh(inti)”。⑶應改為“catch(...)”?!窘馕觥勘绢}中第1個標識前的異常拋出語句為-throw(-error-); 其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號表示它可以捕捉任何類型的異常信息,即修改為“catch(...)”。(1)應改為“TC::TC“。\n(2)應改為“voidTC::display”。\n⑶應改為“TC::~TC”。\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::v成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句叮(2::和”可知,顯然這里是在類外實現(xiàn)析構函數(shù),析構函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加字符,用采與構造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。(1)應改為“usingnamespacestd;"。應改為"outl.open("1.txt”,ios::binaryIios::app);應改為“outl?put(s[i]);”?!窘馕觥勘绢}第1處的“usingstd;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;"。第2處,調用成員函數(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]);⑴應改為“TCobjl⑴;氣應改為“Objl.SetNumber(lO);”。應改為“0bj2?SelNumber(lOO);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)TC類構造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結果兩1,所以補全參數(shù)1,即第1處的“TCobjl(l);”。第2處處的"objl.number=10;,'應該是調用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為“objl.SetNumber(lO);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,這里應該使用定義的對象,即。bj2,所以將語句修改為“obj2.SetNumber(lOO);"。(1)應改為“ein.getline(str,120,?);”。\n(2)應改為“wh、e(str[i])"。\n⑶應改為“if(str[i]>=a&&str[i]<=2fo\n【解析】本題中要求以輸入字符“?"為結束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為^cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結束符,若不是結束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”°第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。(1)應改為"usingnamespacestd;\n(2)應改為“outl.open('l.txt',ios::binary|ios::app);\n⑶應改為“outl.put(s[i]);\n【解析】本題第1處的“usingstd建是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd; 第2處,調用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“outl.openC.txf,binary|app);”語句缺少類ios,即第2處的語句修改為t4outl.open('l.txt',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)”?!窘馕觥勘绢}中要求以輸入字符“?”為結束符,用于字符輸入的流成員函數(shù)getline函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成功制作匯報的關鍵要素及步驟解析
- 幼兒園大班采茶課程設計
- 探索活動土豆課程設計
- 《Pr、Co摻雜硼酸鑭粉體的制備及其性能研究》
- 托班香蕉課程設計
- 《初中革命傳統(tǒng)作品跨媒介閱讀教學研究》
- 國際貿易中知識產權侵權行為的預防與應對
- 建筑工程設計中常見的風險及應對策略
- 《新企業(yè)風險管理框架下國有企業(yè)X公司應收賬款內部控制研究》
- 《我國巨災指數(shù)保險發(fā)展研究》
- DB3710T 190-2023 花生病蟲草害綠色防控技術規(guī)程
- 2024年墊資與分成合作合同3篇
- 大部分分校:地域文化形考任務四-國開(CQ)-國開期末復習資料
- 【MOOC】中西文化鑒賞-鄭州大學 中國大學慕課MOOC答案
- 2024全球體育行業(yè)調研報告(第八期)-漸入佳境
- 2024-2030年中國橄欖油行業(yè)市場發(fā)展動態(tài)及前景趨勢分析報告
- 事業(yè)單位考試職業(yè)能力傾向測驗(綜合管理類A類)試題與參考答案(2024年)
- GB/T 15934-2024電器附件電線組件和互連電線組件
- 空調維保服務投標方案 (技術方案)
- 《建筑工程設計文件編制深度規(guī)定》(2022年版)
- 2024年共青團入團積極分子考試題庫(附答案)
評論
0/150
提交評論