版權(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ī)試(操作題)模擬試卷46(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:sizeof(str1)=5sizeof(str2)=10sizeof(str3)=1注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。(1)不能刪除assert()語(yǔ)句;(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。#include#includevoidmain(){char*str1="abc";//********error********assert(sizeof(Str1)==3);cout<<"sizeof(Str1)=5"<標(biāo)準(zhǔn)答案:(1)assert(sizeof(str1)==4);(2)assert(sizeof(str2)==10);(3)assert(sizeof(str3)==1);知識(shí)點(diǎn)解析:(1)assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert()函數(shù)就要為真,才不會(huì)產(chǎn)生中斷異常。“assert(sizeof(strl)==3);”語(yǔ)句中“sizeof(str1)==3”為假,這個(gè)會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc但是它還有一個(gè)尾符,所以它的長(zhǎng)度應(yīng)該是4,而不是3,所以第1個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str1)==4);”。(2)同(1),str2[10]說(shuō)明,str2的空間為10,第2個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str2)==10);”。(3)同(1),charstr3=23;語(yǔ)句說(shuō)明23是字符,占空間為1,所以修改為“assert(sizeof(str3)==1);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(intn)的功能是在n行n列的矩陣中,每行都有最大的數(shù),本程序求這n個(gè)最大數(shù)中的最小一個(gè),并作為參數(shù)返回。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#include#defineN100inta[N][N];intfun(intn){}voidmain(){intn;cout<<"pleaseinputN:"<>n;for(inti=0;i>a[i][j];}cout<<"Theminofmaxnumbersis"<標(biāo)準(zhǔn)答案:introw;intmax;intmin;intcol;for(row=0;row知識(shí)點(diǎn)解析:(1)兩層循環(huán),內(nèi)層循環(huán)求每一行最大值,外層循環(huán)求最小值。(2)求最大值,首先將最大值賦值為每行第一列的元素,然后依次循環(huán)比較。(3)將求出的第一個(gè)最大值賦值為第一個(gè)最小值,然后將以后求得的最大值依次與之比較,求出所有值的最小值。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)No、Name[32],其中No是int型的數(shù)據(jù),Name[32]為字符型。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成函數(shù)set的定義,分別設(shè)置No和Name的值,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成函數(shù)print(),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句,打印的輸出如下:No=111Name=Garfield(4)加缺省構(gòu)造函數(shù),設(shè)置No為0,Name為空,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeclassTestClass{public://********1********//********2********{No=no;for(inti=0;strName[i]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TestClass(){//********4********}};intmain(){TestClassStu;stu.set(111,"Garfield");stu.print();return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intNo;charName[32];(2)添加語(yǔ)句:voidSet(intno,char*StrName)(3)添加語(yǔ)句:cout<<"No="<知識(shí)點(diǎn)解析:(1)題目1要求“定義類的公有數(shù)據(jù)成員函數(shù)No、Name[32],其中No是int型的數(shù)據(jù),Name[32]為字符型”。在已有程序中,類定義的public區(qū)域中,定義變量No,Name[32],即在第1個(gè)標(biāo)識(shí)下添加語(yǔ)句“intNo;charName[32];”。(2)題目2要求“完成函數(shù)set的定義,分別設(shè)置No和Name的值”。第2個(gè)標(biāo)識(shí)下說(shuō)明函數(shù)set的語(yǔ)句中,應(yīng)該包括變量no,strName的定義,然后在函數(shù)中將其值賦值給No,Name,即添加定義語(yǔ)句“voidSet(intno,char*strName)”。(3)題目3要求“完成函數(shù)print()”,根據(jù)輸出結(jié)果,知道輸出的是No和Name的值,所以這里補(bǔ)全cout<<"No="<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Number=8注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#includeclassCMyClass{public:∥********error********void&Get(){return&Number;}voidSet(intm){Number=m;}voiddisplay(){cout<<“Number=”<標(biāo)準(zhǔn)答案:(1)void*Get()(2)添加語(yǔ)句:CMyClasst;(3)p=(int*)t.Get();知識(shí)點(diǎn)解析:程序中定義了類CMyClass,含有一個(gè)成員變量Number,Get()返回Number的地址(指針),Set(intm)函數(shù)可改變成員變量的值,display()函數(shù)在屏幕上打印Number的值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。程序的功能是尋找1~500以內(nèi)的親和數(shù)并顯示出來(lái),函數(shù)amicableNum(intm,intn)判定兩個(gè)數(shù)是否是親和數(shù)。親和數(shù)的定義為:兩個(gè)數(shù)m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,則m、n是互為親和數(shù)。注意:不能修改程序的其他部分,只能補(bǔ)充amicableNum(intm,intn)函數(shù)。#includeintamicableNum(intn){intsum=0;for(inti=1;i標(biāo)準(zhǔn)答案:if(amicableNum(m)==n&&amicableNum(n)==m)return1;retumR0;知識(shí)點(diǎn)解析:函數(shù)amicableNum(intm,intn)判定兩個(gè)數(shù)是否是親和數(shù),親和數(shù)指兩個(gè)數(shù)的因子(除去本身)和分別是對(duì)方,因此在判斷親和數(shù)時(shí)先求這兩個(gè)數(shù)的因子和,然后比較便可知是否是親和數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示雇員的Employee類,但類Employee的定義并不完整。請(qǐng)按要求完成下列操作,將類CEmployee的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員name、street、city、zipcode和age分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外其余都是char型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)CEmployee的定義,使其把參數(shù)傳遞給私有數(shù)據(jù)成員name、street、city、zipcode和age。請(qǐng)?jiān)谧⑨尅?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成成員函數(shù)alterName(char*newName)的定義。請(qǐng)?jiān)谧⑨尅?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成成員函數(shù)IsEqual(char*ename)的定義,實(shí)現(xiàn)當(dāng)name相等時(shí)返回真,否則為假的功能,請(qǐng)?jiān)谧⑨尅?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#include#deflneMAXLEN20classCEmployee{private:∥********1********intage;public:CEmployee(char*newName,zhar*newStreet,char*newCt,char*newZp,intnewAge);voidalterName(char*newName);voiddisplay();boolIsEqual(char*ename);};CEmployee::CEmployee(char*newName,char*newStreet,char*newCt,char*newZp,intnewAge){∥********2********age=newAge;}voidCEmployee::alterName(char*newName){∥********3********}boolCEmployee::IsEqual(char*ename){∥********4********}voidCEmployee::display(){cout<<name<<“”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:charname[MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];(2)添加語(yǔ)句:strcpy(name,newName);strcpy(street,newStreet);strcpy(city,newct);strcpy(zipcode,newZp);(3)添加語(yǔ)句:strcpy(name,newName);(4)添加語(yǔ)句:returnstrcmp(name,ename)==0;知識(shí)點(diǎn)解析:程序中定義了一個(gè)表示雇員的類CEmployee,該類定義了私有數(shù)據(jù)成員name、street、city、zipcode和age分別用于表示姓名、街道、城市、郵編、年齡,同時(shí)定義了四個(gè)函數(shù)包括構(gòu)造函數(shù)以及三個(gè)成員函數(shù),分別實(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ò)誤,使程序輸出的結(jié)果為:1063022注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。#includeclassCMyClass{private:intnumber;intAdd(inti){returnnumber+=i;}intSub(inti){returnnumber-=i;}intMul(inti){returnnumber*=i;}intDiv(inti){if(i!=0){returnnumber/=i;}elsereturnnumber;}//********error********typedefint(FUNC)(int);//********error********FUNCfunc[];public:CMyClass(){func[0]=CMyClass::Add;func[1]=CMyClass::Sub;func[2]=CMyClass::Mul;func[3]=CMyClass::Div;number=0;}intCallFunction(inti,intj){//********error********return(func[i])(j);}};Voidmain(){CMyClassmyobj;cout<標(biāo)準(zhǔn)答案:(1)typedefint(CMyClass::*FUNC)(int);(2)FUNCfunc[4];(3)return(this->*func[i])(j);知識(shí)點(diǎn)解析:(1)在類中定義函數(shù)指針須指定類名及指針定義運(yùn)算符*,因此第1個(gè)標(biāo)識(shí)下函數(shù)指針正確的定義為“typedefint(CMyClass::*FUNC)(int);”。(2)函數(shù)指針數(shù)組本身是數(shù)組類型,因此在定義時(shí)如果沒(méi)有初始化,就必須指定數(shù)組大小,在本題中因?yàn)橹羔様?shù)組包含的指針變量需要指向四種算數(shù)運(yùn)算,因此定義指針數(shù)組大小為4,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“FUNCfunc[4];”。(3)func是指針數(shù)組,因此訪問(wèn)的時(shí)候需要有指針運(yùn)算符“*”,第3個(gè)標(biāo)識(shí)下應(yīng)改成“return(this->*func[i])(j);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。實(shí)現(xiàn)函數(shù)sort(intA[],intn),用冒泡法將數(shù)組排序。提示:所謂冒泡法,就是每次把相鄰的兩個(gè)數(shù)交換,較大的數(shù)交換到后面。這樣下標(biāo)從0到n-1的數(shù)與其后面相鄰的數(shù)交換,可以把最大的數(shù)交換到數(shù)組的末端。進(jìn)行n次下標(biāo)從0到n-1的交換,則數(shù)組則會(huì)變成有序的,而且是由大到小的順序。注意:不能修改程序的其他部分,并且不能刪除其他的部分,也不能修改程序的結(jié)構(gòu)。#include#defineN10voidsort(intA[N],intn){}intmain(){intA[N]={5,7,4,6,10,13,78,-4,9,20};sort(A,10);for(inti=0;i標(biāo)準(zhǔn)答案:inti,j,k,t;for(i=0;i知識(shí)點(diǎn)解析:(1)以數(shù)組“A[]={3,8,7,6,5,0,1,2,9,4}”為例來(lái)說(shuō)明具體的排序過(guò)程,第一次選擇:第一步從A[0]-A[9]中找最大值max及下標(biāo)k,max=9,k=8;第二步交換a[0]與最大值a[8]的值;第一次結(jié)束后a[0]已存放了最大值,下一次比較就不必再經(jīng)過(guò)它了,而從a[1]開(kāi)始,如此循環(huán)。從例中可以看出10個(gè)元素要進(jìn)行九次比較,n個(gè)元素要進(jìn)行n-1次比較。設(shè)置兩層循環(huán),外層循環(huán)變量i從0到n-1,內(nèi)層循環(huán)變量從i開(kāi)始到n-1,在內(nèi)層循環(huán)中找最大值,如果最大值的下標(biāo)k和i不同,則交換,實(shí)現(xiàn)選擇法排序。(2)在內(nèi)層循環(huán)體內(nèi),如果最大值的下標(biāo)k和i不同,則用一個(gè)臨時(shí)變量記錄第i個(gè)元素,然后將第k個(gè)元素賦值給第i個(gè)元素,臨時(shí)變量值賦給第k個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義類CPoint的帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),兩個(gè)變量為x、y都為int型,且缺省值為0。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類CRectangle的構(gòu)造函數(shù),給pointl和point2進(jìn)行賦值。請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CRectangle的函數(shù)GetArea0,用來(lái)計(jì)算矩形面積。請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義CRectangle類,擁有兩個(gè)私有對(duì)象pointl和point2,類型為Point,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#includeClassCPoint{public://********1********{x=i;y=j;}intGetX(){returnx;}intGetY(){returny;}private:intx,y;};classCRectangle{public://********2********{}intGetArea(){//********3********intheight=pointl.GetY()-point2.GetY();return(width*height)?width*height:一width*height;}intGetGirth(){intwidth=abs(point1.GetX()-point2.GetX());intheight=abs(point1.GetY()-point2.GetY());return(2*(width+height));}private://********4********CPointpoint2;};intmain(){CRectanglerect(5,2,13,18);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:CPoint(inti=0,intj=0)(2)添加語(yǔ)句:CRectangle(inttop,intleft,int,right,intbottom):pointl(top,left),point2(right,bottom)(3)添加語(yǔ)句:intwidth=pointl.GetX()-point2.GetX();(4)添加語(yǔ)句:CPointpointl;知識(shí)點(diǎn)解析:(1)在第1個(gè)標(biāo)識(shí)下添加構(gòu)造函數(shù)定義,該構(gòu)造帶有兩個(gè)參數(shù)x和y的構(gòu)造函數(shù),x、y都為int型,缺省值為0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加CPoint(inti=0,intj=0)。(2)第2個(gè)標(biāo)識(shí)下通過(guò)Cpoint類的構(gòu)造函數(shù)來(lái)完成Crectangle類成員的初始化,在函數(shù)體內(nèi)沒(méi)有任何函數(shù)語(yǔ)句,因此其初始化過(guò)程是在初始化列表里完成的,通過(guò)調(diào)用基類的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)兩個(gè)私有對(duì)象point1和point2的初始化,故第2個(gè)標(biāo)識(shí)下應(yīng)添加CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)。(3)面積為矩形的長(zhǎng)寬之積,因此先計(jì)算矩形的長(zhǎng)和寬,可由兩個(gè)Cpoint對(duì)象的x坐標(biāo)相減計(jì)算得到,CPoint對(duì)象的X坐標(biāo)為私有成員,只能通過(guò)公有接口函數(shù)調(diào)用獲得,因此第3個(gè)標(biāo)識(shí)下為“intwidth=pointl.GetX()-point2.GetX0;”。(4)Crectangle類的成員變量為兩個(gè)Cpoint對(duì)象成員pointl和point2,第4個(gè)標(biāo)識(shí)下補(bǔ)充pointl的定義,故第4個(gè)標(biāo)識(shí)下應(yīng)添加“CPointpointl;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:TestClass1TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#include#includestructTestClas0{∥********error********virtualvoidfun();};classTestClassl:publicTestClass0{voidfun(){cout<<“TestClassl”<fun();∥********error********P=*obj2;P一>fun();return;}標(biāo)準(zhǔn)答案:(1)virtualvoidfun()=0;(2)p=&obj1;(3)p=&obj2;知識(shí)點(diǎn)解析:本題程序中的功能為輸出字符串TestClassl和TestClass2。從已定源程序的main主函數(shù)開(kāi)始入手,通過(guò)定義的類,實(shí)現(xiàn)題目中要求的輸出結(jié)果。解題思路(1)如果在基類中并不使用這個(gè)虛函數(shù),其返回值也是沒(méi)有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun()應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)的時(shí)候初始化為0的函數(shù)。即第1個(gè)標(biāo)識(shí)下的“virtualvoidfun()=0;”。(2)第2個(gè)標(biāo)識(shí)下的p為指針變量,將對(duì)象objl賦值給p,實(shí)際上是p指向?qū)ο髈bjl的地址,所以“p=*0bjl;”修改為“p=&obiil;”。(3)第3個(gè)標(biāo)識(shí)下的“p=*ob.i2;”語(yǔ)句同(2),修改為“p=&obj2;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。sum(intn)計(jì)算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。#includeintsum(intn){)voidmain(){cout<標(biāo)準(zhǔn)答案:inta11=0;for(inti=2;i知識(shí)點(diǎn)解析:(1)數(shù)n的因子是指為整除n等于0的所有自然數(shù)的集合。(2)為了實(shí)現(xiàn)計(jì)算所有n的因子之和且不包含1和自身,函數(shù)中定義一個(gè)變量all用來(lái)保存求和結(jié)果,并為最終結(jié)果在函數(shù)結(jié)束時(shí)返回;(3)在循環(huán)中逐個(gè)尋找n的因子,為了在計(jì)算中排除掉l和n本身,因此循環(huán)變量i的變化范圍為從2到n一1。(4)如果n%i==0,說(shuō)明i是n的因子,因此將i加到all上。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。請(qǐng)完成以下部分,實(shí)現(xiàn)在屏幕上輸出為:TestClass3TestClass2這個(gè)程序需要修改的部分,請(qǐng)按照以下部分實(shí)現(xiàn)。(1)類TestClass0不能被實(shí)例化,請(qǐng)定義一個(gè)純虛函數(shù)print,在注釋∥********1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類TestClassl私有虛繼承類TestClass0,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類TestClass2公有繼承類TestClass0,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)類TestClass3公有繼承類TestClass2與TestClassl,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。1#include2classTestClass03{4∥********1********56};7∥********2********8C1assTestClassl:9{10public:11voidprint()12{13cout<<”TestClassl”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualvoidprint()=0;(2)將“classTestClasSl:”補(bǔ)充完整為:classTestClassl:virtualprivateTestClasS0(3)將“classTestClass2:”補(bǔ)充完整為:classTestClass2:publicTestClass0(4)將“classTestClass3:”補(bǔ)充完整為:classTestClass3:publicTestClass2,publicTestClassl知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。本題從題干要求入手,依次處理各個(gè)類,完成各個(gè)類的定義。解題思路(1)題目1要求“請(qǐng)定義一個(gè)純虛函數(shù)print”。在C++中,虛函數(shù)在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的函數(shù),即“virtualvoidprint0=0;”。(2)題目2要求“類TestClassl私有虛繼承類TestClass0”。在C++中聲明一個(gè)派生類時(shí)將基類的繼承方式指定為private的,稱為私有繼承。同(1),聲明TestClassl虛繼承類“:virtualTestClass0”,題目要求為私有,即“classTestClassl:virtualprivateTestClass0”。(3)題目3要求“類TestClass2公有繼承類TestClass0?!蓖?2),公有繼承是在定義一個(gè)派生類時(shí)將基類的繼承方式指定為public的,稱為公用繼承。所以這里補(bǔ)全“classTestClass2:publicTestClass0”。(4)題目4要求“類TestClass3公有繼承類TestClass2與TestClassl。”同(3),所以這里補(bǔ)全“classTestClass3:publicTestClass2,publicTestClassl”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.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ì)有歧義,分不清楚是全局變量加倍還是類成員變量加倍或者其他情況,調(diào)用func2()函數(shù)后,輸出“130”,說(shuō)明a為l3,b為0,因此是成員變量與全局變量a的和賦給成員變量a,正確的寫(xiě)法是“a+=::a:”,“::a”表示是全局變量a。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*s1,char*s2),此函數(shù)的功能是計(jì)算s1中出現(xiàn)s2的個(gè)數(shù),當(dāng)不出現(xiàn)時(shí),則返回0。如:s1為"1112223333aaaaeeffd"s2為"11"則返回1s2為"aa"則返回2注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。#include//注意只能使用int類型,不能類型轉(zhuǎn)換intfun(char*s1,char*s2){}voidmain(){chars1[1024];chars2[256];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:intsize=0;//初始化字符串統(tǒng)計(jì)變量個(gè)數(shù)ints1len;ints2len;for(s1len=0;S1[s1lerl]!=0;s1len++);//第一個(gè)字符串循環(huán)for(s2len=0;s2[S2len]!=0;S2len++);//第二個(gè)字符串循環(huán)for(inti=0;i知識(shí)點(diǎn)解析:(1)size變量用來(lái)存放s1中出現(xiàn)s2的個(gè)數(shù),初始值賦為0。(2)然后利用for循環(huán)對(duì)s2中的每一個(gè)字符與s1中的字符進(jìn)行比較。(3)如果循環(huán)中有符合條件的字符串,就將變量size個(gè)數(shù)加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.epp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義純虛類TestClass0,包含純虛函數(shù)fun(),請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類TestClass1,以公有繼承TestClass0,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義TestClass0對(duì)象指針P,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)把TestClass1的對(duì)象obj的指針賦給TestClass0指針p,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeClassTestClass0{public://********1********};//********2********classTestClass1{public:Voidfun(){cout<<"fun"<fun();return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualvoidfun()=0;(2)將“classTestClass1”補(bǔ)充完整為:classTestClass1:publicTestClass0(3)添加語(yǔ)句:TestClass0*p;(4)添加語(yǔ)句:p=&obj;知識(shí)點(diǎn)解析:(1)題目1要求“定義純虛類TestClass0”。在C++中,虛函數(shù)在基類用virtual聲明類為虛類。純虛類是在聲明虛類時(shí)被“初始化”為0的函數(shù)。所以第1個(gè)標(biāo)識(shí)下應(yīng)添加“virtualvoidfun()=0;”。(2)題目2要求“完成類TestClass1,以公有繼承TestClass0”。公有繼承是在定義一個(gè)派生類時(shí)將基類的繼承方式指定為public的,稱為公用繼承。所以這里補(bǔ)全“classTestClass1:publicTestClass0”。(3)題目3要求“定義TestClass0對(duì)象指針P”。定義類的對(duì)象指針變量,一般的格式為:類名指針變量,所以這里添加“TestClass0*p;”。(4)題目4要求“把TestClass1的對(duì)象obi的指針賦給TestClass0指針p”。將指針指向的對(duì)象賦值給另一個(gè)指針,其實(shí)是將其地址指向另一個(gè)指針的地址,所以使用取地址運(yùn)算符“&”,即在第四個(gè)符號(hào)下添加語(yǔ)句“p=&obj;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)補(bǔ)充程序中的丟失部分,使得程序運(yùn)行。可以在修改處增加或者刪除一條語(yǔ)句。本程序完成以下功能:(1)獲得輸入的兩個(gè)數(shù)字x1,x2(例如x1=4,x2=2);(2)輸出兩個(gè)中較小的一個(gè)(例如輸出2);(3)計(jì)算x1/x2如果x2等于0,返回-1(輸出結(jié)果2);(4)輸出x1+x2的結(jié)果(輸出結(jié)果6);(5)輸出x1+1的結(jié)果(輸出結(jié)果5);(6)輸出x2-1的結(jié)果(輸出結(jié)果1)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。1#~nolude2voidmain()3{4intx1;5intx2;6intx3;7cout<<”pleaseinput:twonumber:”<>x1>>x2;9∥********error********10x3=(x1>x2)?x1:x2;11cout<<“Minnumberis:”<標(biāo)準(zhǔn)答案:(1)x3=(x1知識(shí)點(diǎn)解析:本題首先求輸出兩個(gè)數(shù)字中的最小值,然后計(jì)算兩個(gè)數(shù)相除的值,然后求得第一個(gè)數(shù)與第二個(gè)數(shù)的和,最后輸出“x1+1”和“x2—1”的值。解題思路主要是要從main()主函數(shù)入手,依次完成題干中要求的各個(gè)要求。解題思路(1)第1個(gè)標(biāo)識(shí)下“x3=(x1>x2)?x1:x2;”語(yǔ)句是判斷x1與x2其中哪個(gè)相對(duì)較小,并將其賦值給x3。條件運(yùn)算符的格式:表達(dá)式1?表達(dá)式2:表達(dá)式3。執(zhí)行順序是先求解表達(dá)式1,若非則求解表達(dá)式3,此時(shí)表達(dá)式3的值就作為整個(gè)條件表達(dá)式值。所以求x1和x2中較小的一個(gè),如果x1二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.epp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。實(shí)現(xiàn)函數(shù)sort(intA[],intn),用冒泡法將數(shù)組排序。提示:所謂冒泡法,就是每次把相鄰的兩個(gè)數(shù)交換,較大的數(shù)交換到后面。這樣下標(biāo)從0到n-1的數(shù)與其后面相鄰的數(shù)交換,可以把最大的數(shù)交換到數(shù)組的末端。進(jìn)行n次下標(biāo)從0到n.1的交換,則數(shù)組則會(huì)變成有序的,而且是由大到小的順序。注意:不能修改程序的其他部分,并且不能刪除其他的部分,也不能修改程序的結(jié)構(gòu)。#include<10Stream.h>#defineN10voidsort(intA[N],intn){}intmain(){intAIN]={5,7,4,6,i0,13,78,一4,9,20);sort(A,10);for(inti=0;i標(biāo)準(zhǔn)答案:inti,j,k,t;for(i=0;i知識(shí)點(diǎn)解析:(1)以數(shù)組“A[]={3,8,7,6,5,0,l,2,9,4}”為例來(lái)說(shuō)明具體的排序過(guò)程,第一次選擇:第一步從A[0]-A[9]中找最大值max及下標(biāo)k,max:9,k=8;第二步交換a[0]與最大值a[8]的值;第一次結(jié)束后a[0]已存放了最大值,下一次比較就不必再經(jīng)過(guò)它了,而從a[1]開(kāi)始,如此循環(huán)。從例中可以看出10個(gè)元素要進(jìn)行九次比較,n個(gè)元素要進(jìn)行n-1次比較。設(shè)置兩層循環(huán),外層循環(huán)變量i從O到n.1,內(nèi)層循環(huán)變量從i開(kāi)始到n-1,在內(nèi)層循環(huán)中找最人值,如果最大值的下標(biāo)k和i不同,則交換,實(shí)現(xiàn)選擇法排序。(2)在內(nèi)層循環(huán)體內(nèi),如果最大值的下標(biāo)k和i不同,則用一個(gè)臨時(shí)變量記錄第i個(gè)元素,然后將第k個(gè)元素賦值給第i個(gè)元素,臨時(shí)變量值賦給第k個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.clap。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義類CPoint的帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),兩個(gè)變量為x、y都為int型,且缺省值為0。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類CRectangle的構(gòu)造函數(shù),給pointl和pohat2進(jìn)行賦值。請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CRectangle的函數(shù)GetArea(),用來(lái)計(jì)算矩形面積。請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義CRectanglc類,擁有兩個(gè)私有對(duì)象pointl和point2,類型為Point,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#includeclassCPoint{public:∥********1********{x=i;y=j,}intGetX(){returnx;}intGetY(){returny;}private:intx,y;};classCRectangle{public:∥********2********{}intGetArea(){∥********3********intheight=pointl.GetY()一point2.GetY();return(width*height)?width*height:一width*height;}intGetGirth(){intwidth=abs(pointl.GetX()一point2.GetX());intheight=abs(pointl.GetY()一point2.GetY());return(2*(width+height));}private:∥********4********CPointpoint2;};intmain(){CRectanglerect(5,2,13,18);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:CPoint(inti=0,intj=0)(2)添加語(yǔ)句:CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)(3)添加語(yǔ)句:intwidth:pointl.GetX()一point2.GetX();(4)添加語(yǔ)句:CPointDointl:知識(shí)點(diǎn)解析:(1)在第1個(gè)標(biāo)識(shí)下添加構(gòu)造函數(shù)定義,該構(gòu)造帶有兩個(gè)參數(shù)X和Y的構(gòu)造函數(shù),X、Y都為int型,缺省值為0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加CPoint(inti=0,inti=0)。(2)第2個(gè)標(biāo)識(shí)下通過(guò)Cpoint類的構(gòu)造函數(shù)來(lái)完成Crectangle類成員的初始化,在函數(shù)體內(nèi)沒(méi)有任何函數(shù)語(yǔ)句,因此其初始化過(guò)程是在初始化列表里完成的,通過(guò)調(diào)用基類的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)兩個(gè)私有對(duì)象pointl和point2的初始化,故第2個(gè)標(biāo)識(shí)下應(yīng)添加CRectangle(inttop,intleft,intright,intbottom):point1(top,left),point2(right,bottom)。(3)面積為矩形的長(zhǎng)寬之積,因此先計(jì)算矩形的長(zhǎng)和寬,可由兩個(gè)Cpoint對(duì)象的X坐標(biāo)相減計(jì)算得到,CPoint對(duì)象的X坐標(biāo)為私有成員,只能通過(guò)公有接口函數(shù)調(diào)用獲得,因此第3個(gè)標(biāo)識(shí)下為“intwidth=pointl.GetX().point2.GetX0;”。(4)Crectangle類的成員變量為兩個(gè)Cpoint對(duì)象成員pointl和point2,第4個(gè)標(biāo)識(shí)下補(bǔ)充pointl的定義,故第4個(gè)標(biāo)識(shí)下應(yīng)添加“CPointpoint1;”0國(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é)果為:a=7,b=0a=8,b=10注意:錯(cuò)誤的語(yǔ)句在//*****error******的下面,修改該語(yǔ)句即可。#includeclassCObj{public://*****error******friendvoidfunc(CObj&,int,int);voiddisplay(){//*****error******cout<<"a:"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:friendvoidfunc(CObj&,int);(2)cout<<"a="<知識(shí)點(diǎn)解析:(1)標(biāo)識(shí)1處是聲明一個(gè)友元函數(shù),友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù),由friendvoidfunc(CObj&,int,int)可知,函數(shù)func()是CObj類的友元,由程序后面的具體實(shí)現(xiàn)可知該函數(shù)重載了,已經(jīng)聲明了友元函數(shù)friendvoidfunc(CObj&,int,int),另外一個(gè)友元函數(shù)func(CObj&obj,intt)沒(méi)有聲明,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“friendvoidfunc(CObj&,int);”。(2)display()函數(shù)打印類成員變量a和b的值,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<<<<”不正確,第2個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<”a=”<<對(duì)象名>(<參數(shù)表>);,對(duì)象聲明語(yǔ)句是一個(gè)完整的語(yǔ)句,應(yīng)該以“;”結(jié)尾,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為“CObjobj1;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.epp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)show0的功能是將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(int1=1;1<5;1++)for(intk=1;k<5;k++){if(i!=j&&j!=k&&i!=k&&i!=1&&j!=1&&k!=1)//條件判斷cout<知識(shí)點(diǎn)解析:(1)四重循環(huán)變量分別為i、i、l和k,分別從1變化至4,分別表示四位數(shù)的第一、第二、第三和第四位數(shù)。(2)在最內(nèi)層循環(huán)內(nèi),如果i、J、k和1互不相同則i、j、k和1表示的四位數(shù)互不相同,把i、j、k和1打印在屏幕上。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成列操作,將類的定義補(bǔ)充完整,實(shí)現(xiàn)以下功能:(1)完成CBook類構(gòu)造函數(shù),對(duì)整型變量ID和作者Author進(jìn)行賦值,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類CBooks的析構(gòu)函數(shù),釋放申請(qǐng)的內(nèi)存,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CBooks的AddBookMember函數(shù),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成CBooks類,用于由書(shū)的ID檢索到作者的函數(shù)char*GetBookAuthor(intnID),請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。(5)程序的輸出結(jié)果為:TomHarry注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#includeclassCBook{public:intID;charAuthor[32];public:CBook(intID_Number,char*AuthorName){this->ID=ID_Number;//********1********}};classCBooks{private:classNode{public:Node*next;CBook*book;]*m_pBook;public:CBooks(){m_pBook=NULL;}~CBooks(){//********2********while(){Node*p=m_pBook->next;deletem_pBook->book;deletem_pBook;m_pBook=p;}}intAddBookMenber(intnID,char*Author){Node*p=m_pBook;Node*q=NULL;//********3********while(){if(nID==p->book->ID){return0;}q=p;p=p->next;}if(p==NULL){p=newNode;p->next=NULL;p->book=newCBook(nID,Author);}if(q==NULL){m_Book=p;}else{q->next=p;}return1;}Char*GetBookAuthor(intnID){Node*p=m_pBook;//********4********while(){if(p->book->ID==nID{returnp->book->Author;}p=p->next;}return0;}};intmain(){CBooksbooks1;books1.AddBookMenber(1,"Tom");books1.AddBookMenber(3,"Lee");books1.AddBookMenber(4,"Lily");bookS].AddBOOkMenber(5,”Harry”);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:strcpy(Author,Author_Name);(2)將“while()”補(bǔ)充完整為:while(m_pBook!=NULL)(3)將“while()”補(bǔ)充完整為:while(p!=NULL)(4)將“while()”補(bǔ)充完整為:while(p!=NULL)知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下完成CBook類的構(gòu)造函數(shù),對(duì)成員變量整ID和作者Author進(jìn)行初始化,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“strcpy(Author,Author_Name);”,利用strcpy函數(shù),將AuthorName數(shù)組內(nèi)容拷貝到Author數(shù)組中。(2)~CBooks()為CBooks類的析構(gòu)函數(shù),由于CBooks類在運(yùn)行過(guò)程中會(huì)動(dòng)態(tài)申請(qǐng)內(nèi)存空間,因此在析構(gòu)函數(shù)中必須將這些內(nèi)存釋放。CBooks類是由Node對(duì)象組成的鏈表,因此可利用循環(huán)逐個(gè)搜索這個(gè)鏈表,逐個(gè)釋放內(nèi)存空間,故第2個(gè)標(biāo)識(shí)下應(yīng)改為while(mpBook!=NULL),在while循環(huán)體不斷的搜索下一個(gè)節(jié)點(diǎn)直到m_pBook為空為止,刪除所以節(jié)點(diǎn)。(3)AddBookMenber(intnID,char*Author)函數(shù)在鏈表的最后添加一個(gè)新的節(jié)點(diǎn),因此必須先找到最后一個(gè)節(jié)點(diǎn),同樣利用循環(huán)尋找最后一個(gè)節(jié)點(diǎn),故第3個(gè)標(biāo)識(shí)下為while(P!=NULL)。(4)GetBookAuthor(intnID)返回某個(gè)Node節(jié)點(diǎn)的CBook對(duì)象的ID為nID的CBook對(duì)象的Author數(shù)組名,同樣需要利用循環(huán)來(lái)查找各個(gè)節(jié)點(diǎn)CBook對(duì)象的ID是否為nID,故第4個(gè)標(biāo)識(shí)下應(yīng)為while(p!=NULL)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:錯(cuò)誤的語(yǔ)句在//******error******的下面。修改該語(yǔ)句即可。其他的語(yǔ)句不能修改。#include<iostream>usingnamespacestd;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//********error********product=number1*number2*number3;//********error********cout<<"number1="<<number1<’\t’<<"number2="<<number2<<’\t。’;//********error********cout<<"number3="<<number3<<’\t’;cout<<"PRODUCT="<<product(<endl;return0;}標(biāo)準(zhǔn)答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’;(3)cout<<"number3="<<number3<<’\t’<<endl;知識(shí)點(diǎn)解析:(1)C++要求變量在定義后才能使用,顯然product變量沒(méi)有定義,number1、number2和number3均為double型變量,product是這三個(gè)變量的乘積,因此product的數(shù)據(jù)類型是double型,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為doubleproduct=number1*number2*number3。(2)cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,第2個(gè)標(biāo)識(shí)下是輸出number1、number2和number3的值,各個(gè)數(shù)據(jù)之間用“<<”順序加入,不能用“<”,第2個(gè)標(biāo)識(shí)下應(yīng)改為cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’。(3)由于輸出“PRODUCT=404.352”在“number1=4.8number2=93.6number3=0.9”下一行,因此輸出“number3=0.9”后應(yīng)換行,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<"number3="<<number3<<’\t’<<endl;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。函數(shù)func(intA[NUM],intn)實(shí)現(xiàn)的功能是將數(shù)組的內(nèi)容進(jìn)行一次重新排序。排序的方法是:給定n,則下標(biāo)為i的數(shù)字與下標(biāo)為n-i的數(shù)字交換。從0開(kāi)始,交換N/2次,則最后的內(nèi)容為排序后的結(jié)果。如果:A[8]={1,2,3,4,5,6,7,8},n=6,則結(jié)果:A[8]={7,6,5,4,3,2,1,8}。注意:不能修改其他代碼。#include<iostream.h>#defineNUM8voidfunc(intA[NUN],intn){}intmain(){intA[NUN]={i,2,3,4,5,6,7,8};func(A,6);for(inti=0;i<sizeof(A)/sizeof(int);i++){cout<<A[i]<<’’;}cout<<endl;return0;}標(biāo)準(zhǔn)答案:for(inti=0;i<n/2;i++){inttemp=A[i];//交換A[i]=A[n-i];A[n-i]=temp;}知識(shí)點(diǎn)解析:(1)用循環(huán)來(lái)實(shí)現(xiàn)該過(guò)程,題目要求從0開(kāi)始,交換N/2次,因此循環(huán)變量i的范圍從0變化到N/2。(2)下標(biāo)為0的元素與下標(biāo)為n的元素交換,下標(biāo)為1的元素與下標(biāo)為n-1的元素交換,依此類推,在循環(huán)體內(nèi),用一個(gè)臨時(shí)變量記錄第一個(gè)元素,然后將第二個(gè)元素賦值給第一個(gè)元素,臨時(shí)變量值賦給第二個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)聲明類objAl,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)為類oNA0增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)為類obiAl增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)func()返回obiA1對(duì)象中的變量和obiA0的靜態(tài)變量的乘積,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include<iostream.h>//********1********classobjA0{private:staticintmA0;//********2********};intobjA0::m_A0=10;classobjA1{private:intm_A1;//********3********public:objAl(inti){m_A1=i;}};intfunc(objAl&obj){//********4********}intmain(){objA1obj0(10);cout<<func(obj0)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:classobjAl;(2)添加語(yǔ)句:friendintfunc(objAl&obj);(3)添加語(yǔ)句:friendintfunc(objAl&obj);(4)添加語(yǔ)句:returnobj.mA1’objA0::mA0;知識(shí)點(diǎn)解析:(1)類的聲明格式為:“class<類名>:”,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“classobjAl;”。(2)按照友元的定義格式,友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù),func函數(shù)在類外部給出了具體的實(shí)現(xiàn)形式,即“intfunc(objAl&obi)”,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“friendintfunc(objAl&obj);”,這里參數(shù)是objAl類對(duì)象obi。(3)第3個(gè)標(biāo)識(shí)下和題目2要求一樣,均是聲明友元函數(shù),因此第2標(biāo)識(shí)下應(yīng)添加“friendintfunc(obiAl&obj);”。(4)通過(guò)參數(shù)obj對(duì)象可以直接訪問(wèn)obi.mA1,obiA0的靜態(tài)變量m_A0是所有對(duì)象的共享成員,其訪問(wèn)形式為:objA0::m_A0,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“returnobi.m_A1*ob{A0::mA0;}”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件NOdil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為:從鍵盤(pán)輸入一個(gè)字符串,并將結(jié)果保存到文件modi1.txt中。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#include#include∥********error********usingstd;voidWriteFile(char*s){
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年焦炭采購(gòu)與銷售合同
- 大班秋天語(yǔ)言教案分析
- 股權(quán)轉(zhuǎn)讓協(xié)議書(shū)模板集錦8篇
- 保健工作計(jì)劃模板集合八篇
- 初一年級(jí)上冊(cè)語(yǔ)文教學(xué)計(jì)劃
- 大學(xué)生畢業(yè)自我鑒定(15篇)
- 小學(xué)體育個(gè)人工作計(jì)劃
- 酒店前臺(tái)的實(shí)習(xí)報(bào)告范文十篇
- 做教師的心得體會(huì)
- 業(yè)務(wù)員半年工作總結(jié)15篇
- 防沖撞升降柱安裝合同
- 專題21 現(xiàn)在分詞(五年真題+八省模擬+寫(xiě)作升格)【含答案解析】
- 培訓(xùn)學(xué)校銷售分析和總結(jié)
- 房產(chǎn)行業(yè)智慧房產(chǎn)交易與服務(wù)平臺(tái)
- 規(guī)培醫(yī)師年度述職報(bào)告
- 公轉(zhuǎn)私提額合同范例
- 浙江省溫州市第二中學(xué)2024-2025學(xué)年上學(xué)期九年級(jí)英語(yǔ)10月月考試題
- 急性ST抬高型心肌梗死溶栓指南課件
- 【基于單片機(jī)控制的數(shù)字鐘設(shè)計(jì)(論文)10000字】
- 央國(guó)企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實(shí)施
- 會(huì)計(jì)學(xué)原理期末測(cè)試練習(xí)題及答案
評(píng)論
0/150
提交評(píng)論