國家二級C++機試(操作題)模擬試卷2(共25題)_第1頁
國家二級C++機試(操作題)模擬試卷2(共25題)_第2頁
國家二級C++機試(操作題)模擬試卷2(共25題)_第3頁
國家二級C++機試(操作題)模擬試卷2(共25題)_第4頁
國家二級C++機試(操作題)模擬試卷2(共25題)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

國家二級C++機試(操作題)模擬試卷2(共9套)(共25題)國家二級C++機試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運行有問題,請改正main()函數(shù)中的錯誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯誤的語句在/********found********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#includeclassC0{public:/********error********/staticintn=0:C0(){n++:}~C0(){n--;}};/********error********/intC0::n;voidmain(){C0obj;C0obj2[7];C0*c=NULL;c=&obj:/********error********/cout<標準答案:(1)“staticintn=0”應改為“staticintn;”。(2)“intCO::n;”應改為“intCO::n=0;”。(3)“cout<<@C@n<n<知識點解析:本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用C的對象,應改為“cout<n<二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(intn)的功能是在n行n列的矩陣中,每行都有最大的數(shù),本程序求這n個最大數(shù)中的最小一個,并作為參數(shù)返回。注意:不能修改程序的其他部分,只能修改fun函數(shù)。試題程序:#include#defineN100inta[N][N];intfun(intn){}voidmain(){intn:cout<<"pleaseinputN:"<>n;for(inti=0;i(n;i++)for(intj=0;j>a[i][j];}cout<<"TheminOfmaxnumbersis"<標準答案:introw;intmax;intmin;intcol;for(row=0;row(n;row++)//外循環(huán)求行最大值中的最小值{for(max=a[row][0],col=l;col知識點解析:本題有兩層循環(huán),內(nèi)層循環(huán)求每一行的最大值,外層循環(huán)求最小值。求最大值,首先將最大值賦值為每行第一列的元素,然后依次循環(huán)比較。將求出的第一個最大值賦值為第一個最小值,然后將以后求得的最大值依次與之比較,求出所有值的最小值。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。(1)基類People完成打印功能,定義其中的打印函數(shù)為虛函數(shù),請在注釋1后添加適當?shù)恼Z句。(2)類Boy繼承于People,在構造函數(shù)中設置性別為1,請在注釋2后添加適當?shù)恼Z句。(3)類Girl繼承于People,在構造函數(shù)中設置性別為0,請在注釋3后添加適當?shù)恼Z句。(4)實現(xiàn)函數(shù)fun,用于傳遞不同的類型,打印出性別,請在注釋4后添加適當?shù)恼Z句。輸出的內(nèi)容如下:Sex=BoySex=Girl注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。試題程序:#includeclassPeople{public://********1********voidprint(){}intsex;};classBoy:publicPeople{publictBoy(){//********2********}voidprint(){cout<<"BOy"<標準答案:(1)將“voidprint(){};”補充完整為“virtualvoidprint(){};”。(2)應添加“sex=1;”。(3)應添加“sex=0;”。(4)應添加“voidfun(People&p)”。知識點解析:第1處要求“基類People完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以將第1處的“voidprint(){}”語句修改為“virtualvoidprint(){}”。第2處要求“類Boy繼承于People,在構造函數(shù)中設置性別為1”?;怭eople中變量sex用來存放性別,Boy繼承People,所以Boy中性別的變量可以使用基類中的sex變量,設置性別為1,即“sex=1;”。第3處要求“類Girl繼承于People,在構造函數(shù)中設置性別為0”。在第3處添加語句“sex=0;”。第4處要求“實現(xiàn)函數(shù)fun,用于傳遞不同的類型,打印出性別”。根據(jù)“p.print();”語句知道,fun函數(shù)的形參為指針p,由于它調(diào)用了基類People中的成員函數(shù)print,所以p的基類為People,即添加函數(shù)fun的定義為“voidfun(People&p)”。國家二級C++機試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正其中的錯誤,使程序正確運行,并且使程序輸出的結(jié)果為OK注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#includeclassTC{public:TC(){a=b=0:}private:inta,b;};classTC1:publicTC{public:TC1(){}//******error******virtualvoidfunc();};classTC2:publicTC1{public:TC2(){a=0;b=0;}voidfunc(){//******error******cout<<"OK”rune();}標準答案:(1)應改為“virtualvoidfunc()=0;”。(2)應改為“cout<<"OK"<知識點解析:本題中TC1類中的func函數(shù)是純虛函數(shù),純虛函數(shù)的定義格式為virtual(函數(shù)類型)(函數(shù)名)(<參數(shù)表>)=0”,因此第1處的語句應為“virtualvoidfunc()=0;”。func函數(shù)沒有參數(shù)表。編譯程序后發(fā)現(xiàn)第2處的語句有錯誤,cout流中的數(shù)據(jù)是用流插入運算符“<<”順序加入的,因此“<”不正確,應改成“cout<<"OK"<二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。函數(shù)sum(intn)返回1,2,3,…,n的和。其中n大于0。程序要求使用遞歸實現(xiàn)上述功能。注意:不能修改程序的其他部分,只能補充sum函數(shù)。試題程序:#include#include(cmath)intsum(intn){}voidmain(){tout<<"1+2+3+…+100="<標準答案:return(n==1)?1:n+sum(n-1);知識點解析:本題主要考查三目運算符?:的使用和遞歸函數(shù)的編制。程序功能是計算前n個自然數(shù)的和,n為參數(shù)。程序的運算過程如下,不是一般性,假設n為3,首先執(zhí)行sum(3),因為3不等于1,所以return語句返回的值為3+sum(3-1),然后執(zhí)行sum(3-1)即sum(2),2不等于1,所以return語句返回的值為2+sum(2-1),然后執(zhí)行sum(2-1)即sum(1),因為1等于1,所以return語句返回的值為1,即問號后的值,所以最終結(jié)果為3+2+1=6,而題中n為100,所以結(jié)果為5050。國家二級C++機試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果為sizeof(s1)=5sizeof(s2)=10sizeof(s3)=1注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構,錯誤的語句在//******error******的下面。(1)不能刪除assert()語句。(2)只能修改后面的數(shù)字。提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。試題程序:#include#includevoidmain(){char*s1="abe";//******error******assert(sizeof(s1)==3);cout<<"sizeof(s1)=5"<標準答案:(1)應改為“assert(sizeof(s1)==4);”。(2)應改為“assert(sizeof(s2)==10);”。(3)應改為“assert(sizeof(s3)==1);”。知識點解析:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因為str1的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(intN[4])的功能是用4個數(shù)字,組成互不相同且無重復數(shù)字的3位數(shù),并將滿足所有條件的數(shù)字輸出到屏幕,并且每輸出一個3位數(shù)就換一行。程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、0。組成所有的排列后再去掉不滿足條件的排列。如果判定第一個數(shù)字是0,則也去掉。試題程序:#includevoidfun(intN[4]){}intmain(){intN[4]={1,2,3,0);fun(N);return0;}標準答案:inti,j,k;for(i=0;i<4;i++)//百位循環(huán){for(j=0;j(4;j++)//十位循環(huán)for(k=0;k(4;k++)//個位循環(huán){if(i!=j&&j!=k&&k!=i&&N[i]!=0)//當三位數(shù)不同,并且百位不為0{cout<知識點解析:本題利用3層循環(huán),對3位數(shù)字是否相同進行判斷。如果3位數(shù)不同,并且百位不為0,那么依次輸出這3位數(shù),即由3位數(shù)組成的數(shù)字。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整,使其輸出的結(jié)果為TCATCBTCC(1)完成類B虛繼承于A,請在注釋1后添加適當?shù)恼Z句。(2)完成類C虛繼承于A,請在注釋2后添加適當?shù)恼Z句。(3)完成類D繼承于B,C,請在注釋3后添加適當?shù)恼Z句。(4)函數(shù)fun通過調(diào)用基類的fun,完成所輸出的內(nèi)容,請在注釋4后添加適當?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#includeclassTCA{public:voidfun(){cout<<"TCA"<標準答案:(1)將“classTCB:”補充完整為“classTCB:virtualpublicTCA”。(2)將“classTCC:”補充完整為“classTCC:virtualpublicTCA”。(3)將“classTCD:”補充完整為“classTCD:publicTCB,publicTCC”。(4)應添加“TCA::fun();TCB::fun();TCC::fun();”。知識點解析:本題中第1處要求“完成類B虛繼承于A”。在C++中,聲明虛基類的一般形式為:class派生類名:virtual繼承方式基類名,由題目知道TCA為基類,TCB為派生類,所以第1處的語句修改為“classTCB:virtualpublicTCA”。根據(jù)第2處和第3處的要求將標識2和3下的語句修改為“classTCC:virtualpublicTCA”和“classTCD:publicTCB,publicTCC”。第4處要求“函數(shù)fun通過調(diào)用基類的fun,完成所輸出的內(nèi)容”。在C++中調(diào)用基類的成員函數(shù),要使用作用域限定符“::”,類名A::函數(shù)fun,就是調(diào)用類A的函數(shù)fun,根據(jù)題目中的要求補全對類TCA、TCB以及TCC中的fun函數(shù),即“TCA::fun();TCB::fun();TCC:!fun():”。國家二級C++機試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為150200注意:錯誤的語句在//******error******的下面,修改該語句即可。提示:定義Numl為一個整型數(shù)據(jù)位長的變量。試題程序:#include//********error********struct{//********error********intNum1:1;intNum2:}MyStruct;voidmain(){MyStructmstr;mstr.Num1=150:mstr.Num2=15;//********error********int*ptr=&mstr.Num1;cout<<*ptr<標準答案:(1)“typedefstruct”。(2)“intNum1:32;”或“intNum1;”。(3)“int*ptr=(int*)&mstr;”。知識點解析:第1處是定義結(jié)構體,結(jié)構體定義的一般形式為struct(結(jié)構體名){<成員列表>}<變量名列表>;程序當中定義結(jié)構體名放在后面,MyStruct為結(jié)構體變量類型,相當于typedef為已有的類型定義一個新的類型,第1處應改為“typedefstruct”。第2處是定義Num1為一個整型數(shù)據(jù)變量,整型數(shù)據(jù)位數(shù)為32(4字節(jié)),因此第2處應改成“intNum1:32;”或“intNum1;”。ptr為整型數(shù)據(jù)指針,mstr為MyStruct類型結(jié)構變量,兩者類型不一致應該做強制類型轉(zhuǎn)換,第3處應改成“int*ptr=(int*)&mstr;”,表示將mstr的地址給ptr,ptr指向MyStruct的第一個域Numl,Numl也是整形,類型一致,故可通過ptr指針來改變Num1的值。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(intn)的功能是實現(xiàn)對一個整數(shù)的加密,具體的加密方法是一個4位長的整數(shù),用每位數(shù)字加上3然后除以9的余數(shù)代替該數(shù)字,再將第1位和第4位交換,第2位和第3位交換,然后返回得到的密碼。程序輸出結(jié)果為18642075注意:不能修改其他部分的代碼。試題程序:#include#include(cmath)intfun(intn){}intmain(){inti=1357;cout<標準答案:inti,a[4],t;a[0]=n%10;//取整型n的第1位數(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-1-a[1]*10+a[0];//重組,返回加密數(shù)字知識點解析:本題首先取得要加密整數(shù)的每一位數(shù)字,并存入數(shù)組。根據(jù)加密算法,利用循環(huán)實現(xiàn)每位數(shù)字加3,再除以9取余。根據(jù)加密算法進行數(shù)字交換,最后重組,返回密碼。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示坐標的類TC1,但類TC1的定義并不完整,按要求完成下列操作,將類的定義補充完整。(1)聲明TC2類為TC1類的友元類,請在注釋1后添加適當?shù)恼Z句。(2)完成類的構造函數(shù),分別對成員變量賦值,請在注釋2后添加適當?shù)恼Z句。(3)完成類的構造函數(shù),分別對成員變量賦值,請在注釋3后添加適當?shù)恼Z句。(4)完成計算平面上兩點之間距離的函數(shù)JuL,計算的方法為X坐標之差的平方與Y坐標之差的平方之和的開方。請在注釋4后添加適當?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。試題程序:#include#include(cmath)usingnamespacestd;classTC1{//********1********public://********2********{X=a;Y=b:}//********3********{X=a:Y=0;}voidprint(){cout<<"x="<標準答案:(1)應添加“friendclassTC2;”。(2)應添加“TC1(floata,floatb)”。(3)應添加“TC1(floata)”。(4)應添加“result=sqrt((p.X-q.X)*(p.X-q.X)+(P.Y-q.Y)*(p.Y-q.Y));”。知識點解析:本題中第1處要求“聲明TC2類為TC1類的友元類”。C+4-中聲明友元類的一般形式為“friend類名;”,所以這里補全“friendclassTC2;”。第2處要求“完成類的構造函數(shù),分別對成員變量賦值”。程序中TC1類的構造函數(shù)缺少定義,構造函數(shù)首部的一般格式為構造函數(shù)名(類型1形參1,類型2形參2,……),所以在第2處補全“TC1(floata,floatb)”。第3處要求“完成類的構造函數(shù),分別對成員變量賦值”。同理,第3個標識下補全“TC1(floata)”。第4處要求“完成計算平面上兩點之間的距離函數(shù)JuL”。題目中已經(jīng)給出了計算方法,X坐標之差的平方與Y坐標之差的平方之和的開方。利用C++中的開方函數(shù)sqrt補全函數(shù)中的兩點之間的距離。即“result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y));”。國家二級C++機試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用Vc++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include//******error******voidmain{//******error******intm=0142;//******error******intn=0X27:intq=32;cout<標準答案:(1)“voidmain()”。(2)“intm=0144;”。(3)“intn=0X25;”或“intn=0x25;”。知識點解析:本題主要考查了主函數(shù)定義及不同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain()”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,十進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0X25;”或“intn=0x25;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請完成函數(shù)fun(intx),該函數(shù)的功能是將X的值轉(zhuǎn)換成二進制數(shù)輸出到屏幕,并且在函數(shù)中調(diào)用寫函數(shù)WriteFile將結(jié)果輸出到2.txt文件中。例如x=6,6的二進制數(shù)為110,則輸出到屏幕的數(shù)為110。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構。試題程序:#include(iostream)#include(fstream)#include(cmath)usingnamespacestd;voidWriteFile(char*str){ofstreamout1;out1.open("2.txt",ios_base::binary|ios_base::app);for(inti=0;str[i]!=0;i++)out1.put(str[i]);out1.close();}voidfun(intx){}voidClearFile(){ofstreamout1;out1.open("2.txt"):out1.close();}intmain(){ClearFile();fun(13);return0;}標準答案:charstr[32];inti;for(i=30;i>=0;i--)//計算二進制{if(x%2)str[i]=’1’;//求余,如果余不為零字符串str第i位為1elsestr[i]=’0’;//否則為0x>>=1:if(!x)break;}str[31]=’\0’;//串加尾符cout<<&str[i]<知識點解析:本題要求定義存放二進制的字符串str。利用for循環(huán)對十進制數(shù)字x進行取余運算,直到余數(shù)為0結(jié)束。如果取余結(jié)果為0,則二進制字符串這個字符位的值為0,否則為1。調(diào)用WriteFile,將運算結(jié)果存入文件。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用Vc++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。(1)完成TC的構造函數(shù),請改正注釋1后的錯誤。(2)完成func函數(shù)定義,請改正注釋2后的錯誤。(3)初始化CmyClass的成員變量Num3為4,請改正注釋3后的錯誤。(4)完成func函數(shù),請改正注釋4后的錯誤。輸出的結(jié)果為Num1=12Num2=18Num3=16Num1=4Num2=2Num3=19注意:除在指定位置添加語句之外,不要改動程序中的其他內(nèi)容。試題程序:#includeclassTC{public://********1********TC(inti,intj){Num1=i:Num3+=i:}voiddisplay(){cout<<"Num1="<標準答案:(1)將“TC(inti.intj)”補充完整為“TC(inti,intj):Num2(j)”。(2)應添加“friendvoidfunc();”。(3)應添加“intTC::Num3=4;”。(4)將“obj.AddNum()”補充完整為“obj.AddNum(2);”。知識點解析:本題在第1處完成類的構造函數(shù)初始化類的成員變量,常數(shù)據(jù)成員也必須初始化,并且不能被更新,常數(shù)據(jù)成員的初始化只能通過構造函數(shù)的成員初始化類表進行,因此第1處的語句應為“TC(inti,intj):Num2(j)”,i用來初始化Num1和Num3,j初始化Num2。第2處完成func的函數(shù)定義,由審題分析可知,函數(shù)fune為類的友元,故第2處的語句應為“friendvoidfunc();”。第3處的語句是靜態(tài)成員的初始化,靜態(tài)數(shù)據(jù)成員的初始化格式為“(數(shù)據(jù)類型)(類名)::(靜態(tài)數(shù)據(jù)成員)一(初始值)”,因此第3處的語句應為“intTC::Num3=4;”。成員函數(shù)AddNum帶有一個整型參數(shù),因此調(diào)用此函數(shù)時必須有參數(shù)傳入,可由程序運行結(jié)果分析得知傳入的參數(shù)值的大小。在fun函數(shù)內(nèi),定義TCobj(1,2)后,ohj.Num1=1,obj.Num2=2,Num3=16+1=17,obj.Num1=4,Num1為4,obj.Num2為常數(shù)據(jù)成員,其值不會改變,N用AddNum函數(shù)后調(diào)用顯示函數(shù)顯示成員變量值,可知Num3為19,因此AddNum()的參數(shù)為19-17=2,即第4.處的語句應為“ohj.AddNum(2):”。國家二級C++機試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為m=-10n=-10p=0q=-10z=A注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#includevoidmain(){doublem=10:floatn=10;boolp=1;intq=10;charz=’a’;m=-m://******error******n=~n://******error******p=-p;//******error******q=~q0z=z-32:cout<<"m="<標準答案:(1)“n=-n;”。(2)“p=!p;”。(3)“q=-q;”。知識點解析:由題目要求的運行結(jié)果可知,第1個標識和第3處的語句是對變量n和q取反,求一個正數(shù)的相反數(shù)可以通過算數(shù)運算符“-”得到,第1處和第3處的語句應分別改為“n=-n;”和“q=-q;”,即只需要通過負號運算就可以實現(xiàn)。從題目要求輸出的結(jié)果來分析,第2處的語句是對邏輯變量p取反,對一個邏輯變量求反,應該用取反運算符“!”,第2處的語句應改為“p=!p;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。完成函數(shù)fun(char*s1,char*s2)的空出部分。函數(shù)fun(char*s1,char*s2)的功能是將在字符串s1中下標為偶數(shù)的字符,緊隨其后重復出現(xiàn)一次,放在一個新串s2中,s2中字符按原字符串中字符的順序排列。(注意0為偶數(shù))例如:當s1中的字符串為“abcdef”時,s2中的字符串應為“aaccee”。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構。試題程序:#includevoidfun(char*s1,char*s2){}voidmain(){chars1[100],s2[100];cout<<"Pleaseenterstringstring:"<標準答案:inti;for(i=0;s1[i]!=0;i++)//循環(huán)判斷每一個字符{if(i%2==0)//判斷字符串中下標為偶數(shù)位置{s2[i]=s1[i];s2[i+1]=s1[i];s2[i+2]=’\0’;//新串添加尾符}}知識點解析:判斷一個字符串中的某一字符下標i是否為偶數(shù),可用“i%2==0”來判斷。對串s1中各個字符串逐個進行考查,滿足條件的字符就順序放在新串s2中,否則就不存放。所有字符處理完成后,記得在新串s2的末尾加上結(jié)束符“’\0’”。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、用VC++6.0打開考生文件夾下的源程序文件3.cpp,這個工程完成輸出到屏幕一些特定的信息,但工程有錯誤或者不完整,請完成以下功能:(1)初始化Num2的值為j,請在注釋1后添加適當?shù)恼Z句。(2)補充全局函數(shù)fun使之能夠調(diào)用類TC的成員變量,請在注釋2后添加適當?shù)恼Z句。(3)初始化靜態(tài)變量,請在注釋3后添加適當?shù)恼Z句。(4)修改注釋4后的語句。使得程序輸出以下內(nèi)容:Num1=7Num2=12Num3=-7Num1=6Num2=9Num3=-17注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。試題程序:#includeclassTC{public://********1********TC(inti,intj){Num1=i:Num3-=i:}voidPrint(){cout<<"Num1="<標準答案:(1)“TC(inti,intj)”應改為“TC(inti,intj):Num2(j)”。(2)應添加“friendvoidfun();”。(3)應添加“intTC::Num3=0;”。(4)“obj.Add();”應改為“obj.Add(5);”。知識點解析:本題考查了構造函數(shù)初始化列表、聲明友元函數(shù)、初始化靜態(tài)成員變量。第1處應該添加初始化Num2成員的語句,由于該成員為常成員,所以只能通過初始化列表初始化。第2處應添加將fun函數(shù)聲明為TC類友元的語句。靜態(tài)成員變量需要在類外初始化,就像定義類的成員函數(shù)一樣??梢詫㈧o態(tài)成員變量看成全局變量。Add函數(shù)需要一個int型參數(shù),從Add函數(shù)的定義來看,它將增加形參i的值。由于main函數(shù)中先調(diào)用了一次Print成員函數(shù),已經(jīng)輸出了3行數(shù)據(jù),然后再調(diào)用fun函數(shù)的,所以fun函數(shù)中調(diào)用Print是輸出后3行數(shù)據(jù)。Num3在第1次輸出時值為10,fun函數(shù)中創(chuàng)建obj對象時,又讓其增加1,而希望它最終的值是16,所以不難得知,Add()中應傳入5才能達到目的。國家二級C++機試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,使它能運行正確的結(jié)果。注意:不要改動其他語句,不得增行或刪行,也不得更改程序的結(jié)構!本程序要求屏幕輸出:i=12345注意:語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include/********error********/classTC(){public:/********error********/void~TC(){}TC(inti){tout<<’i’<<’=’<標準答案:(1)“classTC()”應改為“classTC”。(2)“void~TC(){}”應改為“~TC(){}”。(3)“}”應改為“};”。知識點解析:本題考查了考生對類的定義了解的情況。類定義類名后不能有括號,所以第1處應該是“classTC”。類的析構函數(shù)不能有返回類型,所以應改為“~TC(){}”。最容易忽略的地方,就是類定義之后必須跟一個分號。因為類的定義屬于類型定義語句,就好像定義一個結(jié)構、用typedef關鍵字定義一個類型的別名一樣,其后都要跟語句結(jié)束標志“;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)num(char*str)用于返回字符串中非數(shù)字的個數(shù)。例如:abcl23abc45返回值為:6將函數(shù)num補充完整。注意:請勿改動主函數(shù)。試題程序:#includeintnum(char*str){}intmain(){charstr[1024];cout<<"pleaseinputastring:"<標準答案:intnumber=0:for(inti=0;str[i]!=0;i++)if(str[i]>’9’||str[i](’0’)//非數(shù)字字符number++:returnnumber:知識點解析:利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開始,直到str[i]=0(到了字符數(shù)組末端),不斷從str中讀取元素。每讀到一個元素就判斷是否是非數(shù)字字符,即滿足條件“str[i]>’9’||str[i](’0’”的字符為非數(shù)字字符,非數(shù)字字符個數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個數(shù)。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,閱讀下列程序說明和代碼,功能如下:從屏幕輸入數(shù)字,然后由大到小插入指定的鏈中。當輸入0時,表示輸出的數(shù)據(jù)已經(jīng)輸入完成,把數(shù)據(jù)打印到屏幕,并釋放內(nèi)存。其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。(1)在父結(jié)點的Next中保存新插入的結(jié)點的指針,請在注釋1后添加適當?shù)恼Z句。(2)把pNext的子結(jié)點賦給pNext本身,請在注釋2后添加適當?shù)恼Z句。(3)判定p的子結(jié)點不為空,如果不為空,則打印p中的數(shù)據(jù)到屏幕,請在注釋3后添加適當?shù)恼Z句。(4)用t1保存動態(tài)申請內(nèi)存結(jié)點的鏈表頭,請在注釋4后添加適當?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。試題程序:#includeclassTC{public:TC(intdata=0){this->data=data;this->next=NULL;}intdata:TC*next:};voidInsert(TC*p,intdata){TC*temp=newTC(data);TC*pParent=p;TC*pNext=p->next;while(pNext){if(data)pNext->data){//********1********temp->next=pNext:return:}else{pParent=pNext://********2********}}if(pNext==NULL){pParent->next=temp;return:}}voidprintf(TC*p){//********3********while(){cout<>data;if(data==0)break;Insert(&head,data);}while(1);printf(&head);Delete(&head);return;}}標準答案:(1)應添加“pParent->next=temp;”。(2)應添加“pNext=pNext->next;”。(3)將“while()”補充完整為“while(p->next!=NULL)”。(4)將“TC*t1=;”補充完整為“TC*t1=p->next;”。知識點解析:本題第1處要求“在父結(jié)點的Next中保存新插入的結(jié)點的指針”。對于指針的操作,pParent->next為pParent的子結(jié)點,在父結(jié)點的Next中保存新插入的結(jié)點的指針,即“pParent->next=temp;”。第2處要求“把pNext的子結(jié)點賦給pNext本身”。pNext->next為pNext的子結(jié)點,把pNext的子結(jié)點賦給pNext本身,即“pNext=pNext->next;”。注釋3下是判定p的子結(jié)點不為空。p的子結(jié)點是p->next。程序中的“while()”缺乏p的子結(jié)點不為空的判斷條件,所以修改為“while(p->next!=NULL)”。第4處要求“用t1保存動態(tài)申請內(nèi)存結(jié)點的鏈表頭”。p為鏈表,p->next為鏈表頭。程序中的語句“TC*t1=:”中t1沿有被賦值,所以修改為“TC*t1=p->next;”國家二級C++機試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使得程序輸出:Hellotest注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構,錯誤的語句在//********error********的下面。試題程序:#include(iostream)//********error********templatevoidfun(boolt){std::cout<<<t?"Hello":"Hi")<標準答案:(1)應改為“template”。(2)刪除“template(bool)”。(3)應改為“boolflag=true;”。知識點解析:C++中的模板類格式為tempiate,所以第1處的語句“template”應修改為“template”。在第2處的“Voidfun(bool)”函數(shù)中,t變量為布爾型變量,是C++中的基礎變量,不是模板變量,沒有使用到模板類,所以刪除第2處的模板類型定義語句。第3處的“boolflag=TRUE;”是聲明布爾型變量flag,并將其值賦為邏輯真。而TRUE并不是合法值,C++中區(qū)分大小寫,所以邏輯真值應為true,即“boolflag=true;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請完成函數(shù)fun(char*strl,char*str2),此函數(shù)的功能是計算strl中出現(xiàn)str2的個數(shù),當不出現(xiàn)時,則返回0。如strl為“asdfsfdfg”str2為“sf”則返回1str2為“df”則返回3注意:不能修改函數(shù)的其他部分。試題程序:#include//注意只能使用int類型,不能類型轉(zhuǎn)換intfun(char*strl,char*str2){}voidmain(){charstrl[1024];charstr2[256];cout<<"pleaseinputastring:"<標準答案:intfun(char*str1,char*str2){intsize=0;intstr1len;intstr2len;for(str1len=0;strl[str1len]!=0;str1len++);for(str2len=0;str2[str2len]!=0;str2len++);for(inti=0;i(strllen;i++){intj=0;for(;j知識點解析:本題考查的是字符串查找算法。首先求出兩個字符串的長度,然后循環(huán)遍歷第1個字符串,再使用一個內(nèi)循環(huán)遍歷第2個字符串,判斷兩個字符串相應位置是否一致。如果遍歷完第2個字符串,所有位置都一致,則記數(shù)值size增1,即找到一個子串。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補充完整。(1)定義私有成員變量year、month、day,分別表示年、月、日,類型為int。請在注釋1后添加適當?shù)恼Z句。(2)完成構造函數(shù),分別給year、month、day賦值,請在注釋2后添加適當?shù)恼Z句。(3)完成重載符號“+=”的定義,請在注釋3后添加適當?shù)恼Z句。(4)完成函數(shù)print打印函數(shù),如2005年1月5日到屏幕和文件out3.txt格式相同,請在注釋4后添加適當?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。試題程序:#include#include(fstream)#include(iomanip)#include(cmath)usingnamespacestd;voidWr

溫馨提示

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

評論

0/150

提交評論