國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷25(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷25(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷25(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷25(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷25(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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ī)試(操作題)模擬試卷25(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾projl下的工程pmjl,該工程中包含程序文件main.cpp,其中有關(guān)TVSet(“電視機(jī)”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR**********found**********”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:規(guī)格:29英寸,電源:開,頻道:5,音量:18規(guī)格:29英寸,電源:關(guān),頻道:一1,音量:一1注意:只修改每個(gè)“//ERROR**********found**********”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classTVSet{//“電視機(jī)”類constintSize;intchannel;//頻道intvolume;//音量boolon;//電源開關(guān):true表示開,false表示關(guān)public://ERROR**********found**********TVSet(intSize){this一>Size(size);channel=0;volume=15;on=false;}intgetSize()const{returnsize;)//返回電視機(jī)規(guī)格boolisOn()const{returnon;}//返回電源開關(guān)狀態(tài)//返回當(dāng)前音量,關(guān)機(jī)情況下返回一1intgetVolume()const{returnisOn()?voiume:一1;)//返回當(dāng)前頻道,關(guān)機(jī)情況下返回一1intgetChannel()const{returnisOn()?channel:一1;}//ERROR**********found**********voidturnOnOff()const//將電源在“開”和“關(guān)”之間轉(zhuǎn)換{on=!on;)voidsetChannelTo(intchan){//設(shè)置頻道(關(guān)機(jī)情況下無(wú)效)if(isOn()&&chan>=0&&chan<=99)channel=chan;}voidsetVolumeTo(intv01){//設(shè)置音量(關(guān)機(jī)情況下無(wú)效)if(isOn()&&vol>=0&&vol<=30)volume=vol;)voidshowstate(){//ERROR**********found***********cout<<“規(guī)格:”<標(biāo)準(zhǔn)答案:(1)1TSet(intsize):size(size){(2)voidturnOnOff()(3)cout<<”規(guī)格:”<知識(shí)點(diǎn)解析:主要考查TVSet類,其中涉及構(gòu)造函數(shù)、const函數(shù)和bool型函數(shù)。TVSet類的私有成員中有個(gè)常變量constimsize,這種變量只能使用成員列表初始化來(lái)賦值,判斷一個(gè)函數(shù)是否為const函數(shù),就要看函數(shù)體內(nèi)是否有成員變量的值發(fā)生了改變?!窘忸}思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)閟ize是常變量,所以只能用成員初始化列表來(lái)初始size,即TVSet(intsize):size(size){。(2)主要考查考生對(duì)const函數(shù)的掌握,在turnOnOff函數(shù)中,有語(yǔ)句:on=!on;,使得on的值發(fā)生改變,因此該函數(shù)不能使用const。(3)主要考查考生對(duì)輸出語(yǔ)句的掌握,下一條語(yǔ)句:<<”,電源:”<<(isOn()?”開”:”關(guān)”),說(shuō)明輸出語(yǔ)句還沒(méi)結(jié)束,因此不能用“;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該工程中包含一個(gè)程序文件main.epp,其中有類Quadritic、類Root及主函數(shù)main的定義。一個(gè)Quadritic對(duì)象表示一個(gè)ax2+bx+c的一元二次多項(xiàng)式。一個(gè)Root對(duì)象用于表示方程ax2+bx+c=0的一組根,它的數(shù)據(jù)成員aura-of_roots有3種可能的值,即0、1和2,分別表示根的3種情況:無(wú)實(shí)根、有兩個(gè)相同的實(shí)根和有兩個(gè)不同的實(shí)根。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為(注:輸出中的x~2表示x2):3X’2+4X+5=0.0無(wú)實(shí)根4.5X’2+6X+2=0.0有兩個(gè)相同的實(shí)根:一0.666667和一0.6666671.5X’2+2X一3=0.0有兩個(gè)不同的實(shí)根:0.896805和一2.23014注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****foun****”。#inclUde#include#includeusingnamespacestd;classRoot{//一元二次方程的根public:constdoublex1;//第一個(gè)根constdoublex2;//第二個(gè)根constintnumofroots;//不同根的數(shù)量:0、1或2//創(chuàng)建一個(gè)“無(wú)實(shí)根”的Root對(duì)象Root():x1(0.0),x2(0.0),numofroots(O){)//創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象Root(doubleroot)//**********found**********:_________{}//創(chuàng)建一個(gè)“有兩個(gè)不同的實(shí)根”的Root對(duì)象Root(doublerootl,doubleroot2):xl(rootl),x2(root2),numofroots(2)t}voidshow()const{//顯示根的信息cout<<“\t\t”;switch(num—of—roots){case0://**********found************case1:cout<<“有兩個(gè)相同的實(shí)根:”<標(biāo)準(zhǔn)答案:(1)x1(root),x2(root),mlm_0f_roots(1)(2)cout<<”無(wú)實(shí)根”;break;(3)a(a),b(b),c(c)(4)returnQuadratic(a—x.a(chǎn),b—x.b,c—x.c);知識(shí)點(diǎn)解析:本題考查Root類和Quadratic類,其中涉及構(gòu)造函數(shù)和const函數(shù)。【解題思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象。說(shuō)明兩個(gè)根x1和x2相等,根的數(shù)量為1,因此可以得出語(yǔ)句:x1(root),x2(root),Hum_of.roots(1){}。(2)主要考查考生對(duì)switch語(yǔ)句的掌握,在語(yǔ)句switch(num_0f_roots){中,Bum一of-roots代表根的數(shù)量,當(dāng)為0時(shí),表示沒(méi)有根,因此輸出無(wú)實(shí)根,注意要在句尾加break。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,本題使用成員初始化列表來(lái)構(gòu)造函數(shù)。(4)主要考查考生對(duì)成員函數(shù)的掌握,題目要求求兩個(gè)多項(xiàng)式的差。兩個(gè)多項(xiàng)式的差就是各個(gè)次方的系數(shù)相減,因此得出語(yǔ)句:returnQuadratic(a—x.a(chǎn),b—x.b,c—x.c);o三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中包含了類Integers和主函數(shù)main的定義。一個(gè)Integers對(duì)象就是一個(gè)整數(shù)的集合,其中包含0個(gè)或多個(gè)可重復(fù)的整數(shù)。成員函數(shù)add的作用是將一個(gè)元素添加到集合中,成員函數(shù)remove的作用是從集合中刪除指定的元素(如果集合中存在該元素),成員函數(shù)sort的作用是將集合中的整數(shù)按升序進(jìn)行排序。請(qǐng)編寫這個(gè)sort函數(shù)。此程序的正確輸出結(jié)果應(yīng)為:528245327527663l528245327527663l6528245327527663161952845327527663l61952845327527663161942344556192728316675要求:補(bǔ)充編制的內(nèi)容寫在“//**********333**********”與“//**********666**********”之間。不得修改程序的其他部分。注意:相關(guān)文件包括:main.cpp、Integers.h。程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測(cè)試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//Integers.h#ifndefINTEGERS#defineINTEGERS#includeusingnamespacestd;constintMAXELEMENTS=100;//集合最多可擁有的元素個(gè)數(shù)classIntegers{intelem[MAXELEMENTS];//用于存放集合元素的數(shù)組intcounter;//創(chuàng)于記錄集合中元素個(gè)數(shù)的計(jì)數(shù)器public:Integers():counter(O){)//創(chuàng)建一個(gè)空集合Integers(intdata[],intsize);//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個(gè)整數(shù)集合voidadd(intelement);//添加一個(gè)元素到集合中voidremove(intelement);//刪除集合中指定的元素intgetCount()const{returncounter;)//返回集合中元素的個(gè)數(shù)intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidsort();//將集合中的整數(shù)按由小到大的次序進(jìn)行排序voidshow()const;//顯示集合中的全部元素};voidwriteToFile(constchar*path);#endif//main.cpp#include”Integers.h”#includeIntegers::Integers(intdata[],intsize):counter(O){for(inti=0;i=0;J一一)if(elem[j]一element)break;for(inti=J;i標(biāo)準(zhǔn)答案:上0runt1=U;1i;j一)//從最后一位到i到前一位遍歷elemif(elem[i]>elem[j])//如果elem[i]大于elem[j],則兩值替換{inttemp=elem[i];//定義整形變量。temp并賦值為elem[i];elem[i].=elem[j];//給elem[i]賦值elem[i]elem[j]=temp;//給elem[j]賦值temp}知識(shí)點(diǎn)解析:本題考查Integers類,其中涉及數(shù)組、構(gòu)造函數(shù)、成員函數(shù)、const函數(shù)和排序算法。【解題思路】主要考查考生對(duì)排序算法的掌握,要排序的數(shù)組為elem,元素個(gè)數(shù)為counter,在這里使用下標(biāo)i和j進(jìn)行比較,當(dāng)elem[i]>elem[j]時(shí),數(shù)組元素通過(guò)中間變量temp進(jìn)行交換。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proil下的工程projl,該工程中包含程序文件main.cpp,其中有類Clock(“時(shí)鐘”)的定義和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found*****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Initialtimesale0d:0h:0m:59sAfteronesecondtimesale0d:0h:1m:0s注意:只修改每個(gè)“//ERROR****found*****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;ClassClock{public:Clock(unsignedlongi=0);voidset(unsignedlongi=0);voidprint()const;voidtick();//時(shí)間前進(jìn)一秒Clockoperator++();private:unsignedlongtotal—sec,seconds,minutesrhoursrdays;};Clock::Clock(unsignedlongi):totalsec(i),seconds(i%60),minutes((i/60)%60),hours((i/3600)%24),days(i/86400){}voidClock::set(unsignedlongi){totalsec=i;seconds=i%60;minutes=(i/60)%60;hours=(i/3600)%60;days=i/86400;}//ERROR**********found**********voidClock::print(){cout<標(biāo)準(zhǔn)答案:(1)voidClock::print()const(2)set(++total—sec);(3)return*this;知識(shí)點(diǎn)解析:本題考查Clock類,其中涉及構(gòu)造函數(shù)、成員函數(shù)、const函數(shù)和運(yùn)算符重載?!皶r(shí)鐘”類考查關(guān)于時(shí)間的基本常識(shí),進(jìn)位時(shí)要注意:60秒進(jìn)1分鐘,60分鐘進(jìn)l小時(shí),24小時(shí)進(jìn)1天。【解題思路】(1)主要考查考生對(duì)成員函數(shù)的掌握,由Clock類中對(duì)函數(shù)print的聲明voidprint()const;可知,在定義print函數(shù)時(shí)少了const。(2)主要考查考生對(duì)++操作的掌握,根據(jù)函數(shù)要求,時(shí)間要先前進(jìn)一秒,再調(diào)用函數(shù)set,因此totalsec++應(yīng)改為++total—sec。(3)主要考查考生對(duì)this指針的掌握,函數(shù)要求返回值Clock,即返回一個(gè)類,而不是指針,因此使用木this?!窘忸}寶典】掌握++操作符,當(dāng)自增、自減運(yùn)算的結(jié)果要被用來(lái)繼續(xù)參與其他操作時(shí),前置與后置的情況是不同的,例如i的值為l,cont<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含程序文件main.cpp,其中有類Mammal(“哺乳動(dòng)物”)、類Elephant(“大象”)、類Mouse(“老鼠”)的定義和主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述定義。此程序的正確輸出結(jié)果應(yīng)為:ELEPHANTMOUSE注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#includeusingnamespacestd;enumcategory{EMPTY,ELEPHANT,MOUSE);char*output[]={“EMPTY”,”ELEPHANT“,”MOUSE”);clasSMammal{public:Mammal(char*str){//**********found**********name=new________strcpy(name,str);}virtualchar*WhoAmI()=0;virtual~Mammal(){delete[]name;}voidPrint(){cout<Print();deletepm,pm=newNouse(“Micky”);pm一>Print();deletepm;return0;}標(biāo)準(zhǔn)答案:(1)char[strlen(str)+1];(2)Mammal(str)(3)retumoutput[MO[ISE];(4)Elephant知識(shí)點(diǎn)解析:本題考查的是Mammal類及其派生類Elephant和Mouse,其中涉及動(dòng)態(tài)數(shù)組、純虛函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)。動(dòng)態(tài)數(shù)組往往伴隨著分配和釋放空間,使用new語(yǔ)句分配空間,使用delete語(yǔ)句釋放空間。【解題思路】(1)主要考查分配空間,程序要給nalne分配空間,由下一條語(yǔ)句中strcpy(name,str)可知程序要把字符串str復(fù)制給name,因此要分配的空間大小為strlen(str)+1。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)镋lephant類是Mammal類的派生類,所以其構(gòu)造函數(shù)要使用成員列表先對(duì)Mammal類初始化。(3)主要考查考生對(duì)枚舉類型的掌握,先看程序:enumcategory{EMPTY,ELEPHANT,MO[JSE}。再參考Elephant類中的WhoAmI函數(shù):char木W(wǎng)hoAmI(){retumoutput[EL廣EPHANT];}??芍@里要填寫的返回語(yǔ)句為:returnoutput[MOUSE];。(4)主要考查考生對(duì)派生類的掌握,題目要求輸出:ELEPHANTMOUSE可知,要先調(diào)用Elephant類的WhoAmI函數(shù),因此給指針pm分配Elephant類空間。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程pmj3,其中聲明了一個(gè)單向鏈表類sList。sList的成員函數(shù)Prepend的功能是在鏈表頭部加入一個(gè)新的元素。請(qǐng)編寫成員函數(shù)Prepend。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序的輸出應(yīng)為:B一>A一>###A一>###A一>####exitinginnerblockexitingouterblock注意:只在函數(shù)Prepend的“//**********333**********”和“//**********666**********”之間填入若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//SList.hstrucLsListItem{chardata;sListItem*nexL;};classsList{public:sList():h(0){)//0表示空鏈表一sLLst();voidPrepend(charC);//在鏈表前端加入元素voidDel();//刪除鏈表首元素sListItern*First()const{returnh;}//返回鏈表首元素voidPrint()const;//打印鏈表內(nèi)容VOidRelease();//銷毀鏈表private:sListItem*h;//鏈表頭};voidwriteToFile(constchar*};//main.cpp#include#include”sList.h”usingnamespacestd;sList::一sList(){Release();}voidsList::Prepend(charc){//**********333**********//**********666**********}voidsList::Del(){sListltem*temp=h;h=h一>next;deletetemp;}voidsList::Print()const{sListItem*temp=h;while(Lemp!=0)//判斷是否到達(dá)鏈表尾部{tout<data<<“一>”;temp=temp一>next;}tout<<”\n###”<Print();cout<<“exitinginnerblock”<標(biāo)準(zhǔn)答案:sLlstItem*temp=rlewsListItem;//動(dòng)態(tài)分配空間給結(jié)構(gòu)體terap的指針temp一>data=c;//把c賦值于結(jié)構(gòu)體temp成員datatemp一>next=h;//把h賦值于結(jié)構(gòu)temp體成員nexth=temp;//把temp賦值給h,即h指向temp指向的空間知識(shí)點(diǎn)解析:本題考查的是sList類,其中涉及構(gòu)造函數(shù)、字符指針、析構(gòu)函數(shù)、成員函數(shù)和const函數(shù)?!窘忸}思路】主要考查考生對(duì)鏈表的掌握,成員函數(shù)Prepend的功能是在鏈表頭部加入一個(gè)新元素。形參c是一個(gè)char型變量,因此要定義一個(gè)新的結(jié)構(gòu)體指針temp,并給它分配sListItem類型空間,把形參c中的值賦給temp的數(shù)據(jù)域,并使temp通過(guò)指針鏈接到鏈表上。【解題寶典】主要考查考生對(duì)鏈表的掌握,單向鏈表是指針的一大應(yīng)用,運(yùn)用指針對(duì)單向鏈表進(jìn)行操作有很多優(yōu)點(diǎn),如插入和刪除元素很方便等。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,該工程中包含程序文件main.cpp,其中有類Foo和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:X=aY=42注意:只修改每個(gè)“//ERROR********found********”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。1#include2usingnamespacestd;34clasSFoo{5public:6Foo(charX){x_=x;;7chargetX()const{returnx_;}8public:9staticinty_;10private:11charx_;12};1314//ERROR********found********15intFoo.y_=42;1617intmain(intargc,char*argv[])18{19//ERROR********found********20Foof;2122//ERROR********found********23cout<<"X="<標(biāo)準(zhǔn)答案:(1)intFoo::y_=42;(2)Foof(’a’);(3)cout<<"X="<知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)靜態(tài)成員的掌握,因?yàn)殪o態(tài)整型變量y_是Foo類的公有成員,所以給y_賦值時(shí)要加上“Foo::”,即intFoo::y_=42;。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求程序輸出:X=aY=42可以知道,在給Foo類的f聲明時(shí)要同時(shí)初始化為字符a,即語(yǔ)句Foof(’a’);。(3)主要考查考生對(duì)成員函數(shù)的掌握,因?yàn)閤是類Foo的私有成員,所以不能在main函數(shù)中直接調(diào)用,要通過(guò)公有成員函數(shù)getX()調(diào)用。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該丁程中包含一個(gè)程序文件main.cpp,其中有類Quadritic、類Root及主函數(shù)main的定義。一個(gè)Quadritic對(duì)象表示一個(gè)ax2+bx+c的一元二次多項(xiàng)式。一個(gè)Root對(duì)象用于表示方程ax2+bx+c=0的一組根,它的數(shù)據(jù)成員num_of_roots有3種可能的值,即0、1和2,分別表示根的3種情況:無(wú)實(shí)根、有兩個(gè)相同的實(shí)根和有兩個(gè)不同的實(shí)根。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為(注:輸出中的X∧2表示x2):3X∧2+4X+5=0.0無(wú)實(shí)根4.5X∧2+6X+2=0.0有兩個(gè)相同的實(shí)根:-0.666667和-0.6666671.5X∧2+2X-3=0.0有兩個(gè)不同的實(shí)根:0.896805和-2.23014注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。1#include2#include3#include4usingnamespacestd;5classRoot{//一元二次方程的根6public:7constdoublex1;//第一個(gè)根8constdoublex2;//第二個(gè)根9constintnumofroots;//不同根的數(shù)量:0、1或210//創(chuàng)建一個(gè)“無(wú)實(shí)根”的Root對(duì)象11Root():x1(0.0),x2(0.0),num_of_roots(0){}12//創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象13Root(doubleroot)14//**********found**********15:_______{}16//創(chuàng)建一個(gè)“有兩個(gè)不同的實(shí)根”的Root對(duì)象17Root(doubleroot1,doubleroot2):x1(root1),x2(root2),mum_of_roots(2){}18voidshow()const{//顯示根的信息19cout<<"\t\t";20switch(numofroots){21case0:22//**********found**********2324case1:25cout<<"有兩個(gè)相同的實(shí)根:"<標(biāo)準(zhǔn)答案:(1)x1(root),x2(root),num_of_roots(1)(2)cout<<"無(wú)實(shí)根";break;(3)a(a),b(b),c(c)(4)returnQuadratic(a-x.a(chǎn),b-x.b,c-x.e);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象。說(shuō)明兩個(gè)根x1和x2相等,根的數(shù)量為1,因此可以得出語(yǔ)句:x1(root),x2(root),num_of_roots(1){}。(2)主要考查考生對(duì)switch語(yǔ)句的掌握,在語(yǔ)句switch(num_of_roots){中,num_of_roots代表根的數(shù)量,當(dāng)為0時(shí),表示沒(méi)有根,因此輸出無(wú)實(shí)根,注意要在句尾加break。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,本題使用成員初始化列表來(lái)構(gòu)造函數(shù)。(4)主要考查考生對(duì)成員函數(shù)的掌握,題目要求求兩個(gè)多項(xiàng)式的差。兩個(gè)多項(xiàng)式的差就是各個(gè)次方的系數(shù)相減,因此得出語(yǔ)句:returnQuadratic(a-x.a(chǎn),b-x.b,c-x.c);。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用“答題”菜單或使用VC6打開考生文件夾proj3下的工程proj3,其中定義了BaseX類(X進(jìn)制整數(shù)類),其中成員函數(shù)print輸出該整數(shù)指定數(shù)制的表示形式。使用展轉(zhuǎn)相除法,可從低位到高位逐位求出所需要的表示形式,例如,求十制數(shù)231的四進(jìn)制表示形式,方法如下:231/4=57……357/4=14……114/4=3……2結(jié)果是:3213在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),正確的輸出是:2001注意:只需在//********333********和//********666********之間填人所編寫的若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。1#include2#include3#include"BaseX.h"4usingnamespacestd;5BaseX::BaseX(intn){6this->num=n;7}8BaseX::~BaseX(){)9voidBaseX::print(intx){//輸出整數(shù)num的x進(jìn)制表示形式10intarr[100];//存放轉(zhuǎn)換結(jié)果,arr[0]存放最低位11intindex=0;//當(dāng)前數(shù)組arr中12元素的個(gè)數(shù)13//********333********141516//********666********17for(inti=index-1;i>=0;i--){//從高位到低位輸出所需表示形式18cout<標(biāo)準(zhǔn)答案:1while(Hum)2{3arr[index++]=num%x;4nun/=x:5}知識(shí)點(diǎn)解析:將一個(gè)數(shù)轉(zhuǎn)化為x進(jìn)制,使用輾轉(zhuǎn)相除法,將余數(shù)放在arr[]數(shù)組中,對(duì)商繼續(xù)使用輾轉(zhuǎn)相除法來(lái)處理,直到商為0。最后反向輸出數(shù)組中的值,即為x進(jìn)制的數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:20,1515,20注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>//******error******voidExchangel(intm,intn){intt=m;m=n;n=t;}//******error******voidExchange2(intm,intn){intt=*m;*m=*n;*n=t;}voidmain(){intb=20;inta=15;Exchangel(a,b);cout<<a<<’,’<<b<<endl;//******error******Exchange2(a,b);cout<<a<<’,’<<b<<endl;}標(biāo)準(zhǔn)答案:(1)voidExchangel(int&m,int&n)(2)voidExchange2(int*m,int*n)(3)Exchange2(&a,&b);知識(shí)點(diǎn)解析:(1)由程序的運(yùn)行結(jié)果可知,分別調(diào)用Exchange1()和Exchange20后,a和b的值兩次發(fā)生交換,因此Exchange1()函數(shù)和Exchange2()數(shù)均為實(shí)現(xiàn)交換的函數(shù)。參數(shù)傳遞方式有多種,將變量名作為實(shí)參和形參、傳遞變量的指針和傳送引用方式,將變量名作為實(shí)參和形參方式,這種傳遞是單向的,在函數(shù)執(zhí)行過(guò)程中形參的值發(fā)生變化不會(huì)傳回實(shí)參,而指針和引用方式在函數(shù)執(zhí)行過(guò)程中形參會(huì)影響實(shí)參。顯然這里不是采用變量名作為實(shí)參和形參的單向傳遞方式,而是采用的傳地址或傳引用的方式,在Exchange1()體內(nèi)沒(méi)有出現(xiàn)指針運(yùn)算符“*”,因此可知Exchange1()函數(shù)是采用的傳引用的方式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“voidExchange1(int&m,int&n)”。(2)由1分析可知,Exchange2()函數(shù)內(nèi)有指針運(yùn)算符“*”,可知其是采用的傳指針的方式作為參數(shù)傳遞,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“voidExchange2(int*m,int*n)”。(3)Exchange2()參數(shù)為int型數(shù)據(jù)指針,因此調(diào)用Exchange2()時(shí)應(yīng)傳入指針而不是變量名,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“Exchange2(&a,&b);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(char*des,char*str)的功能是去掉字符串str中相同的字母,并將處理后的結(jié)果存到des所指的字符串中。例如:輸入:Thisisgreat!輸出:Thisgrea!注:卷:不能修改程序的其他部分,只能補(bǔ)充fun()函數(shù)。#include<iostream.h>#defineMAXLEN1024voidconvert(char*des,char*str){}voidmain(){charsour[MAXLEN];chardest[MAXLEN];cout<<"Pleaseinputastring:"<<endl:cin.getline(sour,MAXLEN);convert(dest,sour);cout<<dest<<endl;return;}標(biāo)準(zhǔn)答案:inti,j;boolToAdd;des[0]=0;for(i=0;str[i]!=NULL;i++){ToAdd=true;for(j=0;des[j]!=NULL;j++){if(str[i]==des[j]){ToAdd=false;//des數(shù)組中已存在該元素,將標(biāo)志位設(shè)置為假,說(shuō)明不用再添加break;//des數(shù)組中已存在該元素,跳出循環(huán)}}if(ToAdd)//des數(shù)組中不存在添加進(jìn)來(lái){des[j]=str[i];des[j+1]=0;}}知識(shí)點(diǎn)解析:(1)由審題分析可知,需要兩重循環(huán),外層循環(huán)不斷讀取str中的元素,內(nèi)循環(huán)在des數(shù)組中查找讀到的str中的字符,如果找到了des數(shù)組中已存在該元素不需要添加,如果沒(méi)找到則添加到des數(shù)組中。(2)在外循環(huán)體內(nèi),先設(shè)置bool型的標(biāo)志變量ToAdd為真,假設(shè)str[i]不存在在des數(shù)組中,然后再內(nèi)循環(huán)中,用str[i]和des[j]比較,如果相同說(shuō)明已經(jīng)存在了,將ToAdd設(shè)置為假,des[j]后面的元素不需要再比較了,跳出內(nèi)循環(huán)。(3)通過(guò)判斷ToAdd可知,str[i]是否存在des數(shù)組中,如果三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,分別用來(lái)表示復(fù)數(shù)的實(shí)部和虛部,都是double類型的變量。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)添加復(fù)數(shù)類CComplex的帶一個(gè)參數(shù)的構(gòu)造函數(shù),分別將real和imaginary賦值為參數(shù)r和0。請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成對(duì)運(yùn)算符“+”的重載,分別對(duì)復(fù)數(shù)的實(shí)部和虛部相加。請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成復(fù)數(shù)的友元函數(shù)Equal(CComplex&c1,CComplex&c2)的定義,如果兩個(gè)數(shù)的實(shí)部和虛部都相等,則返回1,否則返回0,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classCComplex{private://********1********publiC:CComplex(){real=imaginary=0;}CComplex(doubler){//********2********}CComplexoperator+(CComplex&c1){//********3********temp.real=real+c1.real;temp.imaginary=imaginary+c1.imaginary;returntemp;}voidSet(intre,intimag){real=re;imaginary=imag;}friendboolEqual(CComplex&c1,CComplex&c2);};boolEqual(CComplex&c1,CComplex&c2){//********4********}intmain(){CComplexcomplex1(5);CCompiexcomplex2;cout<<Equal(complex1,complex2)<<endl;complex2.Set(5,0);cout<<Equal(complex1,complex2)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:doublereal,imaginary;(2)添加語(yǔ)句:real=r;imaginary=0;(3)添加語(yǔ)句:CCompiextemp:(4)添加語(yǔ)句:return(c1.real==c2.real)&&(c1.imaginary==c2.imaginary);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下完成定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,均為double類型的變量,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“doublereal,imaginary;”。(2)構(gòu)造函數(shù)CComplex(doubler)完成類的初始化,該構(gòu)造函數(shù)有一個(gè)參數(shù),分別將real和imaginary賦值為參數(shù)r和0,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“real=r;imaginary=0;”。(3)編譯程序可知,變量temp沒(méi)有定義,由operator+(CComplex&c1)函數(shù)體的語(yǔ)句可知,temp為函數(shù)的返回值,而operator+(CComplex&c1)函數(shù)體函數(shù)返回CComplex類對(duì)象,故在第3個(gè)標(biāo)識(shí)下補(bǔ)充temp定義,即“CComplextemp;”。(4)即判斷兩個(gè)對(duì)象c1和c2的實(shí)部和虛部是否均相等,兩個(gè)邏輯結(jié)果相與即可,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“return(c1.real==c2.real)&&(c1.imaginary==c2.imaginary);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,該工程中包含程序文件main.cpp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:打開503號(hào)門…門是鎖著的,打不開。打開503號(hào)門的鎖…鎖開了。打開503號(hào)門…門打開了。打開503號(hào)門…門是開著的,無(wú)須再開門。鎖上503號(hào)門…先關(guān)門…門鎖上了。注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#inCludeusingnamespacestd;classDoor{intnum;//門號(hào)boolclosed;//true表示門關(guān)著boollocked;//true表示門鎖著public:Door(intnum){//ERROR********found********num=this->num;closed=locked=true;}boolisClosed()const{returnclosed;}//門關(guān)著時(shí)返回true,否則返回falseboolisOpened()const{return!closed;}//門開著時(shí)返回true,否則返回falseboolisLocked()Const{returnlocked;}//門鎖著時(shí)返回true,否則返回falseboolisUnlocked()COnSt{return!locked;}//門未鎖時(shí)返回true,否則返回falsevoidopen(){//開門cout<標(biāo)準(zhǔn)答案:(1)this_>num=num;(2)if(!closed)(3)voidlock(){知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)this指針的掌握,在構(gòu)造函數(shù)中this指針指向的是當(dāng)前類,因此要給num賦值使用語(yǔ)句this->num=num;完成。(2)主要考查考生對(duì)if語(yǔ)句的掌握,先看類的私有成員中關(guān)于closed的定義:boolclosed;//true表示門關(guān)著。再看下一條語(yǔ)句:cout<<"門是開著的,無(wú)須再開門。";。即滿足條件時(shí)就會(huì)輸出:門是開著的,無(wú)須再開門。因此if括號(hào)內(nèi)應(yīng)該是!closed。(3)主要考查考生對(duì)const函數(shù)的掌握,lock函數(shù)體中存在語(yǔ)句locked=true,即有參數(shù)發(fā)生改變,因此不能用const。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用Ve6打開考生文件夾proj2下的工程proj2。其中在編輯窗口內(nèi)顯示的主程序文件中定義有類XBase和XDerived,以及主函數(shù)main。程序文本中位于每行”//************found************下面的一行內(nèi)有一處或多處下劃線標(biāo)記,請(qǐng)?jiān)诿總€(gè)下劃線標(biāo)記處填寫合適的內(nèi)容,并刪除掉下劃線標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出結(jié)果為:s=25#includeusingnamespacestd;ClassXBase{private:intmem1,mem2;public://*****found*****XBase(intm1=0,intm2=0):mem1(m1),_________()//*****found*****virtualint__________};//*****found*****classXDerived:_________{private:intmem3;public:XDerived():XBase(),mem3(0){}//*****found*****XDerived(intm1,intm2,intm3):__________{}intsum(){returnXBase::slim()+mem3;}};voidmain()(XDerivedb(3,4,5);XBasea(6,7),*pb=&b;ints=pb->SLIm()+a.sum();cout<<"s="<標(biāo)準(zhǔn)答案:(1)mem2(m2)(2)sum(){returnmem1+mem2;}(3)publicXBase(4)XBase(m1,m2),mew3(m3)知識(shí)點(diǎn)解析:(1)題意要求使用m1和m2初始化數(shù)據(jù)成員mem1和mem2,同mem1的初始化一樣,需要在成員初始化列表中完成mem2的初始化。(2)sum函數(shù)的定義需要返回mem1和mem2之和。(3)XDerived公有繼承XBase類,在繼承列表中使用public。(4)在成員初始化列表中初始化基類成員時(shí),需要調(diào)用基類的構(gòu)造函數(shù),初始化mem3時(shí),可以直接初始化。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程文件proj3,此工程中包含一個(gè)源程序文件proj3.cpp,其中定義了用于表示平面坐標(biāo)系中的點(diǎn)的類MyPoint和表示矩形的類MyRectangle;程序應(yīng)當(dāng)顯示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,請(qǐng)按照以下提示,把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的左上角和右下角的坐標(biāo)對(duì)up_left和down_right進(jìn)行初始化。(2)在“//**2******found****”的下方是成員函數(shù)getDownLeft的定義中的一條語(yǔ)句。函數(shù)getDownLeft返回用MyPoint對(duì)象表示的矩形的左下角。(3)在“//**3******found****”的下方是成員函數(shù)area的定義,它返回矩形的面積。注意:只在指定位置編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。//proj3.cpp#includeusingnamespacestd;classMyPoint{//表示平面坐標(biāo)系中的點(diǎn)的類doublex;doubley;public:MyPoint(doublex,doubley){this->x=x;this->y=y;)doublegetX()const{returnx;}doublegetY()const{returny;}voidshow()const{cout<<’(’<標(biāo)準(zhǔn)答案:(1)MyPointp1,MyPointp2(2)up_left.getX(),down_right.getY()(3)doubleMyRectangle::知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)中的參數(shù)要給私有成員賦值,在下句中up_left(p1),down_fight(p2){}指出私有成員賦值要使用形參p1和p2,因此這里參數(shù)要定義為MyPointp1,MyPointp2。(2)主要考查成員函數(shù)的返回語(yǔ)句,MyPointMyRectangle::getDownLeft()const函數(shù)要求返回一個(gè)左下角的點(diǎn)坐標(biāo),因此使用語(yǔ)句MyPoint(up_left.getX(),down_right.getY());。(3)主要考查成員函數(shù)的定義,在MyRectangle類中已經(jīng)聲明doublearea()const,因此此處只要添加doubleMyRectangle::即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:i=5i=10i=15i=20注意:錯(cuò)誤的語(yǔ)句在//*****error******的下面,修改該語(yǔ)句即可。#includeclassCMyClass{public:templatevoidfunc(Tx,Ty){//*****error******Ti=0;if(x>=i){i=i+x;}elsefi=i+y;}cout<<"i="<標(biāo)準(zhǔn)答案:(1)staticTi=0;(2)t.func((char)68,(char)1);(3)t.func((int)i,1);知識(shí)點(diǎn)解析:(1)在主函數(shù)內(nèi)定義了類CMyClass對(duì)象t,第一次調(diào)用func()函數(shù)傳入整型參數(shù)5和0,此時(shí)T表示整型(int),5>0,此時(shí)i和x的和為5,故屏幕輸出i的值為i=5;第二次調(diào)用func()函數(shù),傳入?yún)?shù)為char型數(shù)據(jù),此時(shí)T表示字符型(char),chari=0,68>0,故i為68,屏幕輸出ASCII碼為68的字符,即i=D;第三次調(diào)用func()函數(shù),傳入整型數(shù)據(jù)10和1,此時(shí)T表示整型(int),輸出為i=15,顯然如果i為一般的局部變量,輸出應(yīng)該是i=10(10>0,i=10+0=10),這里i記憶了第一次調(diào)用func()函數(shù)后的值(i=5,10>5,10+5=15),故i為靜態(tài)變量,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“smileTi=0:”。(2)func()函數(shù)兩個(gè)參數(shù)類型一致,從輸出結(jié)果看,第二次調(diào)用func()傳入的參數(shù)均是char型的,故第2個(gè)標(biāo)識(shí)下應(yīng)改為“t.func((char)68,(char)1);”,(char)68和(char)1含義是做強(qiáng)制類型轉(zhuǎn)換,將整型轉(zhuǎn)換成char型。(3)第3個(gè)標(biāo)識(shí)下傳入?yún)?shù)1為整型,局部變量i為float型,由輸出結(jié)果可知,第四次調(diào)用func()函數(shù)也改變了靜態(tài)變量i(staticinti)的值,故傳入的參數(shù)均為整型,因第3個(gè)標(biāo)識(shí)下的局部變量i(float型)也要強(qiáng)制類型轉(zhuǎn)換,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“t.func((int)i,1);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。完成函數(shù)ToUpper(char*des,char*str),該函數(shù)實(shí)現(xiàn)把str字符串中小寫字符轉(zhuǎn)換成大寫字符,并存發(fā)在des中。例如:str:“aBcdrFGHijK”;則:des=“ABCDEFGHIJK”:注意:不能修改程序的其他部分,只能補(bǔ)充ToUpper()函數(shù)。#include#defineMAXLEN1024voidToUpper(char*des,char*str){}voidmein(){chardest[MAXLEN];char*str="aBcdrFGHijK";ToUpper(dest,str);cout<標(biāo)準(zhǔn)答案:for(inti=0;str[i]!=0;i++){if(str[i]>=’a’&&str[i]<=’z’)//比較是否是小寫字母{des[i]=str[i]-’a’+’A’;//替換成大寫字母}else{des[i]=str[i];//其他情況不變}des[i+1]=0;}知識(shí)點(diǎn)解析:(1)由審題分析可知,可利用循環(huán)來(lái)逐個(gè)檢索str中的字符,循環(huán)變量i從0開始,直到str數(shù)組的結(jié)束,即str[i]=0為循環(huán)結(jié)束條件。(2)小寫字母的判別方式為:str[i]>=’a’&&str[i]<=’z’,即該字符比’z’小,而且比’a’大,如果滿足該條件則在該字符基礎(chǔ)上加上(’A’-’a’)值轉(zhuǎn)換為大寫字母;如果是其他字符的話,無(wú)需轉(zhuǎn)換,直接剛該字符放到des數(shù)組中。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類CPlanet的保護(hù)數(shù)據(jù)成員distance和revolvePeriod,它們分別表示行星距太陽(yáng)的距離和行星的公轉(zhuǎn)周期。其中,distance為double型,revolvePeriod為int型。請(qǐng)?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義類CEarth的構(gòu)造函數(shù)CEarth(doubled,intr),并在其中計(jì)算地球繞太陽(yáng)公轉(zhuǎn)的軌道周長(zhǎng)。假定:circumference=2*d*3.1416。請(qǐng)?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類Earth的成員display(),用于顯示所有信息。包括地球距太陽(yáng)的距離,地球的公轉(zhuǎn)周期,以及地球繞太陽(yáng)公轉(zhuǎn)的軌道周長(zhǎng)。請(qǐng)?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeusingnamespacestd;classCPlanet{protected://********1********public:CPlanet(doubled,intr){distance=d;revolvePeriod=r;}};classCEarth:publicCPlanet{doublecircumference;public://********2********CEarth(doubled,intr){circumference=2*d*3.1416;)//********3********{cout<<"distance="<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:doubledistance;intrevolvePeriod;(2)將“CEarth(doubled,intr)”補(bǔ)充完整為:CEarth(doubled,intr):CPlanet(d,r)(3)添加語(yǔ)句:voiddisplay()知識(shí)點(diǎn)解析:(1)題目1要求“義類CPlanet的保護(hù)數(shù)據(jù)成員distance和revolvePeriod,它們分別表示行星距太陽(yáng)的距離和行星的公轉(zhuǎn)周期。其中,distance為double型,revolvePeriod為int型”,因此第1個(gè)標(biāo)識(shí)下是添加數(shù)據(jù)成員distance和revolvePeriod的聲明,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“doubledistance;intrevolvePeriod;”。(2)假定:circumference=2*d*3.1416”,第2個(gè)標(biāo)識(shí)下構(gòu)造函數(shù)CEarth(double(dintr)完成類成員變量的初始化,在函數(shù)體內(nèi)部完成了circumference的初始化,而變量distance和revolvePeriod并沒(méi)有初始化,需調(diào)用基類的構(gòu)造函數(shù)來(lái)初始化這兩個(gè)變量,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“CEarth(doubled,intr):CPlanet(d,r)”。(3)第3個(gè)標(biāo)識(shí)下完成成員函數(shù)display()的定義,函數(shù)display()的返回值為void,因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“voiddisplay()”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:100注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>staticintx=50;intt=0;int*func(intx,inty,intz){t=t+x+y+z;//******error******returnt;};voidmain(){inty=30;intx=10;intz=20;//******error******x=x;//******error******cout<<func(x,y,z)<<endl;}標(biāo)準(zhǔn)答案:(1)return&t:(2)x=::x;(3)cout<<*func(x,y,z)<<endl;知識(shí)點(diǎn)解析:(1)由審題分析可知,函數(shù)func(intx,inty,intz)返回的是整型數(shù)據(jù)指針,而第1個(gè)標(biāo)識(shí)下的returnt表示返回一個(gè)整型數(shù)據(jù),和要求的返回?cái)?shù)據(jù)類型不匹配,應(yīng)改為“return&t:”。(2)第2個(gè)標(biāo)識(shí)下x=x表示局部變量x自己給自己賦值,調(diào)用func(x,y,z)函數(shù)后,返回的運(yùn)算結(jié)果是30+10+20=60,與輸出100不同,而全局靜態(tài)變量x值為50,30+50+20=100,剛好滿足條件,因此第2個(gè)標(biāo)識(shí)下是將全局靜態(tài)變量x的值賦給局部變量x,即第2個(gè)標(biāo)識(shí)下應(yīng)該為“x=::x:”,“::”表示的是引用全局變量。(3)func(x,y’z)返回一個(gè)整型數(shù)據(jù)指針,通過(guò)該指針可以得到運(yùn)算結(jié)果,而cout<<func(x,y,z)輸出的fun(x,y,z)返回的地址值(變量t的地址值),而不是該地址內(nèi)存儲(chǔ)的變量的值(t的值),運(yùn)行程序后會(huì)發(fā)現(xiàn)輸出的是奇怪的一串?dāng)?shù)字,而不是我們所想要的100,應(yīng)加上取指針運(yùn)算符“*”,*func(x,y,z)為變量t,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<*func(x.y,z)<<endl;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序,使該程序輸出倒9×9口訣。程序分析:分行與列考慮,共9行9列,設(shè)置兩個(gè)變量i和i,i控制行,j控帶0列。程序運(yùn)行結(jié)果如下:1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=811*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*7=72*7=143*7=214*7=285*7=356*7=427*7=491*6=62*6=123*6=184*6=245*6=306*6=361*5=52*5=103*5=154*5=205*5=251*4=42*4=83*4=124*4=161*3=32*3=63*3=91*2=22*2=41*1=1注意:只能補(bǔ)充函數(shù)show(),請(qǐng)勿改動(dòng)其他部分的內(nèi)容。#2nclude<iostream.h>voidshow(){}voidmain(){cout<<"9*9倒乘法口訣"<<endl;cout<<"-----------------------------------------------"<<endl;show();tout<<"-----------------------------------------------"<<endl;return;}標(biāo)準(zhǔn)答案:for(inti=9;i>0;i--){for(intj=1;j<=i;j++){cout<<j<<’*’<<i<<’=’<<i*j<<’’;}cout<<endl:}知識(shí)點(diǎn)解析:(1)由審題分析可知,可利用兩重循環(huán)來(lái)實(shí)現(xiàn)輸出倒9×9口訣,設(shè)置兩個(gè)循環(huán)變量,外層循環(huán)變量i從9開始變化至1,循環(huán)9次,代表乘號(hào)后面的數(shù)字。(2)內(nèi)部循環(huán)變量i從1變化到i,代表乘號(hào)前面的數(shù)字,輸出一行,j<=i,這樣保證輸出的是倒9×9口訣。在內(nèi)層循環(huán)體內(nèi),利用cout輸出i的值、“*”、i的值、“=”和i*i值,即輸出乘法公式。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)類CBase有一個(gè)常數(shù)變量Number1,在構(gòu)造函數(shù)時(shí)對(duì)其初始化,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類CPri是CBase的公共繼承類,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類CPri構(gòu)造函數(shù)有兩個(gè)形式參數(shù),第一個(gè)是對(duì)CBase的初始化,第二個(gè)缺省為O,用來(lái)對(duì)變量Number2進(jìn)行初始化。請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)類CPri的函數(shù)display()重載于CBase的打印函數(shù)。完成對(duì)變量Number2的輸出,然后調(diào)用基類的打印函數(shù),請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。輸出的內(nèi)容如下:Number2=12Number=8注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classCBase{private:intNumber;public://********1********CBase(intx){}voiddisplay(){cout<<"Number="<<Number<<endl;}};//********2********classCPri{private:intNumber2;public://********3********CPri(intx,inty=0){Number2=y;}voiddisplay(){//********4********}};intmain(){CPriobj(8,12);obj.display();return0;}標(biāo)準(zhǔn)答案:(1)將“CBase(intx)”補(bǔ)充完整為:CBase(intx):Number(x)(2)將“classCPri”補(bǔ)充完整為:ClassCPri:publicCBase(3)將“CPri(intx,inty=0)”補(bǔ)充完整為:Cpri(intx,inty=0):CBase(x)(4)添加語(yǔ)句:cout<<"Number2="<<Number2<<endl;CBase::display();知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)完成類成員變量的初始化,第1個(gè)標(biāo)識(shí)下是對(duì)Number1初始化,帶參數(shù)的構(gòu)造函數(shù)初始化有多種方式,可以在函數(shù)體內(nèi)完成初始化,或利用參數(shù)初始化表來(lái)完成初始化,顯然這里不能在函數(shù)體完成初始化,只能是在函數(shù)首部實(shí)現(xiàn)對(duì)數(shù)據(jù)成員的初始化,因此只能通過(guò)參數(shù)初始化表來(lái)完成,這種方法不在函數(shù)體內(nèi)對(duì)數(shù)據(jù)成員初始化,而是在函數(shù)首部實(shí)現(xiàn),即第1個(gè)標(biāo)識(shí)下應(yīng)改為“CBase(intx):Number(x)”。(2)第2標(biāo)識(shí)下是聲明類CPri,且類CPri是CBase的公共繼承類,定義派生類的一般格式為:class<派生類名>:<繼承方式1><基類:名1>,<繼承方式2><基類名2>,……<繼承方式n><基類名n>{<派生類新定義成員>};類CPri是CBase的公共繼承類,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“classCPri:publicCBase”。(3)CPri構(gòu)造函數(shù)有兩個(gè)形式參數(shù),第一個(gè)是對(duì)CBase的初始化,第二個(gè)缺省為0,用來(lái)對(duì)變量Number2進(jìn)行初始化,這里對(duì)CBase的初始化也不能在函數(shù)體內(nèi)完成,因此也必須采用參數(shù)初始化表來(lái)完成,即第3個(gè)標(biāo)識(shí)下應(yīng)改為“CPri(intx,inty=0):CBase(x)”,調(diào)用CBase的構(gòu)造函數(shù)完成對(duì)CBase的初始化。(4)函數(shù)display()重載于CBase的打印函數(shù)。完成對(duì)變量Number2的輸出,然后調(diào)用基類的打印函數(shù)display(),基類的display()和派生類的display()重名,調(diào)用基類的display()應(yīng)過(guò)類名來(lái)直接調(diào)用,即第4個(gè)標(biāo)識(shí)下應(yīng)添加“cout<<"Number2="<<Number2<<endl;CBase::display();”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使得程序通過(guò)運(yùn)行。程序輸出:5a1注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includetemplate//********error********tmin(tx,ty){return(x>y)?Y:X;}Voidmain(){intn=5;//********error********charc="a";intd=1;//********error********cout<標(biāo)準(zhǔn)答案:(1)Tmin(Tx,Ty)(2)charc=’a’;(3)usingnamespaceStd;知識(shí)點(diǎn)解析:(1)C++是區(qū)分大小寫的,“template”語(yǔ)句中定義的模板類為T不是t,所以第1個(gè)標(biāo)識(shí)下的“tmin(tx,ty)”修改為“Tmin(Tx,Ty)”。(2)第2個(gè)標(biāo)識(shí)下的“charc="a";”語(yǔ)句中的變量a為char型,賦值為字符a,在C++中應(yīng)該使用單引號(hào)標(biāo)注字符變量,而不是雙引號(hào),所以修改為“charC=’a’:”。(3)在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即添加usingnamespacestd;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)show()的功能是將1、2、3、4四個(gè)數(shù)字,組成互不相同且無(wú)重復(fù)數(shù)字的四位數(shù),并將這些數(shù)輸出到屏幕,輸出的內(nèi)容如下:123412431324134214231432213421432314234124132431312431423214324134123421412341324213423143124321將函數(shù)show()補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。#includevoidshow(){}intmain(){show();return0;}標(biāo)準(zhǔn)答案:for(inti=1;i<5;i++)for(intJ=1;j<5;j++)for(intl=1;l<5;1++)for(intk=1;k<5;k++){if(i!=j&&j!

溫馨提示

  • 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)論