國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷36(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷36(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷36(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷36(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷36(共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ī)試(操作題)模擬試卷36(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,請(qǐng)修改程序中的錯(cuò)誤,使程序能得出正確的結(jié)果:num:0num:1num:10注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥******error******的下面。#includeinti=10;ClassTestClass{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的值為0,1,10。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先通過(guò)類TestClass中的TestClass構(gòu)造函數(shù)的調(diào)用實(shí)現(xiàn)第一次num值的輸出;然后通過(guò)調(diào)用類TestClass中的成員函數(shù)Print實(shí)現(xiàn)第二次num值的輸出;最后通過(guò)輸出函數(shù)cout實(shí)現(xiàn)第三次num值的輸出。(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ù)的名字和類的名字是一樣的,而程序中給出的“TestClassprint;”沒(méi)有給出參數(shù),所以程序調(diào)試時(shí)無(wú)法確定調(diào)用的函數(shù)。根據(jù)TestClass構(gòu)造函數(shù)“YestClass(inti)”的定義,應(yīng)該存在int型參數(shù),并且題目要求第一次輸出的值為“0”,所以第2個(gè)標(biāo)識(shí)正確的調(diào)用函數(shù)為“TestClassprint(0);”0(2)運(yùn)行,發(fā)現(xiàn)第一次的輸出正確,但是第二次的輸出值為“一858993460”,并不是題目中要求的“1”。在主函數(shù)中,可知第二次輸出調(diào)用的是“print.Print();”,即類TestClass的成員函數(shù)“Print()”。成員函數(shù)Print的定義“voidPrint()const”中的輸出語(yǔ)句為“cout<<”num:“<i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。(3)主函數(shù)中通過(guò)“cout<<”num:“<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)conven(char*des,char*str,charc,char*str2)的功能是:如果str中包含字符“!”,則替換成.一.a(chǎn);如果str中包含字符“&”,則替換成rt”;如果str中包含字符“*",則替換成str2。并用函數(shù)返回目標(biāo)轉(zhuǎn)換后的指針。注意:只能補(bǔ)充函數(shù)convert(char*des.char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char‘str=”!&cefghi*!&”;char*str2=”jklm”;convert(dest,str,str2);cout<標(biāo)準(zhǔn)答案:deS[0]=0;chartemp(2]={0,0);for(inti=0;str[i]!=NULL;i++){if(Str[i]==‘!’){temp[0]=’a’;//4換成‘a(chǎn)’strcat(deS,temp);}elseif(str[i]==‘&’){temp[0]=‘b’;strcat(deS,temp);//替換成’b’}elseif(str[i]==“”){strcat(des,str2);//4換成str2}else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}知識(shí)點(diǎn)解析:函數(shù)convert(char*des,char*str,charc,char*str2)的功能是將str中包含的特定字符替換成其他字符,因此可利用循環(huán)搜索str字符串,找到特定字符后進(jìn)行替換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整,使得程序輸出21到屏幕。完成以下功能:(1)增加靜態(tài)私有變量mNumber,類型為int,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)增加靜態(tài)變量mNumber并初始化為10,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成靜態(tài)函數(shù)get的定義,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成對(duì)象obj對(duì)靜態(tài)函數(shù)get的調(diào)用,使得輸出21到屏幕上,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeciassTestClass{∥********1********intmOther;public:TestClass(inti){mOther=i;}∥********3********{returnmNumber+obj一>mOther;}};∥********2********intmain(){TestClassobj(11);∥********4********cout<<<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:staticintmNumber;(2)添加語(yǔ)句:intTestClass::mNumber=10;(3)添加語(yǔ)句:staticintget(Testclass*obj)(4)將“cout<<<知識(shí)點(diǎn)解析:本題中程序的功能是利用get函數(shù)計(jì)算對(duì)象成員數(shù)值的和。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從己定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類TestClass和get()成員函數(shù)實(shí)現(xiàn)各種輸出操作國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果是:nember=1nember=10nember=100注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#includeClassTestClass{public:TestClass(inti)(nember=i;}voidSetNember(intm){nember=m;}intGetNember()const{returnnember;}voidPrint()const{cout<<“nember=”<標(biāo)準(zhǔn)答案:(1)Testclassobj1(1);(2)obj1.SetNember(10);(3)obj2.setNember(100);知識(shí)點(diǎn)解析:程序要求輸出nerrlber的值為l,10,100。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序定義了TestClass類的對(duì)象obj1和obi2,然后通過(guò)調(diào)用類的成員函數(shù)實(shí)現(xiàn)了題目中的輸出結(jié)果。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)補(bǔ)充完整程序fun(inti),使程序完成以下功能:如果i=5,則輸出如下5行井號(hào)。###############注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includevoidfun(inti){}intmain(){fun(5);return0;}標(biāo)準(zhǔn)答案:for(intj=0;j知識(shí)點(diǎn)解析:(1)該程序功能是輸出5行井號(hào)。它的解題思路,兩層循環(huán),外循環(huán)為行,內(nèi)循環(huán)為列。第一行為1列,第二行為兩列,同理類推,第n行為n列。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)fun(inti)中的i參數(shù)為i行#。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。通過(guò)繼承完成輸入到屏幕指定的信息:TestClassATestClassBTestClassC其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類B虛繼承于A,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類C虛繼承于A,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類D繼承于B,C,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)fun通過(guò)調(diào)用基類的fun,完成所輸出的內(nèi)容,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeClassTeStClassA{public:voidfun(){cout<<“TestClassA”<標(biāo)準(zhǔn)答案:(1)將“classTestClassB:”補(bǔ)充完整為:classTestClassB:virtualpublicTestClassA(2)將“classTestClassC:”補(bǔ)充完整為:classTestClassC:virtualpublicTestClassA(3)將“classTestClassD:”補(bǔ)充完整為:classTestClassD:publicTestClassB,publicTeStClassC(4)添加語(yǔ)句:TestClassA::fun();TestClassB::fun();TestClassC::fun();知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從己定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類和函數(shù)fun實(shí)現(xiàn)各種輸出操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序運(yùn)行后沒(méi)有內(nèi)存遺漏??梢栽谛薷奶幵黾踊蛘邉h除一條語(yǔ)句。本程序完成輸入兩個(gè)字符串,分別存儲(chǔ)到s1,s2中。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includevoidmain(){char*s1;chars2[1024];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:(1)s1=newchar[1024],(2)delete[]s1;(3)刪除“deletes2;”語(yǔ)句知識(shí)點(diǎn)解析:(1)s1變量為指針變量,在使用前要對(duì)其分配空間,所以第1個(gè)標(biāo)識(shí)下添加“s1=newchar[1024];”。(2)為了防止內(nèi)存空間的泄漏,指針變量使用后,要將其空間釋放,第二個(gè)標(biāo)識(shí)下“delete[]s1;”。(3)s2是數(shù)組變量,空間是在使用前靜態(tài)分配的,不是使用前動(dòng)態(tài)分配的,所以使用后不用釋放內(nèi)存空間,這里應(yīng)該刪除“deletes2;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(intx),該函數(shù)功能是判定x的所有的約數(shù),并且在函數(shù)中調(diào)用寫(xiě)函數(shù)WriteFile()將結(jié)果輸出到modi2.txt文件中。例如:x=10的約數(shù)為1,2,5,10。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#inClude#includeusingnamespacestd;voidWriteFile(intc){ofstreamout1;out1.open("modi2.txt",iosbase::binary|ios_base::app);out1<標(biāo)準(zhǔn)答案:for(inti=l;i<=x;i++){if(x%i==0)//{如果x被i整除,那么i為x的約數(shù){WriteFile(i);//將約數(shù)i存入文件}}知識(shí)點(diǎn)解析:(1)由1到x,循環(huán)判斷其中是否有x的約數(shù)。(2)如果X被i整除,那么i為X的約數(shù)。(3)最后調(diào)用WriteFile函數(shù),將約數(shù)i存入文件。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù),請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型,打印出性別,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。輸出的內(nèi)容如下:Sex=ManSex=Woman注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#includeClassPerson{public://********l********voidprint(){);intSex;};classMan:publicPemson(public:Man(){//********2********}voidprint(){cout<<"Man"<標(biāo)準(zhǔn)答案:(1)將“voidprint(){};”補(bǔ)充完整為:virtualvoidprint(){};(2)添加語(yǔ)句:sex=1;(3)添加語(yǔ)句:sex=0;(4)添加語(yǔ)句:Voidfun(Person&p)知識(shí)點(diǎn)解析:(1)題目1要求“基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以第1個(gè)標(biāo)識(shí)下的“voidprint(){};”語(yǔ)句修改為“virtualvoidprint(){};”。(2)題目2要求“類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1”?;怭erson中變量sex是用來(lái)存放性別的,Man繼承Person,所以Man中性別的變量可以使用基類中的sex變量,設(shè)置性別為1,即“sex=1;”。(3)題目3要求“類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0”。同(2),在第三個(gè)標(biāo)識(shí)下添加“sex=0;”。(4)題目4要求“實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型,打印出性別”。根據(jù)“p.print();”語(yǔ)句知道,fun()函數(shù)的形參為指針P,由于它調(diào)用了基類Person中的成員函數(shù)print(),所以P的基類為Person,即添加函數(shù)fun()的定義為“voidfun(Person&p)”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將a所指3×5矩陣中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原來(lái)左邊的各列依次繞到右邊。例如,有下列矩陣:123451234512345若k為2,程序執(zhí)行結(jié)果為345123451234512請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle#defineM3#defineN5voidfun(int(*a)[N],intk){inti,j,p,temp;/*********found*********/for(p=1;p<=【1】;P++)for(i=0;i標(biāo)準(zhǔn)答案:(1)k(2)N一1(3)temp知識(shí)點(diǎn)解析:填空1:外循環(huán)p的值為數(shù)組移動(dòng)的次數(shù),試題要求第k列左移,則需要移動(dòng)的次數(shù)為k,所以應(yīng)填k。填空2:矩陣共N列,所以應(yīng)填N一1。填空3:臨時(shí)變量temp中存放的值為數(shù)組最左邊元素的值,需要把temp放到數(shù)組的末尾,即放到a[i][N—1]中,所以應(yīng)填temp。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includeintfun(floatx[],intn)/*********found*********/intj,c=0;floatxa=0.0;for(j=0;jxa)c++;returnc;}main(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};system("cls");printf("%d\n",fun(x,8));}標(biāo)準(zhǔn)答案:(1){intj,c=0;floatxa=0.0;(2)if(x[j]>=xa)知識(shí)點(diǎn)解析:(1)本題著重考查考生對(duì)C語(yǔ)言基本語(yǔ)法以及比較運(yùn)算符的掌握情況。(2)本題中的第一個(gè)錯(cuò)誤:在C語(yǔ)言中,{}應(yīng)威對(duì)出現(xiàn),所以程序中的語(yǔ)句"intj,c=0;floatxa=0.0;"應(yīng)改為"{intj,c=0;floatxa=0.0;”或相同作用的語(yǔ)句;三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“一1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值一1234。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include#includelongfun(char*p){}voidmain(){chars[6];longn;printf("Enterastring:\n");gets(S);n=fun(S);printf("%id\n",n);}標(biāo)準(zhǔn)答案:longfun(char*p){longn=0;intflag=1;if(*p==’-’)/*負(fù)數(shù)時(shí)置flag為一1*c/{p++;flag=一1;}elseif(*p==’+’)/*正數(shù)時(shí)置flag為1*/p++;while(*p!=’\0’){n=n*10+*p一’0’;/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/p++;}returnn*flag;}知識(shí)點(diǎn)解析:if語(yǔ)句的作用是判斷該字符串為正數(shù)還是負(fù)數(shù),while循環(huán)的作用是將字符串轉(zhuǎn)成相應(yīng)的整數(shù)。注意:*p是一個(gè)字符(例如‘9’、‘4’),并不是一個(gè)數(shù),要將其轉(zhuǎn)成相應(yīng)的數(shù)字需令其減去’0’(不是’\0’),即*p一’0’就得到*p這個(gè)字符的相應(yīng)數(shù)字,例如’0’一’0’=0、’8’一’0’=8等。必須在程序的前面加#include,函數(shù)atol的作用是將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù),它是一個(gè)庫(kù)函數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,此工程包含一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Youareright.注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;classMyClass{public:MyClass(intx):number(x){}//ERROR********found********~MyClass(intx){}//ERROR********found********voidJudge(MyClass&obj);private:intnumber;};voidJudge(MyClass&obj){if(obj.number==10)cout<<"Youareright."<<endl;elsecout<<"Sorry"<標(biāo)準(zhǔn)答案:(1)~MyClass(){}(2)friendvoidJudge(MyClass&obj);(3)MyClassobject(10);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)是沒(méi)有形參的,因此把形參去掉即可,因?yàn)樵擃悰](méi)有動(dòng)態(tài)分配空間,所以不需要使用delete語(yǔ)句釋放空間。(2)主要考查考生對(duì)友元函數(shù)的掌握,在函數(shù)定義中有語(yǔ)句voidJudge(MyClass&obj),在main函數(shù)中有語(yǔ)句Judge(object);,即Judge函數(shù)是可以被類外函數(shù)調(diào)用的,并且定義時(shí)沒(méi)有加上類名和作用域,因此可以知道Judge函數(shù)是友元函數(shù),需要在類型前加上friend。(3)主要考查考生對(duì)構(gòu)造函數(shù)調(diào)用的掌握,題目要求輸出結(jié)果為:Youarefight.,在Judge函數(shù)體內(nèi)有語(yǔ)句:if(obj.number==10)cout<<"Youareright."<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請(qǐng)?jiān)跈M線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為:2010注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#includeusingnamespacestd;classCPolygon{public://*********found*********_________//純虛函數(shù)area聲明voidprintarea(void)//*********found*********{cout<<________<printarea();ppoly2->printarea();return0;}標(biāo)準(zhǔn)答案:(1)virtualintarea(void)=0;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)純虛函數(shù)的掌握,在定義純虛函數(shù)時(shí)要看在派生類中函數(shù)的定義:intarea(void)。由此可知純虛函數(shù)應(yīng)該為:virtualintarea(void)=0;。(2)主要考查考生對(duì)純虛函數(shù)的掌握情況,由voidprintarea(void)可知,該函數(shù)要打印面積,因此在此要調(diào)用純虛函數(shù)area,即cont<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾prog3下的工程prog3,其中包含了類Polynomial(“多項(xiàng)式”)的定義。形如5x4+3.4x2一7x+2的代數(shù)式稱為多項(xiàng)式,其中的5為4次項(xiàng)系數(shù),3.4為2次項(xiàng)系數(shù),一7為1次項(xiàng)系數(shù),2為0次項(xiàng)(常數(shù)項(xiàng))系數(shù)。此例缺3次項(xiàng),意味著3次項(xiàng)系數(shù)為0,即省略了0x3。在Polynomial中,多項(xiàng)式的各個(gè)系數(shù)存儲(chǔ)在一個(gè)名為coef的數(shù)組中。例如,對(duì)于上面的多項(xiàng)式,保存在coef[0]、coef[1]…coef[4]中的系數(shù)依次為:2.0、一7.0、3.4、0.0.5.0,也即對(duì)于i次項(xiàng),其系數(shù)就保存在coef[i]中。成員函數(shù)getValue計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值是由參數(shù)指定的。請(qǐng)補(bǔ)充完成文件Polynomial.cpp中成員函數(shù)getValue的定義。此程序的正確輸出結(jié)果應(yīng)為:Valueofp1whenx=2.0:59.8Valueofp2whenx=3.0:226.8注意:只在函數(shù)getValue的“//23332”和“/r/26662”之間填入若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//Polynomiac.h#includeusingnamespacestd;classPolynomial{//“多項(xiàng)式”類public:Polynomial(doublecoef[],intnum):coef(newdouble[num]),numofterms(num){for(inti=0;icoef[i]=coef[i];}~Polynomial(){delete[]coef;}//返回指定次數(shù)項(xiàng)的系數(shù)doublegetCoefficient(intpower)const{returncoef[power];}//返回在x等于指定值時(shí)多項(xiàng)式的值doublegetValue(doublex)const;private://系數(shù)數(shù)組,coef[0]為0次項(xiàng)(常數(shù)項(xiàng))系數(shù),coef[1]為1次項(xiàng)系數(shù),coef[2]為2次項(xiàng)(平方項(xiàng))系數(shù),余類推。Double*coef;intnum_of_terms;};voidwriteToFile(constchar*path);//Polymomial.cpp#include"Polynomial.h"doublePolynomial::getValue(doublex)const{//多項(xiàng)式的值value為各次項(xiàng)的累加和doublevalue=coef[0];//************333************//************666************returnvalue;}//main.cpp#include"Polynomial.h"intmain(){doublep1[]={5.0,3.4,-4.0,8.0},p2[]={0.0,-5.4,0.0,3.0,2.0);Polynomialpolyl(p1,sizeof(p1)/sizeof(double)),poly2(p2,sizeof(p2)/sizeof(double));cout<<"Valueofp1whenx=2.0:"<標(biāo)準(zhǔn)答案:for(inti=1;i0)//當(dāng)j大于零時(shí),做相乘操作,即完成該項(xiàng)的乘方動(dòng)作{x_value*=x;j--;}value+=coef[i]*xvalue;//把i項(xiàng)的乘方結(jié)果乘以該項(xiàng)系數(shù)后加進(jìn)value中}知識(shí)點(diǎn)解析:題目要求成員函數(shù)getValue計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值由參數(shù)指定,多項(xiàng)式的值value為各次項(xiàng)的累加和。由類的定義可知數(shù)組coef中存儲(chǔ)的是各次項(xiàng)的系數(shù),這里使用for循環(huán)來(lái)完成題目要求,當(dāng)次項(xiàng)為0時(shí),value=coef[0]。當(dāng)次項(xiàng)為1時(shí),value=coef[1]*x+coef[0]。依次類推直到X的最高次數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾pmjl下的工程projl,此工程中含有一個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Thevalueis:10注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMember{//ERROR**********found**********private:Member(intval):value(val){)intvalue;);classMyClass{Memberm;public://ERROR**********found**********MyClass(intval){}intGetValue()const{returnm.value;}};intmain(){MyClass*obj=newMyClass(i0);//ERROR**********found**********下列語(yǔ)句輸出obj指向類中的value值cout<<“Thevalueis:”<標(biāo)準(zhǔn)答案:(1)public:(2)MyClass(intval):一m(val){}或MyClass(intval){一m=val}(3)cout<<“Thevalueis:”<GetValue()<知識(shí)點(diǎn)解析:本題主要考查的是Member類和MyClass類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和類的指針。類的指針調(diào)用類的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“一>”,而不是“.”,這是最容易出錯(cuò)的地方。私有成員使用private,公有成員使用public,保護(hù)成員使用protected,類的構(gòu)造函數(shù)一定是公有成員函數(shù)?!窘忸}思路】(1)主要考查考生對(duì)私有成員和公有成員的掌握,先看改錯(cuò)語(yǔ)句的下一條語(yǔ)句:Member(intval):value(val){},該語(yǔ)句是一個(gè)構(gòu)造函數(shù),因此我們可以得出此處為公有成員,因?yàn)闃?gòu)造函數(shù)不可能是私有成員。(2)主要考查構(gòu)造函數(shù),構(gòu)造函數(shù)要對(duì)類的成員進(jìn)行初始化,因此在這里使用成員列表初始化,即MyClass(intval):一m(val){}或MyClass(intval){一m=val}。(3)指針調(diào)用類的成員函數(shù)時(shí),應(yīng)使用標(biāo)識(shí)符“一>”?!窘忸}寶典】判斷該成員是公有成員還是私有成員的方法很多,不必一一死記,只要記住公有成員可以被類外函數(shù)調(diào)用,私有成員則不可以,類的構(gòu)造函數(shù)一定是公有成員函數(shù)就可以了。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp,其中定義了CharShape類、Tfian~e類和Rectangle類。CharShape是一個(gè)抽象基類,它表示由字符組成的圖形(簡(jiǎn)稱字符圖形),純虛函數(shù)Show用于顯示不同字符圖形的相同操作接口。TfanOe和Rectangle是CharShape的派生類,它們分別用于表示字符三角形和字符矩形,并且都定義了成員函數(shù)Show,用于實(shí)現(xiàn)各自的顯示操作。程序的正確輸出結(jié)果應(yīng)為:****************########################請(qǐng)閱讀程序,分析輸出結(jié)果,然后根據(jù)以下要求在橫線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線。(1)將Triangle類的成員函數(shù)Show補(bǔ)充完整,使字符三角形的顯示符合輸出結(jié)果。(2)將Rectangle類的成員函數(shù)Show補(bǔ)充完整,使字符矩形的顯示符合輸出結(jié)果。(3)為類外函數(shù)fun添加合適的形參。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。{/proj2.cpp#includeusingnamespacestd;classCharShape{public:CharShape(charch):一ch(ch){};virtualvoidShow()=0;protected:charch;//組成圖形的字符};classTriangle:publicCharShape{public:Triangle(charch,intr):Char—Shape(ch),一rows(r){}voidShow();private:introws;//行數(shù)};classRectangle:publicCharShape{public:Rectangle(charch,intr,intC):CharShape(ch),_rows(r),一cols(c){}voidShow();private:introws,cols;//行數(shù)和列數(shù)};voidTriangle::Show()//輸出字符組成的三角形{for(inti=1;i<=rows;i++){//**********found**********for(intJ=1;J<=——;J++)cout<<ch;cout<標(biāo)準(zhǔn)答案:(1)i*2—1(2)一rows(3)一cols(4)CharShape&cs知識(shí)點(diǎn)解析:本題主要考查抽象類CharShape類及其派生類Triangle和Rectangle,其中涉及構(gòu)造函數(shù)、純虛函數(shù)、成員函數(shù)和函數(shù)調(diào)用。著重考查函數(shù)Show()在Triangle類與在Rectangle類中的定義,填空前應(yīng)先理解Show()函數(shù)在該類中的功能。【解題思路】(1)考查for循環(huán)語(yǔ)句,該語(yǔ)句所在的函數(shù)的功能是輸出字符組成的三角形。從外層循環(huán)中可以看出下標(biāo)i代表行數(shù),那么下標(biāo)j就代表每一行字符的個(gè)數(shù),因?yàn)橐敵龅氖侨切?,所以每一行的個(gè)數(shù)與該行的行數(shù)相關(guān),即j<=i*2一1;。(2)考查for循環(huán)語(yǔ)句,該語(yǔ)句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長(zhǎng)和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)i不大于行數(shù)即可。(3)考查for循環(huán)語(yǔ)句,該語(yǔ)句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長(zhǎng)和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)j不大于列數(shù)即可。(4)主要考查考生對(duì)虛函數(shù)的掌握,該語(yǔ)句所在的函數(shù)是普通函數(shù)fun,題目要求為fun函數(shù)添加形參。從函數(shù)體中可以知道形參名為cs,那么形參的類型是什么呢?就是抽象類CharShape,因此要使用CharShape&cs才可以實(shí)現(xiàn)題目要求輸出的內(nèi)容。【解題寶典】本題主要考查考生對(duì)for循環(huán)語(yǔ)句的掌握及虛函數(shù)的使用,for循環(huán)是最常考到的知識(shí)點(diǎn),要結(jié)合好上下文的語(yǔ)義來(lái)填寫(xiě),首先要清楚該語(yǔ)句所在函數(shù)要實(shí)現(xiàn)的功能,其次要知道該語(yǔ)句的作用。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生目錄proj3下的工程文件proj3,此工程中包含一個(gè)源程序文件proj3.cpp,其功能是從文本文件in.dat中讀取全部整數(shù),將整數(shù)序列存放到intAn’ay類的對(duì)象中,然后建立另一對(duì)象myArray,將對(duì)象內(nèi)容賦值給myArray。類intArray重載了“=”運(yùn)算符。程序中給出了一個(gè)測(cè)試數(shù)據(jù)文件input,不超過(guò)300個(gè)的整數(shù)。程序的輸出是:1011131620要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//*********333*********”與“//*********666*********”之間。實(shí)現(xiàn)重載賦值運(yùn)算符函數(shù),并將賦值結(jié)果在屏幕輸出。格式不限。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//intArray.hclassintArray{private:int*array;intlength;public:intArray(char*filename);intArray();intArray&operator=(constintAr。ray&src);一intArray();voidshow();};voidwriteTOFile(constchar*path);//main.cpp#include#include#include#include“intArray.h”usingnamespacestd;intArray::intArray(){length=10;array=newint[1ength];}intArray::intArray(char*filename){ifstreammyFile(filename);array=newint[300];length=0;while(myFile>>array[1ength++])length_____;myFile.close();}intArray&intArray::operator=(constintArray&src){if(array!=NULL)delete[]array;length=src.1ength;array=newint[1ength];//*********333*********//*********666*********return*this;}intArray::一intArray(){delete[]array;}voidintArray::show(){intstep=0;for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i知識(shí)點(diǎn)解析:本題主要考查intAtray類,其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、運(yùn)算符重載、析構(gòu)函數(shù)及其他成員函數(shù)?!窘忸}思路】主要考查考生對(duì)運(yùn)算符重載的掌握,該函數(shù)要重載運(yùn)算符“=”,該運(yùn)算符的意思是賦值。先看該函數(shù)的其他語(yǔ)句:if(array!=NULL)delete[]array;length=src.1ength;array=newint[1ength];第一條語(yǔ)句是把原來(lái)動(dòng)態(tài)數(shù)組釋放,第二條語(yǔ)句是把形參$1rc的成員length賦值給變量length,第三條語(yǔ)句是給指針array分配內(nèi)存。接下來(lái)要把動(dòng)態(tài)數(shù)組中的值逐個(gè)賦給array數(shù)組,在這里使用for循環(huán)語(yǔ)句,循環(huán)變量i的范圍是0~length,并進(jìn)行賦值操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾pmjl下的工程projl,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類ABC和主函數(shù)main。程序文本中位于每行“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:2123注意:只修改每個(gè)“//ERROR****found*****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#includeusingnamespacestd;clasSABC{public://ERROR**********found**********ABC(){a=0;b=0;C=0;}ABC(intaa,intbb,intCC);voidSetab(){++a,++b;)intSum(){returna+b+C;)private:inta,b;constintC;};ABC::ABC(intaa,intbb,intCC):C(CC){a=aa;b=bb;)intmain(){ABCx(1,2,3),Y(4,5,6);ABCZ,*W=&Z;W一>Setab();//ERROR**********found***********intsl=X.Sum()+Y一>Sum();cout<標(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)解析:本題考查的是ABC類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和常變量私有成員。構(gòu)造函數(shù)中因?yàn)橐o常變量私有成員初始化,所以必須使用成員列表初始化來(lái)賦初值。只有類的指針在調(diào)用成員函數(shù)時(shí)才使用標(biāo)識(shí)符“一>”?!窘忸}思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,根據(jù)私有成員的定義:conatintc;可知,c為常變量,因此構(gòu)造函數(shù)必須使用成員列表初始化來(lái)給c賦初始值。(2)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第一條語(yǔ)句:ABCx(1,2,3),y(4,5,6);可知,x和y都是ABC類,但不是指針,因此它們調(diào)用ABC類的成員函數(shù)要使用標(biāo)識(shí)符“.”,而不是“一>”。(3)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第二條語(yǔ)句:ABCz,*w=&z;可知,w是ABC類的指針,指向z,因此w調(diào)用A:BC類的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“一>”,而不是“.”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類Base和Derived,以及主函數(shù)main。程序文本中位于每行“//****found****”下面的一行內(nèi)有一處或多處下畫(huà)線標(biāo)記,請(qǐng)?jiān)诿總€(gè)下畫(huà)線標(biāo)記處填寫(xiě)合適的內(nèi)容,并刪除下畫(huà)線標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出應(yīng)為:sum=55。注意:只在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;claSSBase{public:Base(intml,intm2){meml=ml;mem2=m2;}intsum(){returnmeml+mem2;}private:intmeml,mem2;//基類的數(shù)據(jù)成員};//派生類Derived從基類Base公有繼承//**********found***********classDerived:{public://構(gòu)造函數(shù)聲明Derived(intml,intm2,intm3);//sum函數(shù)定義,要求返回meml、mem2和mem3之和//**********found***********intsum(){return——+mem3;)private:intmem3;//派生類本身的數(shù)據(jù)成員};//構(gòu)造函數(shù)的類外定義,要求由m1和m2分別初始化meml和mem2,由m3初始化mem3//**********found**********__________Derived(intml,intm2,intm3)://**********found***********__________,mem3(m3){}intmain(){Basea(4,6);Derivedb(10,15,20);intsum=a.sum()+b.sum();cout<<“sum=”<標(biāo)準(zhǔn)答案:(1)publicBase(2)Base::sum()(3)Derived::(4)Base(m1,m2)知識(shí)點(diǎn)解析:本題考查的是Base類及其派生類Derived類,其中涉及構(gòu)造函數(shù)和成員函數(shù)。構(gòu)造函數(shù)在類外定義時(shí),因?yàn)闃?gòu)造函數(shù)是屬于類的函數(shù),所以函數(shù)前也要加上類名和作用域符,派生類的構(gòu)造函數(shù)要先給基類初始化,使用成員列表初始化?!窘忸}思路】(1)主要考查考生對(duì)公有繼承的掌握情況,根據(jù)題目要求:派生類Derived從基類Base公有繼承,因此這里使用public來(lái)公有繼承。(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目對(duì)sum函數(shù)的要求:sum函數(shù)定義,要求返回mem1、mem2和mem3之和,因此這里直接調(diào)用基類的sum函數(shù),再加上mem3就滿足題目要求。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,由于Derived的構(gòu)造函數(shù)在類外定義,因此要加上類名和作用域符,即Derived::。(4)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,因?yàn)镈erived是Base類的派生類,所以其構(gòu)造函數(shù)要使用成員列表初始化先給Base初始化。【解題寶典】主要考查考生對(duì)公有繼承、成員函數(shù)和構(gòu)造函數(shù)的掌握程度,在派生類中直接調(diào)用基類的函數(shù),要在前面加上基類名和作用域符,從而防止派生類中也有相同函數(shù)時(shí)產(chǎn)生的二義性。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中包含主程序文件main。cpp和用戶定義的頭文件Array.h,整個(gè)程序包含有類Array的定義和主函數(shù)main的定義。請(qǐng)把主程序文件中的Array類的成員函數(shù)Contrary()的定義補(bǔ)充完整,經(jīng)補(bǔ)充后運(yùn)行程序,得到的輸出結(jié)果應(yīng)該是:585,4,3,2,10,0,8.4,5.6,4.5,3.4,2.3,1.2注意:只允許在“//**********333**********”和“//**********666**********”之間填寫(xiě)內(nèi)容,不允許修改其他任何地方的內(nèi)容。//Array.h#includeusingnamespacestd;templateclassArray{//數(shù)組類public:Array<=m){cout<<“下標(biāo)越界!”<voidArray::Contrary(){//補(bǔ)充函數(shù)體//*********333*********//*********666*********}intmain(){intsl[5]={1,2,3,4,5);doubles2[6]={1.2,2.3,3.4,4.5,5.6,8.4};Arraydl(sl,5);Arrayd2(s2,6);inti;d1.Contrary();d2.Contrary();cout<標(biāo)準(zhǔn)答案:for(inti=0,j=m一1;i知識(shí)點(diǎn)解析:本題考查的是Array類,其中涉及構(gòu)造函數(shù)、const函數(shù)和運(yùn)算符重載。交換數(shù)組中前后對(duì)稱的元素的值,要使用兩個(gè)下標(biāo)i和j,一個(gè)代表第一個(gè)元素,一個(gè)代表最后一個(gè)元素,交換后i++,j一即可?!窘忸}思路】主要考查考生對(duì)交換算法的掌握情況,根據(jù)題目對(duì)要完成的函數(shù)Contrary的要求:交換數(shù)組a中前后位置對(duì)稱的元素的值。這里取下標(biāo)i=0,即為數(shù)組中的第一個(gè)元素,j=m一1,即為數(shù)組中的最后一個(gè)元素,利用中間值temp交換元素的值,然后i逐次遞增的同時(shí)j逐次遞減,再交換,循環(huán)到i>j時(shí)停止交換即可?!窘忸}寶典】主要考查考生對(duì)數(shù)組中元素交換的掌握情況,交換算法要使得兩個(gè)下標(biāo)i和j移動(dòng)的范圍能覆蓋全部元素,同時(shí)要確定for循環(huán)的終止條件。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有誤,請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序在界面上輸出為:平均值為:29最大值為:112最小值為:-11注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面。修改該語(yǔ)句即可。#includeUSingnamespacestd;intmain(){inti;AvelMin;Max;intdata[8].{0,112,43,78,一11,一6,7,9);Ave=0;for(i=0;i<8;i++)∥********error********Ave=data[i];Ave/=8;cout<<“平均值為:”<Min)Min=data[i];}cout<<”最大值為.II<標(biāo)準(zhǔn)答案:(1)Ave+=data[i];或Ave=Ave+data[i];(2)if(data[i]>Max)Max=data[i];(3)if(data[i]知識(shí)點(diǎn)解析:(1)觀察程序可知,第一個(gè)for循環(huán)是求數(shù)組各個(gè)元素的和,逐次將每個(gè)元素值加起來(lái),而程序當(dāng)中是逐個(gè)賦值,因此第l標(biāo)識(shí)處應(yīng)將Ave=data[i]改成Ave+=data[i]或Ave=Ave+data[i]。(2)根據(jù)題意再求數(shù)組當(dāng)中元素的最大最小值,用變量Max記錄最大值,Min記錄最小值,在for循環(huán)中,逐次比較,如果該元素值比當(dāng)前Max大,則Max取該元素值,因此第2標(biāo)識(shí)處正確的應(yīng)該是if(data[i]>Max)Max=data[i]。(3)同樣如果數(shù)組該元素值比Min小,則Min取該元素值。因此,兩個(gè)if中條件判斷錯(cuò)誤,第3標(biāo)識(shí)處“if(data[i]>Min)Min=data[i]”改成“if(data[i]二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。補(bǔ)充函數(shù)convert(longS,long*str),使之從低位開(kāi)始取出長(zhǎng)整型變量S中奇數(shù)位上的數(shù),依次存放在數(shù)str中。例如,當(dāng)S中的數(shù)為:7654321時(shí),str中的數(shù)為:7531。注意:請(qǐng)勿改動(dòng)主函數(shù)。#includevoidconvert(10ngS,long*str){}voidmain(){longS,res;cout<>s;convert(s,&res);cout<<”TheresultiS:”(標(biāo)準(zhǔn)答案:longsl=10;*str=s%10;//先取個(gè)位數(shù)while(s>0){S=s/100;//每次除以i00,*str=s%10*s1+*str;//取除以100后的個(gè)位數(shù),str增加1位s1=s1*10;}知識(shí)點(diǎn)解析:(1)由審題分析可知,奇數(shù)位即為個(gè)位數(shù)、百位數(shù)、萬(wàn)位數(shù)……,取個(gè)位數(shù)比較簡(jiǎn)單,S%10便得到了個(gè)位數(shù)。獲取百位數(shù)可由s/100后,再和10取余得到,同樣萬(wàn)位數(shù)可由s/10000,再和10取余得到,從百位數(shù)開(kāi)始后面的奇數(shù)位都是在上次的基礎(chǔ)上再除以100后再取余數(shù),因此可利用循環(huán)。(2)在循環(huán)外先取S的個(gè)位數(shù),然后進(jìn)入循環(huán),s=s/100,獲取除以100的個(gè)位數(shù)方法為s%10,這個(gè)數(shù)是*str的高一位,乘以它所在*str中的位置的權(quán)值,然后和以前的值相加便得到這次*str值,如此循環(huán),直到s為0為止。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整。請(qǐng)按要求完成下列操作,將類Date的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月和日,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對(duì)象的默認(rèn)值為:year=l,month=l,day=l,請(qǐng)?jiān)谧⑨尅?*******2********之后添加適當(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)谧⑨尅?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成成員函數(shù)print()的類外定義,使其以“年一月一日”的格式將Date對(duì)象的值輸出到屏幕上,例如:2008.8.8。請(qǐng)?jiān)谧⑨尅?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。1#include2classDate{3public:4∥********2********56Date(inty,intm,intd)7{8∥********3********910}11voidprint()con.qt;12private:3.3‖datamember14∥********1********1516};17voidDate::print=()const18{19∥********4********2021}22intmain()(23Datenation,a1._day(1949,10,1);24nationalday.print();25return0;26}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intyear,month,day,(2)添加語(yǔ)句:Date(){year=1;month=1;day=1;}(3)添加語(yǔ)句:year=y;month=m;day=d;(4)添加語(yǔ)句:cout<知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類Date和函數(shù)print實(shí)現(xiàn)各種輸出操作。解題思路(1)題目1要求“定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月和日,它們都是int型的數(shù)據(jù)”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對(duì)象的默認(rèn)值為:year=1,month=1,day=1”。在CH中,構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的名字與類同名。在Date構(gòu)造函數(shù)體內(nèi),根據(jù)題目要求,設(shè)置變量默認(rèn)值“year=1,month=1,day=1”,即:“Date0{yem=1;month=1;day=1;}”。(3)題目3要求“完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員year、mohth和day分別初始化為參數(shù)y、m和d的值?!痹跇?gòu)造函數(shù)Date(inty,intm,intd)函數(shù)體內(nèi),即標(biāo)識(shí)3下,添加賦值語(yǔ)句,將y,m,d賦值給year,month,day,即“year=y;month=m;day=d;”。(4)題目4要求“完成成員函數(shù)print()的類外定義,使其以“年一月~日”的格式將Date對(duì)象的值輸出到屏幕上”。在程序中的voidDate::print0cons

溫馨提示

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