國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用Vc++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為Number=7Number=12注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#includeclassTC{public://******error******TC(inti):Number=i{//******error******returnNumber;}voidset(inti){Number=i:}voiddisplay(){cout<<"Number="<display();p->set(12);p->display();return;}標(biāo)準(zhǔn)答案:(1)應(yīng)改為“TC(inti):Number(i)”。(2)應(yīng)刪除“returnNumber;”。(3)應(yīng)改為“TC*p=newTC(7);”。知識(shí)點(diǎn)解析:本題第1處是聲明構(gòu)造函數(shù),并使用初始化列表完成成員變量的初始化,可知第1處的初始化列表錯(cuò)誤,正確的應(yīng)該是“TC(inti):Number(i)”。構(gòu)造函數(shù)不能有返回值,不能用return來(lái)返回值,故第2處應(yīng)將“returnNumber;”刪除。類實(shí)例在不指定構(gòu)造函數(shù)的情況下,調(diào)用的是默認(rèn)無(wú)參數(shù)的構(gòu)造函數(shù),此時(shí)成員變量Number是不確定的,在定義對(duì)象時(shí),應(yīng)使用已定義的構(gòu)造函數(shù),根據(jù)輸出結(jié)果可知,p指向的對(duì)象的Number初始化值為7,故第3處應(yīng)改為“TC*p=newTC(7);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。使sum(intn)能計(jì)算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能補(bǔ)充sum函數(shù)。試題程序:#ineludeintsum(intn){}voidmain(){cout<標(biāo)準(zhǔn)答案:intall=0;for(inti=2;i知識(shí)點(diǎn)解析:為了實(shí)現(xiàn)計(jì)算所有n的因子之和且不包含1和自身,在函數(shù)中定義一個(gè)變量all來(lái)保存求和結(jié)果,并為最終結(jié)果在函數(shù)結(jié)束時(shí)返回。在循環(huán)中逐個(gè)尋找n的因子,為了在計(jì)算中排除掉1和n本身,因此循環(huán)變量i的變化范圍為2~n-1。如果n%i==0,說(shuō)明i是n的因子,因此將i加到all上。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類CPoint的帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),兩個(gè)變量為x、y,都為int型,且缺省值為0。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類CRectangle的構(gòu)造函數(shù),給pointl和point2賦值。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CRectangle的函數(shù)GetArea,用來(lái)計(jì)算矩形面積。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義CRectangle類,它擁有兩個(gè)私有對(duì)象pointl和point2,類型為Point,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。試題程序:#include#include(cmath)classCPoint{public://********1********{x=i:y=j;}intGetX(){returnx:}intGetY(){returny;}private:intx,y;};classCRectangle{public://********2********{}intGetArea(){//********3********intheight=point1.GetY()-point2.GetY();return(width*height)?width*height:-width*height;}private://********4********CPointpoint2;};intmain(){CRectanglerect(0,0,1,1);tout<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“CPoint(inti=0,intj=0)”。(2)應(yīng)添加“CRectangle(inttop,intleft,intright,intbottom):point1(top,left),point2(right,bottom)”。(3)應(yīng)添加“intwidth=point1.GetX()-point2.GetX();”。(4)應(yīng)添加“CPointpoint1;”。知識(shí)點(diǎn)解析:本題中在第1處添加構(gòu)造函數(shù)定義,該構(gòu)造帶有兩個(gè)參數(shù)x和Y的構(gòu)造函數(shù),x、y都為int型,默認(rèn)值為0,因此第1處應(yīng)添加“CPoint(inti=0,intj=0)”0第2處通過(guò)Cpoint類的構(gòu)造函數(shù)來(lái)完成Crectangle類成員的初始化,在函數(shù)體內(nèi)沒(méi)有任何函數(shù)語(yǔ)句,因此其初始化過(guò)程是在初始化列表里完成的,通過(guò)調(diào)用基類的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)兩個(gè)私有對(duì)象point1和point2的初始化,故第2處應(yīng)添加“CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)”。面積為矩形長(zhǎng)寬的乘積,因此先計(jì)算矩形的長(zhǎng)和寬,可由兩個(gè)Cpoint對(duì)象的z坐標(biāo)相減計(jì)算得到,CPoint對(duì)象的z坐標(biāo)為私有成員,只能通過(guò)公有接口函數(shù)調(diào)用獲得,因此第3處的語(yǔ)句為“intwidth=pointl.GetX()-point2.GetX();”。Creetangle類的成員變量為兩個(gè)Cpoint對(duì)象成員point1和point2,在第4處補(bǔ)充point1的定義,故第4處應(yīng)添加語(yǔ)句“CPointpointl;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6,0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為1063022注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#includeclassTC{private:intnumber;intAdd(inti){returnnumber+=i:}intSub(inti){returnnumber-=i:}intMul(inti){returnnumber*=i:}intDiv(inti){if(i!=0){returnnumber/=i;}elsereturnnumber;}//******error******typedefint(FUNC)(int);//******error******FUNCfunc[];public:TC(){func[0]=TC::Add;fune[1]=TC::Sub;func[2]=TC::Mul;func[3]=TC::Div;number=0;}intCallFunction(inti,intj){//******error******return(fune[i])(j);}};voidmain(){TCmyobj;cout<標(biāo)準(zhǔn)答案:(1)“typedefint(TC::*FUNC)(int);”。(2)“FUNCfunc[4];”。(3)“return(this-)*func[i])(j);”。知識(shí)點(diǎn)解析:在類中定義函數(shù)指針須指定類名及指針定義運(yùn)算符*,因此第1處函數(shù)指針正確的定義為“typedefint(TC::*FUNC)(int);”。函數(shù)指針數(shù)組本身是數(shù)組類型,因此在定義時(shí)如果沒(méi)有初始化,就必須指定數(shù)組大小,在本題中因?yàn)橹羔様?shù)組包含的指針變量需要指向4種算數(shù)運(yùn)算,因此定義指針數(shù)組大小為4,即第2處應(yīng)改為“FUNCfunc[4];”。func是指針數(shù)組,因此訪問(wèn)時(shí)需要有指針運(yùn)算符“*”,第3處應(yīng)改成“return(this->*func[i])(j);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)sort(int&m,int&n,int&1)實(shí)現(xiàn)將3個(gè)整數(shù)m,n,1由大到小輸出。m最大,1最小。程序?qū)崿F(xiàn)時(shí),可以把最大的數(shù)放到m上,先將m與n進(jìn)行比較,如果m<n,則將m與n的值進(jìn)行交換,然后再用m與1進(jìn)行比較,如果m<1,則將m與1的值進(jìn)行交換,這樣能使m最大,然后再將n與l進(jìn)行比較,若n<1,則將n與1的值互換,互換后1最小。將函數(shù)sort(int&m,int&n,int&1)補(bǔ)充完整,實(shí)現(xiàn)3個(gè)數(shù)的排序。注意:請(qǐng)勿改動(dòng)主函數(shù)。試題程序:#includevoidsort(int&m,int&n,int&1){}intmain(){intx=9:inty=13;intz=-3:sort(x,y,z);cout<標(biāo)準(zhǔn)答案:intt;if(m(n){t=m;m=n;n=t;}//*交換x,y的值*/if(m(1){t==m;m=1;1=t;}//*交換x,z的值*/if(n(1){t=n;n=1;1=t;}/*交換z,y的值*/知識(shí)點(diǎn)解析:由審題分析可知,3次比較便可將m、n、1排序。先將m與n進(jìn)行比較,如果m三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示雇員的Employee類,但類Employee的定義并不完整。請(qǐng)按要求完成下列操作,將類TC的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員name、street、city、zipcode和age分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外,其余都是char型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)TC的定義,使其把參數(shù)傳遞給私有數(shù)據(jù)成員name、street、city、zipcode和age。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成成員函數(shù)alterName(char*newName)的定義。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成成員函數(shù)IsEqual(char*ename)的定義,實(shí)現(xiàn)當(dāng)name相等時(shí)返回真,否則返回假的功能。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。試題程序:#include#include#defineMAXLEN20classTC{private://********1********intage;public:TC(char*newName,char*newStreet,char*newCt,char*newZp,intnewAge);voidalterName(char*newName);voiddisplay();boolIsEqual(char*ename);};TC::TC(char*newName,char*newStreet,char*newCt,char*newZp,intnewAge){//********2********age=newAge;}voidTC::alterName(char*newName){//********3********}boolTC::IsEqual(char*ename){//********4********}voidTC::display(){cout<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“charname[-MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。(2)應(yīng)添加“strcpy(name,newName)strcpy(street,newStreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。(3)應(yīng)添加“strcpy(name,newName);”。(4)應(yīng)添加“returnstrcmP(name,ename)==0;”。知識(shí)點(diǎn)解析:本題第1處要求補(bǔ)充類TC的私有數(shù)據(jù)成員name、street、city、zipcode和age的定義,分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外,其余都是char型的數(shù)據(jù),由主函數(shù)內(nèi)的對(duì)象數(shù)組可知,name、street、city、zipcode均為字符數(shù)組,故第1處應(yīng)添加“charname[MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。構(gòu)造函數(shù)完成成員變量的初始化,這里需要給name、street、city、zipcode賦初值,可利用字符串拷貝函數(shù)將參數(shù)字符串復(fù)制到成員變量中,第2處應(yīng)添加“strcpy(name,newName);strcpy(street,newStreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。函數(shù)aherName(char*newName)是改變成員變量name的值,即將參數(shù)復(fù)制給name,可利用字符串拷貝函數(shù)strcpy完成復(fù)制任務(wù),故第3處應(yīng)添加“strcpy(name,newName);”。IsEqual(char*ename)函數(shù)是比較name成員變量和參數(shù)newName是否相同,可使用字符串比較函數(shù)strcmp,第4處應(yīng)添加“returnstrcmp(name,ename)==0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為TC1TC2注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。試題程序:#include#includestructTC0{//******error******virtualvoidfun();};classTC1:publicTC0{voidfun(){cout<<"TC1"<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“virtualvoidfun()=0;”。(2)應(yīng)改為“p=&obj1;”。(3)應(yīng)改為“p=&obj2;”。知識(shí)點(diǎn)解析:如果在基類中不使用這個(gè)虛函數(shù),其返回值也是沒(méi)有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)時(shí)初始化為0的函數(shù)。即第1處的“virtualvoidfun()=0;99。第2處的P為指針變量,將對(duì)象obj1賦值給p,實(shí)際上是P指向?qū)ο髈bj1的地址,所以將“p=*obj1;”修改為“p=&obj1;”。第3處的“p=*obj2;”修改為“p=&obj2;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請(qǐng)完成函數(shù)fun(char*s),使其具有以下功能:(1)把S中的大寫字母轉(zhuǎn)換成小寫字母,把其中的小寫字母轉(zhuǎn)換成大寫字母,并且在函數(shù)中調(diào)用寫函數(shù)WriteFile()將結(jié)果輸出到2.txt文件中。例如:s="helloWORLD",則結(jié)果為“s="HELLOworld"”。(2)完成函數(shù)WriteFile(char*s),把字符串輸入文件中。提示:打開文件使用的第二參數(shù)為“ios_base::binary|ios_base::app”。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#inelude(iostream)#include(fstream>#include(cmath)usingnamespacestd;voidWriteFite(char*s){}voidfun(char*s){}voidClearFile(){ofstreamout1;out1.open("2.txt");out1.close();}intmain(){ClearFile();chars[102];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:(1)voidWriteFile(char*s)中的命令語(yǔ)句:ofstreamout1;out1.open("2.txt",ios_base::binary/ios_base::app);//打開文件2.txtout1<知識(shí)點(diǎn)解析:在WriteFile(char*s)函數(shù)中,利用標(biāo)準(zhǔn)流ofstream實(shí)現(xiàn)字符串寫入文件2.txt。在fun函數(shù)中,利用for循環(huán)逐個(gè)判斷字符是大寫還是小寫。如果是大寫,那么加上32實(shí)現(xiàn)大-g轉(zhuǎn)換為小寫。否則就減去32,實(shí)現(xiàn)小寫到大寫的轉(zhuǎn)換。最后調(diào)用前面實(shí)現(xiàn)的WriteFile函數(shù),將字符串寫入文件。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整。請(qǐng)按要求完成下列操作,將類Date的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月和日,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對(duì)象的默認(rèn)值為year=1,month=1,day=1,請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員year、month和day分別初始化為參數(shù)y、m和d的值,請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成成員函數(shù)print的類外定義,使其以“年-月-日”的格式將Date對(duì)象的值輸出到屏幕上,例如1949-10-1。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。試題程序:#includeclassDate{public://********1********Date(intY,intm,intd){//********2********}voidprint()const;private://datamember//********3********};voidDate::print()const{//********4********}intmain(){DateOlympic_BJ(2008,8,8);Olympic_BJ.print();return0;}標(biāo)準(zhǔn)答案:(1)應(yīng)添加“Date(){year=1;month=1;day=1;}”或“Date():year(1),month(1),day(1){}”。(2)應(yīng)添加“year=y;month=m;day=d;”。(3)應(yīng)添加“intyear,month,day;”。(4)應(yīng)添加“cout<知識(shí)點(diǎn)解析:本題考查了類的定義。根據(jù)題意,此處應(yīng)定義3個(gè)int型數(shù)據(jù)成員year、month和day。根據(jù)題意,第2處應(yīng)添加默認(rèn)構(gòu)造函數(shù),并初始化3個(gè)變量,這里既可以使用賦值語(yǔ)句來(lái)實(shí)現(xiàn),也可以使用初始化列表。第3處只能通過(guò)賦值語(yǔ)句初始化3個(gè)成員,因?yàn)樽⑨?位于函數(shù)中,無(wú)法在此處使用初始化列表。添加輸出語(yǔ)句,注意題目頭包含的頭文件是iostream.h,不能添加std::前綴。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,使其輸出結(jié)果為:n=0注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。試題程序:#include//********error********classTC(){public://********error********void~TC(){}TC(intn){cout<<’n’<<’=’<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“classTC”。(2)應(yīng)改為“~TC(){}”。(3)應(yīng)改為“};”。知識(shí)點(diǎn)解析:本題第1處的“classTC()”為類的定義,根據(jù)C++中類的定義格式,類名后面是沒(méi)有括號(hào)的,所以第1處應(yīng)為“classTC”。第2處的“void~TC(){}”是析構(gòu)函數(shù),C++中析構(gòu)函數(shù)的格式中是沒(méi)有函數(shù)類型說(shuō)明的,所以修改為“~TC(){}”。根據(jù)C++中類的定義,第3個(gè)標(biāo)識(shí)下類結(jié)束的“}”缺少分號(hào),即修改為“};”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)IsPalindromes(char*string)實(shí)現(xiàn)的功能是判定給定的字符串是否構(gòu)成回文字符串,如果是則返回1,否則返回0。例如:abcdcba或者1234321都認(rèn)為是回文字符串。如果串為空或一個(gè)字母時(shí),均認(rèn)為是回文字符串。注意:不能修改程序的其他部分,只能補(bǔ)充IsPalindromes函數(shù)。試題程序:#include#defineMAXLEN1024boolIsPalindromes(char*string){}voidmain(){charstr[MAXLEN];cout<<"請(qǐng)輸入一行文字"<標(biāo)準(zhǔn)答案:intlen=0;for(;string[len]!=NULL;len++)//獲取字符串的長(zhǎng)度;len--;//下標(biāo)從0開始到len-1for(inti=0;i(len;i++,1e13--)//第一個(gè)和最后一個(gè)比較,第二個(gè)和倒數(shù)第二個(gè)比較{if(string[i]!=string[len])//不等說(shuō)明不同,返回0return0;}return1;知識(shí)點(diǎn)解析:本題由于字符串的長(zhǎng)度是未知的,先利用循環(huán)求出字符串的長(zhǎng)度,循環(huán)變量從0開始,直到數(shù)組的末尾,string[len]==NULL為循環(huán)結(jié)束條件,如此便得到了數(shù)組的長(zhǎng)度len。知道長(zhǎng)度后就可以判斷對(duì)稱位置的元素是否相同,比如第一個(gè)元素和最后一個(gè)元素,第二個(gè)元素和倒數(shù)第二個(gè)元素,如此比較下去直到到了最中間的元素為止。可以利用循環(huán)來(lái)比較是否對(duì)稱,設(shè)置另一個(gè)循環(huán)變量i,i從0開始表示從數(shù)組的頭部開始讀數(shù),len從數(shù)組的尾部開始讀數(shù),如果string[i]!=string[len],則跳出循環(huán)返回0,如果循環(huán)結(jié)束還沒(méi)發(fā)現(xiàn)不同,則返回1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整,使得程序的輸出結(jié)果為21。(1)增加靜態(tài)私有變量Num,類型為int,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(2)增加靜態(tài)變量Num并初始化為10,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成靜態(tài)函數(shù)get的定義,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成對(duì)象obj對(duì)靜態(tài)函數(shù)get的調(diào)用,使得輸出結(jié)果為21,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái),請(qǐng)不要修改其他的程序代碼。試題程序:#includeclassTC{//********1********intOwn:public:TC(inti){Own=i:}//********2********{returnNum+obj->Own;}};//********3********intmain(){TCobj(11);//********4********cout<<<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“staticintNum;”。(2)應(yīng)添加“intTC::Num=10;”。(3)應(yīng)添加“staticintget(TC*obj)”。(4)將“cout<<<知識(shí)點(diǎn)解析:第1處要求“增加靜態(tài)私有變量Num,類型為int,”。靜態(tài)變量的定義格式為static類型變量名稱,本題只要在類的private區(qū)域定義int型的靜態(tài)變量Num,即在第1處添加“staticintNum;”。第2處要求“增加靜態(tài)變量Num并初始化為10”。第2個(gè)標(biāo)識(shí)的位置在類TC的外部,在C++中,使用“::”作用域運(yùn)算符聲明定義的變量屬于哪個(gè)類。由題干知道,Num屬于類TC,根據(jù)C++的作用域運(yùn)算符,在第2處添加語(yǔ)句“intTC::Num=10;”。第3處要求“完成靜態(tài)函數(shù)get的定義”。根據(jù)第3個(gè)標(biāo)識(shí)下的“returnNum+obj->Own”語(yǔ)句知道,get函數(shù)具有形參obj指針。obj調(diào)用Own變量,說(shuō)明它是TC類型,并且靜態(tài)函數(shù)的定義只要在其前面聲明static就可以了,即在第3處添加語(yǔ)句“staticintget(TC*obj)”。第4處要求“完成對(duì)象obj對(duì)靜態(tài)函數(shù)get進(jìn)行調(diào)用,使得輸出21到屏幕上”。程序中第4處的“cout<<<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,即使程序在屏幕輸出以下類似內(nèi)容:0012FF681OOl2FF3C50012FF6C20012FF4440012FFT030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC~006AFDEF數(shù)據(jù)可能因?yàn)闄C(jī)器的不同,程序輸出的內(nèi)容會(huì)有差異。只要相差為4的連續(xù)地址即可。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。試題程序:#includeusingnamespacestd;intmain(){int*p,a[5]={1,2,3,4,5};double*q,b[5]={5.0,4.0,3.0,2.0,1.0};intx;P=a:q=b;//********error********for(x=0;x<=5;x++)//********error********cout<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“for(x=0;x(5;x++)”。(2)應(yīng)改為“cout<知識(shí)點(diǎn)解析:本題中根據(jù)數(shù)組a、b的定義,它們都有5個(gè)元素,而第1處的“for(x=0;x<=5;x++)”循環(huán)了6次,應(yīng)該是5次,所以在第1處將其修改為“for(x=0;x(5;x++)”;第2處的p變量為指針型變量,p+x為指向數(shù)組中第x個(gè)元素的地址,這里要輸出的是存儲(chǔ)單元的內(nèi)容,所以使用“*”指針元素符,即修改為“cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用Vc++6.0打開考生文件夾下的源程序文件2.cpp。請(qǐng)完成函數(shù)fun(intx)的定義,該函數(shù)功能是判定X的所有約數(shù),并且在函數(shù)中調(diào)用寫函數(shù)WriteFile將結(jié)果輸出到2.txt文件中。例如:x=100的約數(shù)為124510202550100。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include(iostream)#include(fstream)#include(cmath)usingnamespacestd;voidWriteFile(intc){ofstreamout1;outl.open("2.txt",ios_base::binary|ios_base::app);out1<標(biāo)準(zhǔn)答案:for(inti=1;i(=x;i++){if(x%i==0)//如果x被i整除,那么i為x的約數(shù){WriteFile(i);//將約數(shù)i存入文件}}知識(shí)點(diǎn)解析:本題中由1到x,循環(huán)判斷其中是否有x的約數(shù)。如果x被i整除,那么i為x的約數(shù)。最后調(diào)用WriteFile函數(shù),將約數(shù)i存入文件。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,要求編寫一個(gè)CMyShape類,含有求面積、周長(zhǎng)等的純虛函數(shù),然后編寫一個(gè)CRectangle類和CCircle類繼承CMyShape,并實(shí)現(xiàn)求面積、周長(zhǎng)的兩個(gè)函數(shù)。在main函數(shù)中測(cè)試得到下面的結(jié)果:在CMyShape類構(gòu)函數(shù)造內(nèi)在CCircle類構(gòu)造函數(shù)內(nèi)在CMyShape類構(gòu)造函數(shù)內(nèi)在CRectangle類構(gòu)造函數(shù)內(nèi)myCircle:Area=314.159Girth=62.8319myRectangle:Area=900Girth=120具體要求如下:(1)定義求面積的純虛函數(shù),請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義求周長(zhǎng)的純虛函數(shù),請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(3)請(qǐng)?jiān)谧⑨?和注釋4后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,不要改動(dòng)程序中的其他內(nèi)容。試題程序:#include#include#definePI3.1415926classCMyPoint{public:intx,y;CMyPoint(inttx,intty):x(tx),y(ty){}};classCMyShape{public:CMyShape(){cout<<"在CMyShape類構(gòu)造函數(shù)內(nèi)"<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“virtualdoubleGetArea()=0;”。(2)應(yīng)添加“virtualdoubleGetGirth()=0;”。(3)應(yīng)添加“myShape=myCircle;”。(4)應(yīng)添加“myShape=myRectangle;”。知識(shí)點(diǎn)解析:本題在第1處聲明純虛函數(shù),純虛函數(shù)的定義格式為“virtual<函數(shù)類型><函數(shù)名>(<參數(shù)表>)=0”,由程序后面的函數(shù)體實(shí)現(xiàn)可知求面積純虛函數(shù)的函數(shù)名稱為GetArea,因此第1處應(yīng)添加“virtualdoubleGetArea()=0;”。聲明格式和1)相同,由求周長(zhǎng)的函數(shù)具體實(shí)現(xiàn)可知該函數(shù)的名稱為GetGirth,因此第2處應(yīng)添加“virtualdoubleGetGirth()=0;”。主函數(shù)中定義了CMyShaPe類對(duì)象指針myShape,CCircle類對(duì)象指針myCircle,CRectangle類對(duì)象指針myRectangle。由類繼承關(guān)系知,在調(diào)用子類的構(gòu)造函數(shù)時(shí),編譯器會(huì)自動(dòng)調(diào)用父類的默認(rèn)構(gòu)造函數(shù)來(lái)初始化父類,因此在實(shí)例化類CRectangle和類CCircle的實(shí)例時(shí),抽象父類CMyShape的默認(rèn)構(gòu)造函數(shù)會(huì)先被調(diào)用,因此在屏幕上先輸出“在CMyShape類構(gòu)造函數(shù)內(nèi)”,然后輸出“在CCircle類構(gòu)造函數(shù)內(nèi)”,實(shí)例化CRectangle對(duì)象的過(guò)程也是如此。同時(shí)由純虛函數(shù)的性質(zhì)知.抽象基類不需要實(shí)現(xiàn)純虛函數(shù),它的實(shí)現(xiàn)是在子類中完成的,但通過(guò)周子類實(shí)例隱式轉(zhuǎn)換成基類實(shí)例,可以使得基類實(shí)例具有子類實(shí)例的特性,因此可以訪問(wèn)子類的成員函數(shù),myShape是基類指針,其虛函數(shù)GetArea和GetGirth沒(méi)有實(shí)現(xiàn),要求程序輸出的面積值和周長(zhǎng)值,只可能是myShape指向子類對(duì)象,調(diào)用子類的函數(shù)GetArea和GetGirth打印輸出,顯然在第3處是myShape指向子類CCirele對(duì)象,即“myShape=myCircle;”。同理第4處myShape指向子類CRectangle對(duì)象,即第4處應(yīng)添加“myShape=myRectangle;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型的參數(shù)x和y,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳入。請(qǐng)?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個(gè)整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請(qǐng)?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類書局成員a和b及類A2自身的數(shù)據(jù)成員c的值,上述3個(gè)值在輸出時(shí)以空格隔開。請(qǐng)?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序的其他部分。試題程序:#includeclassA{inta;public://********1********intgeta(){returna;}};classA1:publicA{intb;public://********2********intgetb(){returnb;}};classA2:publicA1{intc;public://********3********voidshow(:){//********4********});voidmain(){A2a(8,3,7);cout<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“cout<知識(shí)點(diǎn)解析:成員函數(shù)display打印變量a和b的值,即cout輸出a和b的值,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<”不正確,第1處的語(yǔ)句應(yīng)改成“cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請(qǐng)完成函數(shù)fun(char*str,charch)的定義,本函數(shù)采用二分法,在已按字母次序從小到大排序的字符數(shù)組str中,查找字符ch,若ch在數(shù)組中,函數(shù)返回字符ch在數(shù)組中的下標(biāo),否則返回1。二分法查找的思想是初始查找區(qū)間的下界為0,上界為len-1,查找區(qū)間的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功;若1ist[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。在新區(qū)間內(nèi)繼續(xù)用二分法查找。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填人所編寫的若干語(yǔ)句。試題程序:#includeintfun(char*str,charch){}voidmain(){charstr[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’};charch;cout<<"請(qǐng)輸入一個(gè)字符:"<>ch:cout<<"輸入字符的位置是:"<標(biāo)準(zhǔn)答案:intlow=0;//初始查找區(qū)間的下界inthigh;intk;for(high=0;str[high]!=0.high++)//求字符串長(zhǎng)度while(low(high)//循環(huán)判斷字符位置{k=(low+high)/2:if(str[k]==ch)returnk;elseif(str[k]>ch)high=k-1;elselow=k+1:}if(str[low]==ch)returntow;return-1;知識(shí)點(diǎn)解析:本題首先初始查找區(qū)間的下界為0,然后求得字符串長(zhǎng)度len,上界為len-1,查找區(qū)間的中部后,k=(下界+上界)/2;若tist[k]等于ch,查找成功。若list[k])ch,則新的查找區(qū)間的下界變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示個(gè)人基本信息的類PInfo,但類Plnfo的定義并不完整。請(qǐng)按要求完成下列操作,將類Plnfo的定義補(bǔ)充完成:(1)定義私有數(shù)據(jù)成員bloodType用于表示血型,血型為char型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成構(gòu)造函數(shù)的定義,要求具有默認(rèn)值,默認(rèn)值為身高175,體重70,血型A。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類Pinfo外成員函數(shù)Setlnfo的定義。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)在主函數(shù)中調(diào)用成員函數(shù)Setlnfo,把對(duì)象d2的3個(gè)私有數(shù)據(jù)成員分別設(shè)定為身高170,體重64,血型B。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句?!⒁猓撼谥付ㄎ恢锰砑诱Z(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。試題程序:#includeclassPlnfo{private:intheight;intweight;//********1********public://********2********:height(ht),weight(Wt),bloodType(bt){};PInfo(PInfo&h1):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){}intGetHeight(){returnheight;}intGetWeight(){returnweight;}intGetBloodType(){returnbloodType;}voidSetlnfo(intht,intwt,charbt);voidDisplay();};//********3********{height=ht;weight=wt:bloodType=bt;}voidPlnfo::Display(){tout<<"Humanlnfo:";eout"height<<"cm,"<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“charbloodType;”。(2)應(yīng)添加“Plnfo(intht=175,intwt=70,charbt=’A’)”。(3)應(yīng)添加“voidPlnfo::Setlnfo(intht,intwt,charbt)”。(4)應(yīng)添加“h2.Setlnfo(170,64,’B’);”。知識(shí)點(diǎn)解析:本題第1處定義私有數(shù)據(jù)成員為char型的bloodType,故第1處應(yīng)添加“charhloodType;”。構(gòu)造PInfo()完成3個(gè)成員的初始化,并且?guī)в心J(rèn)值參數(shù),默認(rèn)值為身高175,體重70,血型A,由函數(shù)體語(yǔ)句可知參數(shù)名分別為ht、wt和bt,因此第2處應(yīng)添加“Plnfo(intht=175,intwt=70,charbt=’A’)”。第3處的語(yǔ)句在類外完成成員函數(shù)SetInfo的定義,在類外定義成員函數(shù)的格式為“(返回值類型)<類名>::<成員函數(shù)>(<參數(shù)表>)”,故第3處應(yīng)添加“voidPInfo::SetInfo(intht,intwt,charbt)”。調(diào)用函數(shù)Setlnfo需要3個(gè)參數(shù),程序要求把對(duì)象d2的3個(gè)私有數(shù)據(jù)成員分別設(shè)定為身高170,體重64,血型為B,即把這3個(gè)值傳入函數(shù)Setlnfo,因此第4處應(yīng)添加“h2.SetInfo(170,64,’B’);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。試題程序:#includevoidmain(){inti=0:charstr[120];cout<<"Enterastringendwith’?’."<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“cin.getline(str,120,’?’);”。(2)應(yīng)改為“while(str[i])”。(3)應(yīng)改為“if(str[i])=’a’&&str[i](=’z’)”。知識(shí)點(diǎn)解析:本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個(gè)數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,’?’);”。第2處的“while(str)”語(yǔ)句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處"if(str[i])=’a’)”語(yǔ)句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語(yǔ)句只是判斷字符是否大于’a’,但是小寫字符應(yīng)該是’a’到’z’,所以修改為“if(st[i]>=’a’&&str[i](=’z’)”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請(qǐng)完成函數(shù)fun(char*data),此函數(shù)的功能是找出字符串?dāng)?shù)組中最大的ASCII值,如果有相同變量,則輸出最后一個(gè)所在的位置;如果字符串為空,則返回-1;或者不存在時(shí)也返回-1。注意:不能修改函數(shù)的其他部分。計(jì)算數(shù)字如果第一個(gè)字母最大,則返回0。依次增加。試題程序:#includeintfun(char*data){}voidmain(){charsource[1024];cout<<"請(qǐng)輸入一行英文字符串:\n";cin.getline(source,1024);cout<<"最大的字母出現(xiàn)在距離頭部"<標(biāo)準(zhǔn)答案:intfun(char*data){intMaxPos=0;if(data==NULL)return-1:charMaxData=data[0];if(MaxData==0)return-1;for(inti=1;data[i]!=0;i++)if(data[i])=MaxData){MaxData=data[i];MaxPos=i:}returnMaxPos;}知識(shí)點(diǎn)解析:本題考查的是查找最大值算法。根據(jù)題意,首先檢查傳入?yún)?shù)的合法性,如不合法或?yàn)榭沾?,則返回-1,然后通過(guò)for循環(huán)遍歷整個(gè)字符串,將最大值字符保存到MaxData內(nèi),并將最大位置保存給MaxPos,最后返回MaxPos。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型的參數(shù)x和y,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳入。請(qǐng)?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個(gè)整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請(qǐng)?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類書局成員a和b及類A2自身的數(shù)據(jù)成員c的值,上述3個(gè)值在輸出時(shí)以空格隔開。請(qǐng)?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序的其他部分。試題程序:#includeclassA{inta;public://********1********intgeta(){returna;}};classA1:publicA{intb;public://********2********intgetb(){returnb;}};classA2:publicA1{intc;public://********3********voidshow(:){//********4********});voidmain(){A2a(8,3,7);cout<標(biāo)準(zhǔn)答案:(1)“A(intx){a=x;}”。(2)“A1(intx,inty):A(y){b=x;}”。(3)“A2(intx,inty,intz):A1(y,z){c=x;}”。(4)“cout<知識(shí)點(diǎn)解析:本題第1處要求定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a,構(gòu)造函數(shù)沒(méi)有返回值類型,所以應(yīng)填“A(intx){a=x;)”。第2處第3處根據(jù)繼承中對(duì)象的初始化語(yǔ)法規(guī)則可知。第4處要求調(diào)用基類成員函數(shù),由于都是公有繼承,geta()、getb()都是自身類的公有函數(shù),所以根據(jù)繼承規(guī)則,在對(duì)象A2中,依然是公有的可以通過(guò)對(duì)象A2直接調(diào)用。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出為10TC1注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。試題程序:#include(iostream)classTC1{public:TC1(){}//********error********private:virtual~TC1(){usingnamespacestd;cout<<"TC1"<標(biāo)準(zhǔn)答案:(1)刪除“private:”語(yǔ)句。(2)應(yīng)改為“TC2(inti)”。(3)應(yīng)改為“std::cout<知識(shí)點(diǎn)解析:本題中第1處的“virtual~TC1()”語(yǔ)句是TC1析構(gòu)函數(shù),不是私有函數(shù),所以刪除“private:”?!癳xplicitTC2(inti)”構(gòu)造函數(shù)語(yǔ)句中的“explicit”是禁止隱式轉(zhuǎn)換。程序中無(wú)法實(shí)現(xiàn)對(duì)類TC2的直接使用,所以這里應(yīng)該將其刪除。即“TC2(inti)”o在第3處實(shí)現(xiàn)fun函數(shù)中m_i的標(biāo)準(zhǔn)輸出,即在屏幕上輸出10。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即“std::cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)func(intd[],intn)的功能是將長(zhǎng)度為num的數(shù)組d中的奇數(shù)擴(kuò)大1倍,并存儲(chǔ)到數(shù)組d中。例如:2,15,6,-3,8,-11,9,24,50返回4,30,12,-6,16,-22,18,48,100將func(intd[],intnum)函數(shù)補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。試題程序:#includevoidfunc(intd[],intnum){}intmain(){intData[]={2,15,6,-3,8,-11,9,24,50);func(Data,9);for(inti=0;i(sizeof(Data)/sizeof(int);i++){cout<標(biāo)準(zhǔn)答案:for(inti=0;i(num;i++){if(d[i]%2!=o)d[i]=2*d[i];}知識(shí)點(diǎn)解析:由審題分析可知,利用循環(huán)來(lái)逐個(gè)判斷d[]中的元素,d[]中元素個(gè)數(shù)為num,因此循環(huán)變量從0變化至num。在循環(huán)內(nèi),用if語(yǔ)句判斷該元素是不是奇數(shù),即if(d[i]%2!=0),將滿足條件的d[i]擴(kuò)大一倍。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示矩形的CRect類,但類CRect的定義并不完整。請(qǐng)按要求完成下列操作,將類CRect的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint,分別用于表示矩形左上角及右下角的點(diǎn)的坐標(biāo),它們都是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定默認(rèn)實(shí)參為0,它們都是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)在main函數(shù)中定義CRect類的實(shí)例rect2,并把rect1的值賦給rect2。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,不要改動(dòng)程序中的其他內(nèi)容。試題程序:#includeclassCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){1eftPoint=m;}voidSetRightPoint(doublem){rightPoint=m;)voidSetTopPoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CRect::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::SetPoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<1eftPoint<<","<標(biāo)準(zhǔn)答案:(1)應(yīng)添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。(2)應(yīng)添加“CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。(3)應(yīng)添加“~CRect(){}”。(4)應(yīng)添加“CRecreet2(rect1);”。知識(shí)點(diǎn)解析:本題在第1處完成私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint的定義,均為double型的變量,故第1處應(yīng)添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。構(gòu)造函數(shù)完成成員變量的初始化,類CRect的默認(rèn)構(gòu)造函數(shù)初始化double型私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint為0,故第2處應(yīng)添加“CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。析構(gòu)函數(shù)名和類名一致,并在前面加“~”以和構(gòu)造函數(shù)區(qū)別,該析構(gòu)函數(shù)體為空,故第3處應(yīng)添加“~CRect(){}”,雖然該函數(shù)體為空,但“{}”必須保留。主函數(shù)中類CRect的對(duì)象rect2是通過(guò)復(fù)制構(gòu)造函數(shù)將rect1的值賦值給它實(shí)現(xiàn)初始化的,而rect1的初始化直接調(diào)用自定義構(gòu)造函數(shù),第4處應(yīng)添加“CRectrect2(rect1);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用vC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論