![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共27題)_第1頁(yè)](http://file4.renrendoc.com/view7/M00/1D/1E/wKhkGWbCjkKACRA4AAK-Oaez_KQ814.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共27題)_第2頁(yè)](http://file4.renrendoc.com/view7/M00/1D/1E/wKhkGWbCjkKACRA4AAK-Oaez_KQ8142.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共27題)_第3頁(yè)](http://file4.renrendoc.com/view7/M00/1D/1E/wKhkGWbCjkKACRA4AAK-Oaez_KQ8143.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共27題)_第4頁(yè)](http://file4.renrendoc.com/view7/M00/1D/1E/wKhkGWbCjkKACRA4AAK-Oaez_KQ8144.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共27題)_第5頁(yè)](http://file4.renrendoc.com/view7/M00/1D/1E/wKhkGWbCjkKACRA4AAK-Oaez_KQ8145.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷35(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR**********found**********”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:NUM=0Value=1注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#inccludeusingnamespacestd;classMyClass{inti;friendVOidIncrement(MyClass&f);public:constintNUN;//ERROR********found********MyClass(inti=0){NUN=0;i=i;}intGetValue()const{returni;}};//ERROR********found********voidIncrement(){f.i++;}intmain(){NyClassobj;//ERROR****found****NyClass::Increment(obj);cout<<"NUN="<標(biāo)準(zhǔn)答案:(1)MyClass(inti=0):NUM(0){(2)voidIncrement(MyClass&f){f._i++;}(3)Increment(obj);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)常量數(shù)據(jù)成員初始化方法的掌握,常量數(shù)據(jù)成員的初始化只能通過(guò)構(gòu)造函數(shù)的成員初始化列表進(jìn)行,并且要使用關(guān)鍵字const修飾。該題的前一條語(yǔ)句constintNUM;,說(shuō)明NUM是常量數(shù)據(jù)成員。(2)主要考查考生對(duì)友元函數(shù)的掌握,友元函數(shù)的定義與聲明要一致,先看該友元函數(shù)的聲明部分:friendvoidIncrement(MyClass&f);,返回類(lèi)型為void,函數(shù)參數(shù)為MyClass&f;再比較出錯(cuò)的語(yǔ)句:voidIncrement(){f._i++;},錯(cuò)誤在于該函數(shù)沒(méi)有參數(shù),應(yīng)把MyClass&f填在括號(hào)內(nèi)。(3)主要考查友元函數(shù)的調(diào)用,友元函數(shù)并不屬于類(lèi),因此調(diào)用友元函數(shù)時(shí)不需要添加類(lèi)名及作用域,只需要像調(diào)用普通函數(shù)一樣即可。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp。其中定義了類(lèi)Set和用于測(cè)試該類(lèi)的主函數(shù)main。類(lèi)Set是一個(gè)用于描述字符集合的類(lèi),在該字符集合中,元素不能重復(fù)(將“a”和“A”視為不同元素),元素最大個(gè)數(shù)為100。為該類(lèi)實(shí)現(xiàn)一個(gè)構(gòu)造函數(shù)Set(char*s),它用一個(gè)字符串來(lái)構(gòu)造一個(gè)集合對(duì)象,當(dāng)字符串中出現(xiàn)重復(fù)字符時(shí),只放人一個(gè)字符。此外,還要為該類(lèi)實(shí)現(xiàn)另一個(gè)成員函數(shù)InSet(charC),用于測(cè)試一個(gè)字符c是否在一個(gè)集合中,若在,則返回true;否則返回false。構(gòu)造函數(shù)Set和成員函數(shù)InSet的部分實(shí)現(xiàn)代碼已在文件proj2.cpp中給出,請(qǐng)?jiān)跇?biāo)有注釋“//TODO:”的行中添加適當(dāng)?shù)拇a,將這兩個(gè)函數(shù)補(bǔ)充完整,以實(shí)現(xiàn)其功能。提示:在實(shí)現(xiàn)構(gòu)造函數(shù)時(shí),可以調(diào)用InSet函數(shù)來(lái)判斷一個(gè)字符是否已經(jīng)在集合中。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#includeusingnamespacestd;constintMAXNUM=100;classSet{private:intnum;//元素個(gè)數(shù)charsetdata[MAXNUM];//字符數(shù)組,用于存儲(chǔ)集合元素public:Set(char*s);//構(gòu)造函數(shù),用字符串S構(gòu)造一個(gè)集合對(duì)象BoolInSet(charC);//判斷一個(gè)字符c是否在集合中,若在,返回true,否則返回falsevoidPrint()const;//輸出集合中所有元素};Set::Set(char*s){num=0;while(*s){//************found************if(________)//TODO:添加代碼,測(cè)試元素在集合中不存在//************found************________;//TODO:添加一條語(yǔ)句,加入元素至集合中s++;}}boolSet::InSet(charc){for(inti=0;i標(biāo)準(zhǔn)答案:(1)!InSet(*s)(2)setdata[num++]=*s(3)c==setdata[i](4)returntrue知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)成員函數(shù)的掌握,題目要求:添加代碼,測(cè)試元素在集合中不存在,由類(lèi)的定義可知函數(shù)boolInSet(charc)可以測(cè)試字符c是否在集合中,因此這里直接調(diào)用函數(shù)boolInSet(charc)即可。(2)題目要求:添加一條語(yǔ)句,加入元素至集合中,集合用數(shù)組setdata表示,直接把元素添加到數(shù)組中即可。(3)主要考查考生對(duì)if語(yǔ)句的掌握,題目要求:測(cè)試元素c是否與集合中某元素相同。前一條語(yǔ)句是個(gè)for循環(huán),利用下標(biāo)i遍歷整個(gè)集合,通過(guò)if語(yǔ)句中的判斷條件判斷c是否在集合中,用“==”判斷。(4)主要考查考生對(duì)成員函數(shù)的掌握,先看函數(shù)的注釋?zhuān)号袛嘁粋€(gè)字符c是否在集合中,若在,返回true,否則返回false。if語(yǔ)句成立時(shí),說(shuō)明字符c存在于集合中,因此應(yīng)該返回truec。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中包含了類(lèi)IntegerSet和主函數(shù)main的定義。一個(gè)IntegerSet對(duì)象就是一個(gè)整數(shù)的集合,其中包含0個(gè)或多個(gè)無(wú)重復(fù)的整數(shù);為了便于進(jìn)行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單元中。成員函數(shù)add的作用是將一個(gè)元素添加到集合中(如果集合中不存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。請(qǐng)編寫(xiě)成員函數(shù)remove。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序的正確輸出結(jié)果應(yīng)為:234527283166752345627283166752345619272831667534561927283166753456192728316675要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//**********333**********”與“//**********666**********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)WriteToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//IntegorSet.h#ifndefINTEGERSET#defineINTEGERSET#includeusingnamespacestd;constintMAXELEMENTS=100;//集合最多可擁有的元素個(gè)數(shù)classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的數(shù)組intcounter;//用于記錄集合中元素個(gè)數(shù)的計(jì)數(shù)器public:IntegerSet():counter(0){)//創(chuàng)建一個(gè)空集合IntegerSet(intdata[],intsize);//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個(gè)整數(shù)集合voidadd(intelement);//添加一個(gè)元素到集合中voidremove(intelement);//刪除集合中指定的元素intgetCount()const{returncounter;}//返回集合中元素的個(gè)數(shù)intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidshow()const;};voidWriteToFile(char*);#endif//main.cpp#include"IntegerSet.h"#includeIntegerSet::IntegerSet(intdata[],intsize):counter(0){for(inti=0;i0;j--)if(element>=elem[j-1])break;//如果找到的是等于element的元素,說(shuō)明要添加的元素已經(jīng)存在,直接返回if(j>0)if(element==elem[j一1])return;//如果找到的是小于element的元素,j就是要添加的位置//該元素及其后面的元素依次后移,騰出插入位置for(intk=counter;k>j;k--)elem[k]=elem[k-1];elem[j]=element;//將element插入到該位置counter++;//計(jì)數(shù)器加1}voidIntegerSet::remove(intelement){//***********333***********//***********666***********}voidIntegerSet::show()const{for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;1知識(shí)點(diǎn)解析:主要考查考生對(duì)有序數(shù)組的掌握,題目要求成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。遍歷數(shù)組elem中的元素,找出與形參element相等的元素,并將其刪除,每刪除一個(gè)元素,即將該元素之后的每個(gè)元素前移一位,如果不存在與形參element相等的元素則沒(méi)有操作。使用下標(biāo)i遍歷數(shù)組,if語(yǔ)句判斷是否與element相等。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為:Constructor,i=O,Destructor注意:錯(cuò)誤的語(yǔ)句在∥********4********的下面,修改訪(fǎng)語(yǔ)句即可。#includeclassCObj{inti;public:CObj();voiddisplay();-CObj();};∥********error********CObj:cobj(){cout<<“Constructor"‘<“.”,i=0;}{CObj:display(){cout<<“i=”<標(biāo)準(zhǔn)答案:(1)CObj::CObj()(2)VOidcobj::display()(3)CObj::~CObj()知識(shí)點(diǎn)解析:(1)在類(lèi)的外部定義成員函數(shù)時(shí),必須在成員函數(shù)前面加上類(lèi)名和作用域運(yùn)算符(::),作用域運(yùn)算符用來(lái)表示某個(gè)成員屬于哪個(gè)類(lèi),使用格式為:<類(lèi)名>::<成員函數(shù)>(<參數(shù)函數(shù)>),因此第1個(gè)標(biāo)識(shí)下應(yīng)改為CObj::CObi(),默認(rèn)構(gòu)造函數(shù)沒(méi)有參數(shù)。(2)第2個(gè)標(biāo)識(shí)下“COb.j:display()”,從其后的語(yǔ)句看,這是在類(lèi)外實(shí)現(xiàn)COb.j函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問(wèn)題,display()函數(shù)返回值為void,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為voidCObj::display()。(3)第3個(gè)標(biāo)識(shí)下“CObj:CObj()”,顯然這里是在類(lèi)外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名字和類(lèi)名相同,并在前面加“~”字符,用來(lái)與構(gòu)造函數(shù)加以區(qū)別,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為CObj::一CObj()。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序,使函數(shù)fun()實(shí)現(xiàn)以下功能:找出一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上268又是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少?程序分析:在10萬(wàn)以?xún)?nèi)判斷,先將該數(shù)加上100后再開(kāi)方,再將該數(shù)加上268后開(kāi)方,如果開(kāi)方后的結(jié)果滿(mǎn)足條件,即是結(jié)果。#include#includevoidfun(){}intmain(){fun();return0;}標(biāo)準(zhǔn)答案:longinti,x,y,z;f017。(i=1;i<100000;i++){x=sqrt(i+100);//x為加上100后開(kāi)方后的結(jié)果y=sqrt(i+268);//y為再加上268后開(kāi)方的結(jié)果if(x*x==i+100&&y*y==i+268)//如果一個(gè)數(shù)的平方根的平方等于該數(shù),說(shuō)明此數(shù)是完全平方數(shù)cout<知識(shí)點(diǎn)解析:(1)該程序功能是找出一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上268又是一個(gè)完全平方數(shù)。它的解題思路,根據(jù)題干中給出的分析可知解題思路為,先將該數(shù)加上100后再開(kāi)方,再將該數(shù)加上268后開(kāi)方,如果開(kāi)方后的結(jié)果滿(mǎn)足條件,即是結(jié)果。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun()實(shí)現(xiàn)題目中的功能?!窘忸}思路】(1)利用循環(huán)找到滿(mǎn)足條件的整數(shù)。(2)首先計(jì)算x加上100和y加上268的開(kāi)方。(3)一個(gè)數(shù)的平方根的平方等于該數(shù),說(shuō)明此數(shù)是完全平方數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。程序通過(guò)繼承關(guān)系,實(shí)現(xiàn)對(duì)姓名的控制。類(lèi)TestClass1實(shí)現(xiàn)對(duì)名字訪(fǎng)問(wèn)的接口,TestClass2實(shí)現(xiàn)對(duì)名字的設(shè)置和輸出。程序輸出為:TestClass2NameMay其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)在類(lèi)TestClassl中定義接口函數(shù)GetName,為純虛函數(shù)。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)函數(shù)GetName20實(shí)現(xiàn)獲得名字的緩存,但是只獲得讀允許操作這個(gè)緩存,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)實(shí)現(xiàn)TestClass2的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成TestClass2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理。請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeclassTestClassl{public:∥********1********};classTestClass2:publicTestClassl{public:voidGetName(){cout<(”TestClass2Name”<GetName();cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualvoidGetName():0;(2)添加語(yǔ)句:constchar*GetName2()(3)添加語(yǔ)句:TestClass2(char*str)(4)添加語(yǔ)句:mstr[i]=0;知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)TestClass和接口函數(shù)Getname實(shí)現(xiàn)各種輸出操作。解題思路(1)題目l要求“在類(lèi)TestClassl中定義接口函數(shù)GetName,為純虛函數(shù)”。在C++中,在基類(lèi)中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的函數(shù),即“virtualvoidGetName0=0;”。(2)題目2要求“函數(shù)GetName20實(shí)現(xiàn)獲得名字的緩存,但是只獲得讀允許操作這個(gè)緩存”。只能引用數(shù)據(jù)成員,而不能修改,那么使用常成員函數(shù)。一般形式為,const函數(shù)類(lèi)型函數(shù)名,即“constchar*GetName20”。(3)題目3要求“實(shí)現(xiàn)TestClass2的構(gòu)造函數(shù)”。TestClass2的構(gòu)造函數(shù)與類(lèi)TestClass2名應(yīng)該相同,而且第三個(gè)標(biāo)識(shí)下的大括弧中是對(duì)字符數(shù)組str的操作,所以類(lèi)TestClass2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補(bǔ)全為“TestClass2(char*str)”。(4)題目4要求“完成TestClass2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理”,補(bǔ)全類(lèi)TestClass2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量s仃對(duì)應(yīng)于類(lèi)TestClass中的成員變量mstr,所以這里補(bǔ)全變量賦值操作“mstr[i]=0;990國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,—num:num:10#includeinti=10;C1assTestClass{public:TestClass(inti){cout<<“num:”<標(biāo)準(zhǔn)答案:(1)this一>i=i+1;或TestClass::i=i+1;或(*this).i=i+1;(2)TestClassprint(0);(3)cout<<”num:”(<::i<知識(shí)點(diǎn)解析:程序要求輸出member的值為O,1,10。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先通過(guò)類(lèi)TestClass中的TestClass構(gòu)造函數(shù)的調(diào)用實(shí)現(xiàn)第一次hum值的輸出;然后通過(guò)調(diào)用類(lèi)TestClass中的成員函數(shù)Print實(shí)現(xiàn)第二次hum值的輸出;最后通過(guò)輸出函數(shù)cout實(shí)現(xiàn)第三次hum值的輸出。解題思路(1)打開(kāi)modil.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第二標(biāo)識(shí)下“modil.cpp(22):errorC2512:‘TestClass’:noappropriatedefaultconstructoravailable”,主函數(shù)中首先調(diào)用的就是第2個(gè)標(biāo)識(shí)下的TestClassprint函數(shù),構(gòu)造函數(shù)的名字和類(lèi)的名字是一樣的,而程序中給出的“TestClassprint;”沒(méi)有給出參數(shù),所以程序調(diào)試時(shí)無(wú)法確定調(diào)用的函數(shù)。根據(jù)TestClass構(gòu)造函數(shù)“TestClass(int”的定義,應(yīng)該存在int型參數(shù),并且題目要求第一次輸出的值為“0”,所以第2個(gè)標(biāo)識(shí)正確的調(diào)用函數(shù)為“TestClassprint(0);”(2)運(yùn)行,發(fā)現(xiàn)第一次的輸出正確,但是第二次的輸出值為“858993460”,并不是題目中要求的“1”。在主函數(shù)中,可知第二次輸出調(diào)用的是“print.Print();”即類(lèi)TestClass的成員函數(shù)“Print()”。成員函數(shù)Print的定義“voidPrintoconst”中的輸出語(yǔ)句為“tout<<“num:”<i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i++”。(3)主函數(shù)中通過(guò)“cout<<“num:”<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(intn)的功能是實(shí)現(xiàn)對(duì)一個(gè)整數(shù)的加密,具體的加密方法是:一個(gè)四位長(zhǎng)的整數(shù),每位數(shù)字加上3然后除以9的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換,然后返回得到的密碼。程序輸出:76542108注意:不能修改其他部分的代碼。#include#includeintfun(intn){}intmain(){inti=1234;cout<標(biāo)準(zhǔn)答案:inti,a[4],t;a[0]=n%10;//取整型n的第一位數(shù)字a[1]=n%100/10;//取整型n的第2位數(shù)字a[2]=n%1000/100;//取整型n的第3位數(shù)字a[3]:n/1000;//取整型n的第4位數(shù)字for(i=0;i<=3;i++)//每位數(shù)字加3,取余{a[i]+=3;a[i]%=9;}t=a[0];//根據(jù)加密算法交換a[0]=a[3];a[3]=t;t=a[1];a[1]=a[2];a[2]=t;returna[3]*1000+a[2]*100+a[1]*10+a[0];//重組,返回加密數(shù)字知識(shí)點(diǎn)解析:暫無(wú)解析三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。其中:定義了類(lèi)circle和column,column類(lèi)由circle類(lèi)protected派生,但是兩個(gè)類(lèi)的定義并不完整,請(qǐng)按照以下的要求,將程序補(bǔ)充完整。(1)定義類(lèi)circle的保護(hù)數(shù)據(jù)成員函數(shù)r和area,它們都是double型的數(shù)據(jù),請(qǐng)?jiān)谧⑨尅?*******1********后完成。(2)添加類(lèi)circle的無(wú)參數(shù)的構(gòu)造函數(shù),使得類(lèi)circle對(duì)象的r默認(rèn)值為0,請(qǐng)?jiān)谧⑨尅?*******2********后完成。(3)添加派生類(lèi)column的構(gòu)造函數(shù)的定義,使得參數(shù)為double型的height和radius并將其分別賦給數(shù)據(jù)成員h和基類(lèi)的r請(qǐng)?jiān)谧⑨尅?*******3********之后完成。(4)完成派生類(lèi)column的成員函數(shù)print()的定義,請(qǐng)?jiān)谧⑨尅?*******4********料之后完成,使得輸出為:radius=5area=78.54height=10vol=785.4注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeconstdoublepi=3.1416;C1asscircle{protected:∥********1********publiC:∥********2********{r=0.0;}Circle(doubleradius){r=radius;}voidprint(){area=r*r*pi;cout<<“radius=”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:doubler,area;(2)添加語(yǔ)句:Circle()(3)添加語(yǔ)句:column(doubleradius,doubleheight)(4)添加語(yǔ)句:cout<<”height=”<知識(shí)點(diǎn)解析:本題的功能是計(jì)算圓的面積和周長(zhǎng)。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的mam主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)和成員函數(shù)實(shí)現(xiàn)各種輸出操作。解題思路(1)題目1要求“定義類(lèi)circle的保護(hù)數(shù)據(jù)成員函數(shù)r和area,它們都是double型的數(shù)據(jù)”。保護(hù)成員與private和public一樣是用來(lái)聲明成員的訪(fǎng)問(wèn)權(quán)限的。在已有程序circle類(lèi)中的protected:區(qū)域,添加變量r和area的定義,即“doubler,area;”。(2)題目2要求“添加類(lèi)circle的無(wú)參數(shù)的構(gòu)造函數(shù),使得類(lèi)circle對(duì)象的r默認(rèn)值為0”。在C++中,構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的名字與類(lèi)同名,沒(méi)有參數(shù)的構(gòu)造函數(shù)一般形式為:構(gòu)造函數(shù)名(),所以這里添加“circleO”。(3)題目3要求“添加派生類(lèi)column的構(gòu)造函數(shù)的定義”。同(2),另外帶參數(shù)的構(gòu)造函數(shù)的一般格式為:構(gòu)造函數(shù)名(類(lèi)型1形參1,類(lèi)型2形參2,……),所以這里添加“column(doubleradius,doubleheight)”。(4)題目4要求“完成派生類(lèi)column的成員函數(shù)print()的定義”。根據(jù)題干中輸出結(jié)果,知道第一個(gè)輸出值為height,第二個(gè)輸出值為vol,即area*h,所以這里添加“cout<<”height=”<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類(lèi)ABC和主函數(shù)main。程序文本中位于每行“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:2123注意:只修改每個(gè)“//ERROR****found****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。1#include2usingnamespacestd;34classABC{5public:6//ERROR**********found**********7ABC(){a=0;b:0;c=0;}8ABC(intas,intbb,intcc);9voidSetab(){++a,++b;}10intSum(){returna+b+c;}11private:12inta,b;13constintc;14};1516ABC::ABC(intaa,intbb,intcc):c(cc){a=as;b:bb;)1718intmain()19{20ABCx(1,2,3),y(4,5,6);21ABCz,*w=&z;22w->Setab();23//ERROR**********found**********24ints1=x.Sum()+y->Sum();25cout<標(biāo)準(zhǔn)答案:(1)ABC():a(0),b(0),c(0){}(2)ints1=x.Sum()+y.Sum();(3)ints2=sl+w->Sum():知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,根據(jù)私有成員的定義:constintc;可知,c為常變量,因此構(gòu)造函數(shù)必須使用成員列表初始化來(lái)給C賦初始值。(2)主要考查考生對(duì)類(lèi)的指針的掌握情況,根據(jù)主函數(shù)的第一條語(yǔ)句:ABCx(1,2,3),y(4,5,6);可知,x和y都是ABC類(lèi),但不是指針,因此它們調(diào)用ABC類(lèi)的成員函數(shù)要使用標(biāo)識(shí)符“.”,而不是“->”。(3)主要考查考生對(duì)類(lèi)的指針的掌握情況,根據(jù)主函數(shù)的第二條語(yǔ)句:ABCz,*w=&z;可知,w是ABC類(lèi)的指針,指向z,因此w調(diào)用ABC類(lèi)的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“->”,而不是“.”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有坐標(biāo)點(diǎn)類(lèi)point、線(xiàn)段類(lèi)Line和三角形類(lèi)Triangle的定義,還有main函數(shù)的定義。程序中兩點(diǎn)間距離的計(jì)算是按公式實(shí)現(xiàn)的,三角形面積的計(jì)算是按公式f=請(qǐng)?jiān)诔绦蛑械臋M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以實(shí)現(xiàn)上述類(lèi)定義。此程序的正確輸出結(jié)果應(yīng)為:Side1:9.43398Side2:5Side3:8area:20注意:只在橫線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。1#include2#include3usingnamespacestd;4classPoint{//坐標(biāo)點(diǎn)類(lèi)5public:6constdoublex,y;7Point(doublex=0.0,doubley=0.0):x(x),y(y){}8//**********found**********9doubledistanceTo(——)10const{11//到指定點(diǎn)的距離12returnsqrt((x-p.x)*(x-o.x)+(y-p.y)*(y-p.y));13}14};15classLine{//線(xiàn)段類(lèi)16public:17constPointp1,p2;//線(xiàn)段的兩個(gè)端點(diǎn)18//**********found**********19Line(Pointp1,Pointp2):_____20{}21doublelength()const{returnp1.distanceTo(p2);)//線(xiàn)段的長(zhǎng)度22};23classTriangle{//三角形類(lèi)24public:25constPointp1,p2,p3;//三角形的三個(gè)頂點(diǎn)26//**********found**********27Triangle(______):p1(p1),p2(p2),p3(p3){)28doublelengthl()const{//邊p1,p2的長(zhǎng)度29returnLine(pl,p2).1ength();30}31doublelength2()const{//邊p2,p3的長(zhǎng)度32returnLine(p2,p3).1ength();33}34doublelength3()const{//邊p3,p1的長(zhǎng)度35returnLine(p3,p1).1ength();36}37doublearea()const{//三角形面積38//**********found**********39doubles=——————————;40returnsqrt(s*(s-lengthl())*(s-length2())*(s-length3()));41}42};43intmain(){44Triangler(Point(0.0,8.0),Point(5.0,0.0),Point(0.0,0.0));45cout<<“Side1:”<標(biāo)準(zhǔn)答案:(1)constPoint&p(2)p1(p1),p2(p2)(3)Pointp1,Pointp2,Pointp3(4)(lengthl()+:length2()+length3())/2知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)函數(shù)形參的掌握,由函數(shù)的注釋可知有本坐標(biāo)點(diǎn)到達(dá)某個(gè)坐標(biāo)點(diǎn)類(lèi)的距離,再根據(jù)函數(shù)體returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));可知,該坐標(biāo)點(diǎn)類(lèi)名為p,因此可以知道形參為Point&p,為了不改變?cè)撟鴺?biāo)點(diǎn)的值,前面要加上const。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,對(duì)于常變量型私有成員constPointp1,p2,只能用成員初始化列表進(jìn)行賦值。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,由空格后面的語(yǔ)句:p1(p1),p2(p2),p3(p3){}可知,該構(gòu)造函數(shù)需要進(jìn)行成員列表初始化,再看類(lèi)的私有成員constPointp1,p2,p3,可知p1,p2,p3是Point類(lèi)型,因此形參為Pointp1,Pointp2,Pointp3。(4)主要考查考生對(duì)成員函數(shù)的掌握,根據(jù)函數(shù)注釋?zhuān)芍竞瘮?shù)要求計(jì)算三角形面積,再看題目的提示:s=(a+b+c)/2??芍崭裉幰畹氖侨切蔚娜龡l邊之和除以2,而求邊長(zhǎng)的函數(shù)已經(jīng)給出,這里直接調(diào)用即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用【答題】菜單命令或直接用VC6打開(kāi)考生文件夾下的工程proj3,其中聲明的是一個(gè)人員信息類(lèi),補(bǔ)充編制程序,使其功能完整。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:Zhang20Tsinghua。注意:只能在函數(shù)address_change的“//********333********”和“//********666********”之間填人若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。1//proj3.h2#include3#include4usingnamespacestd;5clasSPerson{6charname[20];7intage;8char*address;9public:10Person(){age=0;address=0;)11voidname_change(char*_name);12//名字修改函數(shù)13voidage_change(int_age);14//年齡修改函數(shù)15voidaddresschange(char*add);16//地址修改函數(shù)17voidinfodisplay();18//人員信息顯示19~Person();20//析構(gòu)函數(shù)21};22voidwriteToFile(constchar*path);1proj3.cpp2#include3#include4#include"proj3.h"5usingnamespacestd;67voidPerson::namechange(char*_name)8{9strcpy(name,_name);10}11voidPerson::age_change(int_age)12{13age=_age;14}15voidPerson::address_change(char*_16add)17{18if(address!=NULL)delete[]ad-19dress;20//********333********21//********666********22}23voidPemson::info_display(){24cout<標(biāo)準(zhǔn)答案:1address=newchar[strlen(add)+1];//給類(lèi)成員變量動(dòng)態(tài)分配空間2strcpy(address,_add);//把字符串a(chǎn)dd復(fù)制給address知識(shí)點(diǎn)解析:函數(shù)address_change(char*_add)的功能是地址修改,也就是說(shuō)通過(guò)該函數(shù)把類(lèi)的地址修改為add字符串。類(lèi)的私有成員address是字符指針,因此首先要給address分配空間,通過(guò)new語(yǔ)句來(lái)實(shí)現(xiàn):address=newchar[strlen(_add)+1];。接下來(lái)就是要復(fù)制字符串,使用系統(tǒng)函數(shù)strcpy,其用法為strcpy(參數(shù)1,參數(shù)2),將參數(shù)2的內(nèi)容復(fù)制到參數(shù)1中。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,即使程序在界面輸出以下類(lèi)似內(nèi)容:0012FF6810012FF3C50012FF6C20012FF4440012FF7030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC~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)for(x=0;x<5;x++)(2)cout<知識(shí)點(diǎn)解析:(1)根據(jù)數(shù)組a、b定義,它們都是5個(gè)元素,而第1個(gè)標(biāo)識(shí)下的“for(x=0;x<=5;x++)”循環(huán)了6次,應(yīng)該是5次,所以第1個(gè)標(biāo)識(shí)下的將其修改為“for(x=0;x<5;x++)”(2)第2個(gè)標(biāo)識(shí)下的P變量為指針型變量,p+x為指向數(shù)組中第x個(gè)元素的地址,這里要輸出的是存儲(chǔ)單元的內(nèi)容,所以使用“*”指針元素符,即修改為“cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)func(intd[],intn)的功能是將長(zhǎng)度為num的數(shù)組d的每一個(gè)數(shù)字是奇數(shù)的擴(kuò)大1倍,并存儲(chǔ)到數(shù)組d中。例如:123456789返回:226410614818將func(intd[],intnum)補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。#includeVoidfunc(intd[],intnum){}intmain(){intData[]={1,2,3,4,5,6,7,8,9);func(Data,9);for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i知識(shí)點(diǎn)解析:(1)由審題分析可知,利用循環(huán)來(lái)逐個(gè)判斷d[]中的元素,d[]中元素個(gè)數(shù)為num,因此循環(huán)變量從0變化至num。(2)在循環(huán)內(nèi),用if判斷該元素是不是奇數(shù),即if(d[i]%2!=0),將滿(mǎn)足條件的d[i]擴(kuò)大一倍。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)重載運(yùn)算符int,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)重載運(yùn)算符“<<”,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)在主函數(shù)main()中定義變量i,并調(diào)用對(duì)象obi的int運(yùn)算符,給變量賦初值為10,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)調(diào)用obj的“<<”運(yùn)算符輸出:HelloTest注意:增加代碼,或者修改代碼的伊鼠已經(jīng)川符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeusingnamespacestd;ClassTestClass{public://********1********{cout<<"int"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:operatorint()(2)添加語(yǔ)句:operator<<(char*str)(3)添加語(yǔ)句:inti=int(obj);(4)添加語(yǔ)句:obj<<"HelloTest";知識(shí)點(diǎn)解析:(1)題目1要求“重載運(yùn)算符int”的定義。運(yùn)算符重載的方法是定義一個(gè)重載運(yùn)算符的函數(shù),其一般格式為:函數(shù)類(lèi)型opemmr運(yùn)算符名稱(chēng)(形參列表){對(duì)運(yùn)算符的重載處理)。所以第1個(gè)標(biāo)識(shí)下,重載運(yùn)算符int的語(yǔ)句為“operatorint()”。(2)題目2要求“重載運(yùn)算符‘<<’”。同(1),第2個(gè)標(biāo)識(shí)下“<<”的重載函數(shù)定義為“operator<<(char*str)”。(3)題目3要求“在主函數(shù)main()中定義變量i,并調(diào)用對(duì)象obj的int運(yùn)算符,給變量賦初值為10?!倍x變量i,即inti?!皁peratorint()”中的返回值為10,所以調(diào)用對(duì)象obi的int運(yùn)算符,給變量賦初值為10,就是int(obj),即第三個(gè)標(biāo)識(shí)下添加“inti=int(obj);”。(4)題目4要求“調(diào)用0bj的“<<”運(yùn)算符輸出“HelloTest”"。重載運(yùn)算符“<<”后,不僅能輸出標(biāo)準(zhǔn)類(lèi)型數(shù)據(jù),而且可以輸出用戶(hù)自己定義的類(lèi)對(duì)象。所以直接添加要輸出的字符串即可,即“obj<<"HelloTest";”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程pmj1。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:value=63number=1注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeUSingnamespacestd;classMyClass{int*P;constintN;public://ERROR**********found**********MyClass(intval):N=1{P=newint;‘P=val;)//ERROR**********found***********~MyClass(){delete*P;}friendvoidprint(MyClass&obj);};//ERROR**********found***********voidMyClass::print(MyClass&obj){cout<<”value=”<<“(obj.P)<<endl;cout<<”number=”<標(biāo)準(zhǔn)答案:(1)MyClass(intval):N(1)(2)~MyClass(){delete[]p;}(3)voidprint(MyClass&obj)知識(shí)點(diǎn)解析:本題考查MyClass類(lèi),其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)。構(gòu)造函數(shù)的成員列表初始化格式為:私有成員(參數(shù))……{},不能用賦值語(yǔ)句。析構(gòu)函數(shù)使用delete語(yǔ)句,delete語(yǔ)句的語(yǔ)法是:delete[]指針?!窘忸}思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,在這里不能使用賦值語(yǔ)句。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)的delete語(yǔ)句要使用標(biāo)識(shí)符“[],’,即delete[]p;。(3)主要考查考生對(duì)友元函數(shù)的掌握,友元函數(shù)并不屬于類(lèi),因此定義時(shí)前面不用加類(lèi)名和作用域符號(hào)?!窘忸}寶典】友元函數(shù)考查較少,但也是很關(guān)鍵的,友元函數(shù)并不屬于類(lèi),只是可以使用類(lèi)的私有成員而已,因此定義的時(shí)候就當(dāng)作普通函數(shù)處理即可。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,其中定義了Component類(lèi)、Composite類(lèi)和Leaf類(lèi)。Component是抽象基類(lèi),Composite和Leaf是Compo-nent的公有派生類(lèi)。請(qǐng)?jiān)跈M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線(xiàn),以實(shí)現(xiàn)上述類(lèi)定義。此程序的正確輸出結(jié)果應(yīng)為:LeafNode注意:只能在橫線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容.也不要?jiǎng)h除或移動(dòng)“//****found****”。#includeusingnamespacestd;classComponent{public://聲明純虛函數(shù)print()//**********found**********};classComposite:publicComponent{public://**********found**********voidsetChild(__________){mchild=chiid;}virtualvoidprint()const{mchild一>print();}private:Component*m—child;};classLeaf:publicComponent{public:virtualvoidprint()const{//**********found**********_____________}};intmain(){Leafnode;Compositecomp;comp.setChild(&node);Component*P=&comp;P一>print();return0;}標(biāo)準(zhǔn)答案:1)virtualvoidprint()const=0;(2)Component*child(3)cout<<“LeafNode”<知識(shí)點(diǎn)解析:本題考查抽象類(lèi)Component類(lèi)及其派生類(lèi)Composite和Leaf,其中涉及純虛函數(shù)和成員函數(shù)。純虛函數(shù)要根據(jù)在派生類(lèi)中該函數(shù)的返回值、參數(shù)、有無(wú)const來(lái)確定?!窘忸}思路】(1)主要考查考生對(duì)純虛函數(shù)的掌握,題目要求聲明純虛函數(shù)print()。在其派生類(lèi)中print()函數(shù)的定義為virtualvoidprint()const,由此可知純虛函數(shù)為virtualvoidprint()const=0(2)主要考查考生對(duì)成員函數(shù)的掌握,題目要求填寫(xiě)函數(shù)voidsetChild的形參,由setChild的函數(shù)體可知形參為child,再看類(lèi)的私有成員m—child的定義:Component*m—child;。由此可知形參為:Component*child。(3)主要考查考生對(duì)純虛函數(shù)的掌握,先看主函數(shù)的程序:Leafnode;Compositecomp;comp.setChild(&node);Componen*p=&comp;p一>print();第一條和第二條語(yǔ)句都是定義語(yǔ)句,第三條語(yǔ)句調(diào)用函數(shù)setChild,由setChild函數(shù)的定義可知,comp中的m—child等于node,第四條語(yǔ)句定義了個(gè)指針p指向comp的地址,也就是node,最后一條語(yǔ)句通過(guò)指針p調(diào)用函數(shù)print,也就是調(diào)用類(lèi)Leaf的函數(shù)print,因?yàn)轭}目要求輸出:LeafNode,因此在這里添加語(yǔ)句:cout<<”LeafNode’’<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中定義的Matrix是一個(gè)用于表示矩陣的類(lèi)。成員函數(shù)max_value的功能是求出所有矩陣元素中的最大值。例如,若有3×3矩陣則調(diào)用max_value函數(shù),返回值為3。請(qǐng)編寫(xiě)成員函數(shù)max—valueo要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//**********333**********”與“//**********666**********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//Matrix.h#include#includeusingnamespacestd;constintM=18;constintN=18;classMatrix{intarray[M][N];public:Matrix(){)intgetElement(inti,intJ)const{returnarray[i][J];)voidsetElement(inti,intJ,intvalue){array[i][J]=value;)intmaxvalue()const;voidshow(constchar*s)const{cout<voidreadFromFile(constchar*f,Matrix&m){ifstreaminfile(f);if(infile.fail()){cerr<<”打開(kāi)輸入文件失敗!;return;)intk;for(inti=0;i>k;m.setElement(i,j,k);}}intMatrix::maxvalue()const{//*********333*********//*********666*********}intmain(){Matrixm;readFromFile(“”,m);m.show(“Matrix:”);cout<標(biāo)準(zhǔn)答案:Inttemp;//定義整數(shù)變量temp,并賦值為零for(inti=0;i知識(shí)點(diǎn)解析:本題考查Matrix類(lèi),其中涉及構(gòu)造函數(shù)、二維數(shù)組、成員函數(shù)和const函數(shù)?!窘忸}思路】主要考查考生對(duì)二維數(shù)組的掌握,題目要求成員函數(shù)max—value的功能是求出所有矩陣元素中的最大值。因此只要逐個(gè)元素比較即可,下標(biāo)i和j作為矩陣行和列的標(biāo)記,使用雙層for循環(huán)來(lái)遍歷數(shù)組中的所有元素?!窘忸}寶典】主要考查考生對(duì)二維數(shù)組的掌握,二維數(shù)組使得存儲(chǔ)的數(shù)據(jù)大幅增加,只要把二維數(shù)組想象成矩陣,利用矩陣相關(guān)知識(shí)求解即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:30130注意:錯(cuò)誤的語(yǔ)句在//*****error******的下面,修改該語(yǔ)句即可。#includeinta=10;classCObj{public:CObj(){a=b=0;}voiddisplay(){//*****error******cout<標(biāo)準(zhǔn)答案:(1)cout<a+=a;(3)a+=::a;知識(shí)點(diǎn)解析:(1)成員函數(shù)display()打印變量a和b的值,即cout輸出a和b的值,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<”不正確,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成cout<a+=a;”。(3)func2()函數(shù)雖然沒(méi)有參數(shù),但是成員變量a和全局變量a重名,第3個(gè)標(biāo)識(shí)下“a+=a”也會(huì)有歧義,分不清楚是全局變量加倍還是類(lèi)成員變量加倍或者其他情況,調(diào)用func2()函數(shù)后,輸出“130”,說(shuō)明a為13,b為0,因此是成員變量與全局變量a的和賦給成員變量a,正確的寫(xiě)法是“a+=::a;”,“::a”表示是全局變量a。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù)。例如:abc123abc45返回輸出:6將函數(shù)num()補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。#includeintnum(char*str){}intmain(){charstr[1024];cout<<"pleaseinputastrfng:"<標(biāo)準(zhǔn)答案:intnumber=0;for(inti=0;str[i]!=0;i++)if(Str[i]>’9’||str[i]<’0’)//非數(shù)字字符number++;returnnumber;知識(shí)點(diǎn)解析:(1)利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開(kāi)始,直到str[i]=0(到了字符數(shù)組的尾),不斷地讀取str中讀取元素。(2)每讀到一個(gè)元素判斷是否是非數(shù)字字符,即滿(mǎn)足條件“str[i]>’9’‖str[i]<’0’”的字符為非數(shù)字字符,非數(shù)字字符個(gè)數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個(gè)數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù),設(shè)置數(shù)組元素的個(gè)數(shù)為0,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之后添加語(yǔ)句。(2)完成函數(shù)AddMember(intn),如果參數(shù)n包含在類(lèi)的數(shù)據(jù)成員數(shù)組中,則返回0,否則把數(shù)據(jù)寫(xiě)入數(shù)組,然后返回1,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之后添加語(yǔ)句。(3)完成函數(shù)DelMember(intn),如果變量在數(shù)據(jù)中,則刪除該變量,并且返回1,如果不存在則返回0,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********之后添加語(yǔ)句。(4)完成成員函數(shù)islnclude(intn)的定義,該函數(shù)檢查參數(shù)n是否在類(lèi)的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,否則返回0。請(qǐng)?jiān)谧⑨專(zhuān)?*******4********之后添加語(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#defineMAX_LENGTH500classCArray{public:CArray(){//********1********}intAddMember(intn){for(inti=0;i標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:length=0;(2)將“if(Array[i]=n)”補(bǔ)充完整為:if(Array[i]==n)或if(n==Array[i])(3)將“if()”補(bǔ)充完整為:if(i知識(shí)點(diǎn)解析:(1)使length的初始化為0,因此添加語(yǔ)句:“l(fā)ength=0;”(2)第2個(gè)標(biāo)識(shí)下是檢查n是否已經(jīng)在數(shù)組當(dāng)中存在,用if語(yǔ)句來(lái)判斷,即if(Array[i]==n)或if(n==Array[i])。(3)DelMember(intn)函數(shù)刪除指定的元素,由于元素在數(shù)組當(dāng)中的位置未知,因此必須先查找該元素的位置,在該函數(shù)的實(shí)現(xiàn)過(guò)程當(dāng)中通過(guò)for循環(huán)來(lái)完成,即第一個(gè)for循環(huán)查找n在數(shù)組中的位置。如果n存在于數(shù)組中,那么if中的break語(yǔ)句就會(huì)執(zhí)行跳出循環(huán),此時(shí)循環(huán)變量i的值會(huì)小于length,即通過(guò)判斷i的值是否小于length值可以知道n是否存在數(shù)組中,如果存在數(shù)組中接下來(lái)進(jìn)行刪除操作。即第3個(gè)標(biāo)識(shí)下應(yīng)改為if(i國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;/*********found*********/while(n<【1】){for(i=0;i標(biāo)準(zhǔn)答案:(1)N或20(2)break(3)n知識(shí)點(diǎn)解析:填空1:變量n用于存儲(chǔ)數(shù)組的下標(biāo),要通過(guò)while語(yǔ)句對(duì)數(shù)組進(jìn)行賦值,數(shù)組的容量為20,因此循環(huán)條件應(yīng)為n<20。填空2:通過(guò)一個(gè)for循環(huán)判斷x是否與數(shù)組中已存的元素重復(fù),若重復(fù)則跳出for循環(huán)結(jié)束。填空3:若for循環(huán)是由break語(yǔ)句結(jié)束的,則x與數(shù)組中的元素重復(fù),此時(shí)i必然小于n;若for循環(huán)是因?yàn)檠h(huán)變量i遞增到某值,而不再滿(mǎn)足循環(huán)條件結(jié)束的,說(shuō)明x的值與數(shù)組中的元素不重復(fù),則此時(shí)i的值等于n。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:刪除指針p所指字符串中的所有空白字符(包括制表符、回車(chē)符及換行符)。輸入字符串時(shí)用“#”結(jié)束輸入。請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includefun(char*p){inti,t;charc[80];/*********found*********/For(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/*********found*********/c[t]="\0";strcpy(p,c);}voidmain(){charc,s[80];Inti=0;printf("Inputastring:");c=getchar();while(c!=’#’){s[i]=c;i++;c=getchar();)s[i]=’\0’;fun(s);puts(s);}標(biāo)準(zhǔn)答案:(1)for(i=0,t=0;p[i];i++)(2)c[t]=’\0’;知識(shí)點(diǎn)解析:該題目考查C語(yǔ)言關(guān)鍵字的書(shū)寫(xiě),c語(yǔ)言中關(guān)鍵字是區(qū)分大小寫(xiě)的。另外為字符串結(jié)尾添加結(jié)束符時(shí)應(yīng)書(shū)寫(xiě)為‘\0’,而非“\0”,“\0”表示一個(gè)字符串。該程序的if條件中應(yīng)用了isspace函數(shù),該函數(shù)的功能是檢查ch是否為空格、跳格符(制表符)或換行符。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該是:333333334444444455555555。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#includevoidfun(int(*s)[10],int*b,int*n,intmm,intnn){}voidmain(){FILE*wf;intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\n");}fun(w,a,&n,3,4);printf("TheAarray:\n");for(i=0;i標(biāo)準(zhǔn)答案:voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j,k=0;for(i=0;i知識(shí)點(diǎn)解析:本題可以用兩個(gè)循環(huán)來(lái)處理,由于是按行的順序取出,所以第1個(gè)循環(huán)用于控制行下標(biāo),第2個(gè)循環(huán)用于控制列下標(biāo);若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i-0;i國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用菜單命令或直接使用VC6打開(kāi)考生文件夾下的工程projl。程序中位于每個(gè)//ERROR**********found**********下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以更正,不得修改程序的其他部分。更正后程序的輸出應(yīng)該是:兩點(diǎn)之間的距離為:7.5231注:意:只能修改每個(gè)//ERROR**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include#includeusingnamespacestd;classPoint{private:doublex,y,public:Point(doublexx,doubleYY)(x=xx;y=yy;}//ERROR**********found**********doubleMyDistance(Point&a,Point&b);},doubleMyDistance(Point&a,Point&b){//ERROR**********found**********doubledx:x—b.x;//ERROR**********found**********doubledy=a.y—y;returnsqrt(dx*dx+dy*dy);}intmain(){Pointp1(3.6,6.4),p2(8,0.3);doubled=MyDistance(pl,p2);cout<<“兩點(diǎn)之間的距離為:”<標(biāo)準(zhǔn)答案:(1)frienddoubleMyDistance(Point&a,Point&b);(2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)高壓有載分接開(kāi)關(guān)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球墻磨機(jī)開(kāi)關(guān)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球工業(yè)PTFE密封件行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球超高頻RFID一次性腕帶行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)PCA輸液泵行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球有機(jī)廢物轉(zhuǎn)化機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 房屋租賃協(xié)議范本合同
- 交易買(mǎi)賣(mài)合同范本集錦
- 國(guó)家科技部技術(shù)服務(wù)合同
- 大數(shù)據(jù)分析與應(yīng)用項(xiàng)目合作合同
- 《企業(yè)成功轉(zhuǎn)型》課件
- 初中公寓主任述職報(bào)告
- 建設(shè)銀行對(duì)賬單英文翻譯模板【英國(guó)簽證】
- 法醫(yī)解剖室管理制度
- 九年級(jí)下冊(cè)滬教版上海化學(xué)5.2酸和堿的性質(zhì)研究 課件
- 益生芽孢桿菌體外抑菌活性及耐藥性研究
- 2023數(shù)聯(lián)網(wǎng)(DSSN)白皮書(shū)
- ISO17025經(jīng)典培訓(xùn)教材
- 東南大學(xué)宣講介紹
- 2023年菏澤醫(yī)學(xué)專(zhuān)科學(xué)校單招綜合素質(zhì)題庫(kù)及答案解析
- 九年級(jí)下冊(cè)-2023年中考?xì)v史總復(fù)習(xí)知識(shí)點(diǎn)速查速記(部編版)
評(píng)論
0/150
提交評(píng)論