國家二級C++機(jī)試(操作題)模擬試卷6(共27題)_第1頁
國家二級C++機(jī)試(操作題)模擬試卷6(共27題)_第2頁
國家二級C++機(jī)試(操作題)模擬試卷6(共27題)_第3頁
國家二級C++機(jī)試(操作題)模擬試卷6(共27題)_第4頁
國家二級C++機(jī)試(操作題)模擬試卷6(共27題)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

國家二級C++機(jī)試(操作題)模擬試卷6(共9套)(共27題)國家二級C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯誤,請改正程序中的錯誤,使得程序輸出:1,2,3,4,5,注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********3********的下面。#include<iostream.h>ClassTestClass{//********error********TestClass(inti){m_i=i;}voidprint(){cout<<++m_i<<’,’;}public:intm_i;};intmain(){//********error********inti();TestClassdata(0);while(i>5){//********error********i++jdata.print();}cout<<endl;return0;}標(biāo)準(zhǔn)答案:(1)public:TestClass(inti)(2)inti(10);(3)i--;知識點(diǎn)解析:(1)打開moid1.cpp調(diào)試程序,顯示錯誤提示為第一標(biāo)識下“modil.cpp(20):errorC2248:’TestClass::TestClass’:cannotaccessprivatememberdeclaredinclass’TestClass’”,提示類TestClass中的構(gòu)造函數(shù)TestClass被定義為私有的,無法獲得,所以這里應(yīng)該是public,即“public:TestClass(inti)”。(2)題目中要求輸出結(jié)果為1,2,3,4,5,即循環(huán)5次。第三個表示while循環(huán)條件是i大于5就進(jìn)行循環(huán)?!癷nti();”應(yīng)該實(shí)現(xiàn)變量i的初始化,題干中要求不能刪除i初始化中的括號,所以在括號中添加i的初始值。大于5且循環(huán)5次,所以i的初始值為10,而while循環(huán)中對i的操作應(yīng)該是i--,這樣第二個和第三個標(biāo)示下應(yīng)該是“inti(10);”和“i--;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請實(shí)現(xiàn)函數(shù)fun(doubleb[],intlen)的如下功能:(1)b[]是一個數(shù)組,長度為len;(2)b[0]=0,b[1]=1;(3)b[i+2]=b[i]+b[i+1];注意:請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include<iostream>voidfun(doubleb[],intlen){}voidmain(){doubleb[128];fun(b,128);for(inti=0;i<128;i++){std::cout<<b[i]<<’’;if(i%6==5)std::cout<<std::endl;}return;}標(biāo)準(zhǔn)答案:if(len>0)//最小值位置b[0]=0;//賦值第一個元素if(len>1)b[1]=1;//賦值第二個元素for(inti=2;i<len;i++)b[i]=b[i-1]+b[i-2];//將兩個元素之和賦予當(dāng)前元素知識點(diǎn)解析:(1)判斷數(shù)組長度,如果存在第一個元素,那么將第一個元素賦值為0,即b[0]=0;。(2)然后再判斷數(shù)組長度,如果存在第二個元素,那么將第二個元素賦值為1,即b[1]=1;。(3)最后從第三個元素到數(shù)組最后一個元素,賦值b[i]=b[i-1]+b[i-2];。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整。請按要求完成下列操作,將類Date的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月和日,它們都是int型的數(shù)據(jù)。請?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z句。(2)完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對象的默認(rèn)值為:year=1,month=1,day=1,請?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z句。(3)完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員year、month和day分別初始化為參數(shù)y、m和d的值,請?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z句。(4)完成成員函數(shù)print()的類外定義,使其以“年—月—日”的格式將Date對象的值輸出到屏幕上,例如:2008—8—8。請?jiān)谧⑨專?*******4********之后添加適當(dāng)?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<iostream.h>classDate{public://********2********Date(inty,intm,intd){//********3********}voidprint:()const;private://datamember//********1********};voidDate::print()const{//********4********}intmain(){Datenational_clay(1949,3.0,1);national_day.print();return0;}標(biāo)準(zhǔn)答案:(1)添加語句:intyear,month,day;(2)添加語句:Date(){year=1;month=1;day=1;}(3)添加語句:year=y;month=m;day=d;(4)添加語句:cout<<year<<"-"<<month<<"-"<<day<<endl;知識點(diǎn)解析:(1)題目1要求“定義私有數(shù)據(jù)成員year、month和day,分別用于表示年、月和日,它們都是int型的數(shù)據(jù)”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個標(biāo)識下添加“intyear,month,day;”。(2)題目2要求“完成默認(rèn)構(gòu)造函數(shù)Date的定義,使Date對象的默認(rèn)值為:year=1,month=1,day=1”。在C++中,構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的名字與類同名。在Date構(gòu)造函數(shù)體內(nèi),根據(jù)題目要求,設(shè)置變量默認(rèn)值“year=1,month=1,day=1”,即:“Date(){year=1;month=1;day=1;}”。(3)題目3要求“完成重載構(gòu)造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員year、month和day分別初始化為參數(shù)y、m和d的值。”在構(gòu)造函數(shù)Date(inty,intm,intd)函數(shù)體內(nèi),即標(biāo)識3下,添加賦值語句,將y,m,d賦值給year,month,day,即“year=y;month=m;day=d;”。(4)題目4要求“完成成員函數(shù)print()的類外定義,使其以“年—月—日”的格式將Date對象的值輸出到屏幕上”。在程序中的voidDate::print()const函數(shù)體內(nèi),標(biāo)識4下,添加輸出語句。根據(jù)cout輸出格式,實(shí)現(xiàn)題目中的輸出要求,即“cout<<yrear<<"-"<<month<<"-"<<day<<endl;”。國家二級C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,該工程中包含程序文件main.cpp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:打開503號門…門是鎖著的,打不開。打開503號門的鎖…鎖開了。打開503號門…門打開了。打開503號門…門是開著的,無須再開門。鎖上503號門…先關(guān)門…門鎖上了。注意:只修改每個“//ERROR**********found**********”下的那一行,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classDoor{intnum;//門號boolclosed;//true表示門關(guān)著boollocked;//true表示門鎖著public:Door(intnum){//ERROR*********found*********num=thiS->num;closed=locked=true;}boolisClosed()const{returnclosed;}//門關(guān)著時(shí)返回true,否則返回falseboolisOpened()const{return!closed;)//門開著時(shí)返回true,否則返回falsebooliSLocked()const{returnlocked;)//門鎖著時(shí)返回true,否則返回falseboolisUnlocked()conSt{return!locked;)//門未鎖時(shí)返回true,否則返回falsevoidopen(){//開門cout<標(biāo)準(zhǔn)答案:(1)this一>num=nun;(2)if(!closed)(3)voidlock(){知識點(diǎn)解析:(1)主要考查考生對this指針的掌握,在構(gòu)造函數(shù)中this指針指向的是當(dāng)前類,因此要給num賦值使用語句this一>num=num;完成。(2)主要考查考生對if語句的掌握,先看類的私有成員中關(guān)于closed的定義:boolclosed;//true表示門關(guān)著。再看下一條語句:cout<<”門是開著的,無須再開門?!?;。即滿足條件時(shí)就會輸出:門是開著的,無須再開門。因此if括號內(nèi)應(yīng)該是!closed。(3)主要考查考生對const函數(shù)的掌握,lock函數(shù)體中存在語句locked=true,即有參數(shù)發(fā)生改變,因此不能用const。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾pmj2下的工程pmj2。其中有類Point(“點(diǎn)”)、lteetangle(“矩形”)和Circle(“圓”)的定義。在程序所使用的平面坐標(biāo)系統(tǒng)中,x軸的正方向是水平向右的,y軸的正方向是豎直向下的。請?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)該是:一一圓形一一一一圓心=(3,2)半徑=1面積=3.14159一一外切矩形一一左上角=(2,1)右下角=(4,3)面積=4注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found*****”。#include#includeusingnamespaoestd;//平面坐標(biāo)中的點(diǎn)//本題坐標(biāo)系統(tǒng)中,x軸的正方向水平向右,y軸的正方向豎直向下。classPoint:{public:Point(doubleX=0.0,doubley=0.0):x一(x),y一(y){)doublegetX()const{returnx_;)doublegetY()const{returny_;)voidsetX(doublex){x_=x;)voidsetY(doubley){y_=y;)private:doublex_;//x坐標(biāo)doubley_;//y坐標(biāo)};//矩形classRectangle{public:Rectangle(PointP,intw,inth):point(p),width(w),height(h){}doublearea()const//矩形面積{returnwidth*height;}PointtopLeft()const//左上角頂點(diǎn){returnpoint;}PointbottomRight()const//右下角頂點(diǎn)(注:Y軸正方向豎直向下){//**********found**********returnPoint(______);}private:Pointpoint;//左上角頂點(diǎn)doublewidth;//水平邊長度doubleheight;//垂直邊長度};//圓形classCircle{public:Circle(PointP,doubler):center(p),radius(r){)Rectangle.boundingBox()const;//外切矩形doublearea()const//圓形面積{//**********found**********returnPI*______;}public:staticconstdoublePI;//圓周率private:Pointcenter;//圓心doubleradius;//半徑};constdoubleCircle::PI=3.14159;RectangleCircle::boundingBOx()const{//**********found**********Pointpt(_________);intw,h;//**********found**********W=h=______;returnRectangle(pt,W,h);}intmain(){PointP(3,2);Circlec(p,1);cout<<”一一圓形一一一一一\nn;cout<<”圓心=(”<標(biāo)準(zhǔn)答案:(1)point.getX()+width,point.getY()+height(2)radius*radius(3)center.getX()一radius,center.getY()一radius(4)2*radius知識點(diǎn)解析:(1)主要考查考生對成員函數(shù)的掌握,程序要求返回右下角頂點(diǎn),該點(diǎn)的x坐標(biāo)為左上角頂點(diǎn)的x坐標(biāo)加上width,該點(diǎn)的y坐標(biāo)為左上角頂點(diǎn)y坐標(biāo)加上height,即returnPoint(point.getX()+width,point.getY()+height);。(2)主要考查考生對成員函數(shù)的掌握,程序要求計(jì)算圓形面積,也就是返回圓面積,即returnPI*radius*radius;。(3)主要考查考生對成員函數(shù)的掌握,首先看函數(shù)聲明:RectangleCircle::boundingBox()const,可知該函數(shù)要返回的是一個Rectangle類型,即要返回的是圓的外切矩形。再看Rectangle類的構(gòu)造函數(shù)Rectangle(PointP,intW,inth),由此可知,空格處要定義的點(diǎn)pt為左上角點(diǎn),即Pointpt(center.getX()一radius,center.getY()一radius);。(4)由函數(shù)聲明和Rectangle類的構(gòu)造函數(shù)可知,W和h應(yīng)該為直徑,即W=h=2*radius;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾pros3下的工程prog3,其中包含了類P0lynomial(“多項(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)式的各個系數(shù)存儲在一個名為coef的數(shù)組中。例如,對于上面的多項(xiàng)式,保存在coef[0]、coef[1]…coef[4]中的系數(shù)依次為:2.0、一7.0、3.4、0.0,5.0,也即對于i次項(xiàng),其系數(shù)就保存在coef[i]中。成員函數(shù)getValue計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值是由參數(shù)指定的。請補(bǔ)充完成文件Polynomial.cpp中成員函數(shù)getValue的定義。此程序的正確輸出結(jié)果應(yīng)為:Valueofplwhenx=2.0:59.8Valueofp2whenx=3.0:226.8注意:只在函數(shù)getValue的“//**********333**********”和“//**********666**********”之間填入若干語句,不要改動程序中的其他內(nèi)容。//Polynomiac.h#includeusingnamespacestd;class,Polynomial{//“多項(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*cogf;inthum_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(){doublepl[]=:{5.0,3.4,-4.0,8.0),p2[]={0.0,一5.4,0.0,3.0,2.0);Polynomialpolyl(pl,sizeof(p1)/sizeof(double)),poly2(p2,sizeof(p2)/sizeof(double));cout<<”ValueofplwhenX=2.0:”<標(biāo)準(zhǔn)答案:for(inti=1;i0)//當(dāng)j大于零時(shí),做相乘操作,即完成該項(xiàng)的乘方動作{x_value*=x;j--;}value+=coef[i]=*Xvalue;//把i項(xiàng)的乘方結(jié)果乘以該項(xiàng)系數(shù)后加進(jìn)value中}知識點(diǎn)解析:題目要求成員函數(shù)getVahe計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值由參數(shù)指定,多項(xiàng)式的值value為各次項(xiàng)的累加和。由類的定義可知數(shù)組coef中存儲的是各次項(xiàng)的系數(shù),這里使用for循環(huán)來完成題目要求,當(dāng)次項(xiàng)為0時(shí),value=coef[0]。當(dāng)次項(xiàng)為1時(shí),value=coef[1]*x+coef[0]。依次類推直到X的最高次數(shù)。國家二級C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在任意給定的9個正整數(shù)中找出按升序排列時(shí)處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序列,并將中間數(shù)作為函數(shù)值返回。例如,有9個正整數(shù):1572387582145按升序排列時(shí)的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并把中括號刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#defiheN9intfun(intx[]){inti,j,k,t,mid,b[N];for(i=0;ib[j])k=j;if(k!=i){/*********found*********/t=b[i];b[i]=【1】;b[k]=t;}}/*********found*********/mid=b[【2】];for(i=0;i標(biāo)準(zhǔn)答案:(1)b[k](2)4或N/2(3)<知識點(diǎn)解析:數(shù)組中的9個數(shù)任意排列,要找到按升序排列時(shí)處于中間位置的數(shù),應(yīng)首先對數(shù)組進(jìn)行升序排列。因?yàn)橹恍枵业街虚g位置的數(shù)即可,故不必對整個數(shù)組進(jìn)行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小于巾間數(shù)的元素進(jìn)行替換。填空1:利用選擇算法排序,先指定一個元素為最小,用這個數(shù)與其后的所有數(shù)進(jìn)行比較,若找小于此數(shù),則進(jìn)行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長度為9,因此中間元素?cái)?shù)為b[4]。填空3:遍歷數(shù)組,當(dāng)元素小于中間位置的數(shù)(即mid)時(shí),進(jìn)行替換。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:將n個無序整數(shù)從小到大排序。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includefun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/*********found*********/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf("%4d",*z);if(!(i%10))printf("\n");}printf("\n");}voidmain(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7),n=11;system("CLS");printf("\nBeforesorting%dnumbers:\n",n);putarr(n,aa);fun(n,aa);printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);}標(biāo)準(zhǔn)答案:(1)for(i=j+1;i知識點(diǎn)解析:該程序是對n個無序數(shù)實(shí)現(xiàn)從小到大的排序,先找出整數(shù)序列的最小項(xiàng),置于指針第1個元素的位置;再找出次小項(xiàng),置于第2個元素的位置;之后順次處理后續(xù)元素。(1)數(shù)組的長度為n,所以最后一個元素的下標(biāo)值為n一1,i的取值范圍應(yīng)該包括此下標(biāo)值。(2)p是中間變量,存放值較小的元素下標(biāo)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)intfun(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指向的存儲單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#includeintfun(int*s,intt,int*k){}voidmain(){FILE*wf;inta[10]={876,675,896,101,301,401,980,431,451,777},k;system("CLS");fun(a,10,&k);printf("%d,%d\n",k,a[k]);/***************************/wf=fopen("out.clat","w");fprintf(wf,"%d,%d",k,a[k]);fctose(wf);/***************************/}標(biāo)準(zhǔn)答案:intfun(int*s,intt,int*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i知識點(diǎn)解析:本題中直接使用指針變量k,使用時(shí)要注意對k進(jìn)行指針運(yùn)算。程序一開始讓k指向數(shù)組中的第一個元素,即木k=0。國家二級C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯,請改正其中的錯誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:CMyObject,intheconstmtor~CMyObject,inthedestrutor注意:錯誤的語句在//*****error******的下面,修改該語句即可。#includeclassCMyObject{//*****error******//*****error******CMyObject{cout<<"CMyObject,intheconstrutor"<標(biāo)準(zhǔn)答案:(1)添加語句:public:(2)CMyObject(){cout<<"CMyObject,intheconstrutor"<知識點(diǎn)解析:(1)構(gòu)造函數(shù)和析構(gòu)函數(shù)均為公有函數(shù),而在C++中默認(rèn)的訪問屬性為私有(private),因此構(gòu)造函數(shù)和析構(gòu)函數(shù)必須說明為public,即第1個標(biāo)識下應(yīng)添加“public:”。(2)函數(shù)定義中在函數(shù)名后均有一對括號表示函數(shù)聲明,因此第2個標(biāo)識下應(yīng)改為“CMyObject(){cout<<"CMyObject.intheconstrutor"<二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序,使輸入某年某月某日,可判斷這一天是這一年的第幾天。程序分析:以3月5日為例,應(yīng)該先把前兩個月的天數(shù)加起來,然后再加上5天即本年的第幾天(特殊情況:閏年輸入月份大于3時(shí)需考慮多加一天)。注意:只能補(bǔ)充函數(shù)func(intyear,intmonth.intday),請勿改動其他部分的內(nèi)容。#includeintfunc(intyear,intmonth,intday){}voidmain(){cout<標(biāo)準(zhǔn)答案:intsum;intleapyear;switch(month)/*先計(jì)算某月以前月份的總天數(shù)*/{case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;sase4:sum=90;break;case5:sum=120;break;sase6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;case11:sum=304;break;case12:sum=334;break;default:cout<<"dataerror"<2)sum++;returnsum;知識點(diǎn)解析:(1)為方便起見,先統(tǒng)計(jì)正常年份下,每個月的前面有多少天,可以用switch方式查詢,然后再加上本月的日子,很快便得到了這一天是屬于這一年的第幾天。(2)閏年的判斷方法為:if(year%400==0‖(year%4=0&&year%100!=0)),if語句為真則為閏年,二月之后的日期后需要加一天。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成類MyArrayClass的構(gòu)造函數(shù),申請數(shù)組的大小,請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成類MyArrayClass的析構(gòu)函數(shù),釋放數(shù)組,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成重載運(yùn)算符“[]”,用來獲得指定下標(biāo)的數(shù)據(jù),請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成函數(shù)SetElement(),用來設(shè)置指定下標(biāo)的數(shù)據(jù)。如果數(shù)據(jù)沒有超出范圍,則設(shè)置數(shù)據(jù),并返回1,否則返回0,請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定的位置添加語句外,并不要更改程序中的其他語句。#includetemplateclassMyArrayClass{private:T*data;intlength;public:MyArrayClass(intlen){length=fen;//********1********}~MyArrayClass(){//********2********}T&operator[](inti){//********3********}boolSetElement(inti,Tt){//********4********if(){data[i]=t;returntrue;}returnfalse;}};intmain(){MyArrayClassobj(5);obj[3]=1;cout<標(biāo)準(zhǔn)答案:(1)添加語句:data=newT[len];(2)添加語句:delete[]data;(3)添加語句:returndata[i];(4)將“if()”補(bǔ)充完整為:if(i知識點(diǎn)解析:(1)構(gòu)造函數(shù)完成成員變量的初始化,在MyArrayClass(intmen)函數(shù)中申請數(shù)組的大小的內(nèi)存空間,應(yīng)該用new申請動態(tài)存儲空間,F(xiàn)lew返回一個指向其操作數(shù)類型變量的指針,第1個標(biāo)識下即將new返回的指針賦值給data指針,因此第1個標(biāo)識下應(yīng)添加“data=newT[len];”。(2)析構(gòu)函數(shù)完成資源的釋放,刪除由new申請的內(nèi)存資源,因此第2個標(biāo)識下應(yīng)添加“delete[]data;”。(3)T&operator[](inti)函數(shù)重載運(yùn)算符“[]”,返回指定下標(biāo)的數(shù)據(jù),因此第3個標(biāo)識下應(yīng)添加“returndata[i];”。(4)SetElement(inti,Tt)是設(shè)置指定下標(biāo)的數(shù)據(jù),數(shù)組下標(biāo)不能超限,函數(shù)體中的if()用來判斷下標(biāo)位置是否超限,因此第4個標(biāo)識下應(yīng)添加“if(i國家二級C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如,有10個正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。移動后的輸出為:46、32、40、45、48、30、6、17、15、260請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并把中括號刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN10doublefun(double*x){inti,j;doubles,av,y[N];s=0;for(i=0;iav){/*********found*********/y[【2】]=x[i];x[i]=一1;}for(i=0;i標(biāo)準(zhǔn)答案:(1)s/N(2)j++(3)一1知識點(diǎn)解析:填空1:由原程序可知,av代表的是平均值,而平均值的求法是所有數(shù)的總和除以數(shù)的個數(shù),因而本空應(yīng)該填寫s/N。填空2:y數(shù)組代表暫時(shí)存放x數(shù)組,if(x[i]>av)表達(dá)的是當(dāng)x數(shù)組中的數(shù)大于平均值時(shí),應(yīng)該把這些大于平均值的數(shù)放在y數(shù)組的前半部分,因而此空應(yīng)該填y[j++]。填空3:此空表明當(dāng)x[i]不等于什么時(shí),x[i]中的數(shù)要賦值給y數(shù)組,由題意可知此空只能填寫一1。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:比較兩個字符串,將長的字符串的首地址作為函數(shù)值返回。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODII.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include/*********found*********/doublefun(ohar*s,char*t){ints1=0,t1=0;char*ss,*tt,ss=s;tt=t;while(*ss){s1++;/*********found*********/(*ss)++;}while(*tt){t1++;/*********found*********/(*tt)++;}if(t1>s1)returnt;elSereturns;}voidmain(){chara[80],b[80];printf("\nEnterastring:");gets(a);printf("\nEnterastringagain:");gets(b);printf("\nThelongeris:\n\n%s\n",fun(a,b));}標(biāo)準(zhǔn)答案:(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;知識點(diǎn)解析:(1)在主函數(shù)的輸出語句中,函數(shù)fun是以字符串格式輸出的,所以定義函數(shù)時(shí)應(yīng)為char*fun(char*s,char*t)。(2)和(3)這里是地址加1,而不是內(nèi)容加1,所以改為ss++和tt++。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII碼值也為奇數(shù)的字符之外,其余的所有字符全部刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若S所指字符串的內(nèi)容為“ABCDEFGl2345”,其中字符A的ASCII碼值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];printf("\nPleaseenterstrings:");Scanf("%s",s);fun(,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:voidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);for(i=0;i知識點(diǎn)解析:本題要求除了下標(biāo)為奇數(shù)同時(shí)ASCII碼值也為奇數(shù)的字符,其余的所有字符都刪除,即要留下下標(biāo)為奇數(shù)同時(shí)ASCII碼值也為奇數(shù)的字符。所以if的條件語句應(yīng)為:if(i%2!=O&&s[i]%2!=0)。國家二級C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯,請改正其中的錯誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:TestClass1TestClass2注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。#include<10Stream.h>#include<assert.h>structTestClass0{//********error********virtualvoidfun();};classTestClass1:publicTestClass0{voidfun(){cout<<"TestClass1"<<endl;}};classTestClass2:publicTestClass0{voidfun(){cout<<"TestClass2"<<endl;}};voidmain(){TestClass*p;TestClass1obj1;TestClass2obj2;//********error********p=*obj1;p->fun();//********error********p=*obj2;p->fun();return;}標(biāo)準(zhǔn)答案:(1)virtualvoidfun()=0;(2)P=&obj1;(3)p=&obj2;知識點(diǎn)解析:(1)如果在基類中并不使用這個虛函數(shù),其返回值也是沒有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun()應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)的時(shí)候初始化為0的函數(shù)。即第1個標(biāo)識下的“virtualvoidfun()=0;”。(2)第2個標(biāo)識下的P為指針變量,將對象obj1賦值給p,實(shí)際上是p指向?qū)ο髈bj1的地址,所以“p=*obj1;”修改為“p=&0bi1;”。(3)第3個標(biāo)識下的“p=*obj2;”語句同(2),修改為“p:&obj2;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(intN[4])的功能是用4個數(shù)字,組成互不相同且無重復(fù)數(shù)字的三位數(shù),并將滿足所有條件的數(shù)字輸出到屏幕,并且每輸出一個三位數(shù)字就換一行。程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、0。組成所有的排列后再去掉不滿足條件的排列。如果判定第一個數(shù)字是0則也去掉。#include<iostream.h>voidfun(intN[4]){}intmain(){intN[4]={1,2,3,0};fun(N);return0;}標(biāo)準(zhǔn)答案: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)//當(dāng)三位數(shù)不同,并且百位不為0{cout<<N[i]<<N[j]<<N[k]<<endl;//輸出這三位數(shù)組成的數(shù)字}}}知識點(diǎn)解析:(1)利用三層循環(huán),對要三位數(shù)字是否相同進(jìn)行判斷。(2)如果三位數(shù)不同,并且百位不為0。那么依次輸出這三位數(shù),即為三位數(shù)組成的數(shù)字。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù),請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0,請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型,打印出性別,請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。輸出的內(nèi)容如下:Sex=ManSex=Woman注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include<iostream.h>classPerson{public://********1********voidprint(){};intsex;};classMan:publicPerson{public:Man(){//********2********}voidprint(){cout<<"Man"<<endl;};};classWoman:publicPerson{public:Woman(){//********3********}voidprint(){cout<<"Woman"<<endl;};};//********4********{cout<<"Sex=";p.print();}intmain(){Manm;fun(m);Womann;fun(n);return0;}標(biāo)準(zhǔn)答案:(1)將“voidprint(){};”補(bǔ)充完整為:virtualvoidprint(){};(2)添加語句:sex=1;(3)添加語句:sex=0;(4)添加語句:voidfun(Person&p)知識點(diǎn)解析:(1)題目1要求“基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以第1個標(biāo)識下的“voidprint(){};”語句修改為“virtualvoidprint(){};”。(2)題目2要求“類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1”?;怭erson中變量sex是用來存放性別的,Man繼承Person,所以Man中性別的變量可以使用基類中的sex變量,設(shè)置性別為1,即“sex=1;”。(3)題目3要求“類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0”。同(2),在第三個標(biāo)識下添加“sex=0;”。(4)題目4要求“實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型.打印出性別”。根據(jù)“p.print();”語句知道,fun()函數(shù)的形參為指針p,由于它調(diào)用了基類erson中的成員函數(shù)print(),所以p的基類為Person,即添加函數(shù)fun()的定義為“voidfun(Person&p)”。國家二級C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“電風(fēng)扇”)類和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0品牌:清風(fēng)牌,電源:開,風(fēng)速:3品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0注意:只修改每個“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。1#inclUde2usingnamespacestd;3classElectricFan{//“電扇”類4char:lcbrand;5intintensity;//風(fēng)速:0-關(guān)機(jī).1-弱,2-中,3-強(qiáng)6public:7ElectricFan(constchar*thebrand):intensity(0){8brand=newchar[strlen(the_brand)+1];9strcpy(brand,the_brand);10}11~ElectricFan(){delete[]brand;}12//ERROR**********found**********13constchar*theBrand()const{return*brand;}//返回電扇品牌14inttheIntensity()const{returnintensity;}15//返回風(fēng)速16boolisOn()const{returnintensity>0;}17//返回電源開關(guān)狀態(tài)18//ERROR**********found**********19voidturnOff(){intensity=1;}//關(guān)電扇20voidset工ntensity(intinten){21//開電扇并設(shè)置風(fēng)速22//ERROR**********found**********23if(intensity>=1&&intensity<=3)24intensity=inten;25}26voidshow(){27cout<<"品牌:"<<theBrand()<<"牌"28<<",電源:"<<(isOn()?"開":"關(guān)")29<<",風(fēng)速:"<標(biāo)準(zhǔn)答案:(1)constchar*theBrand()const{retumbrand;}//返回電扇品牌(2)voidturnOff(){intensity=0;}//關(guān)電扇(3)if(inten>=1&&inten<=3)intensity=inten;知識點(diǎn)解析:(1)主要考查考生對指針的掌握情況,因?yàn)閎rand是一個動態(tài)指針,*brand表示字符串的首個字符,brand表示動態(tài)數(shù)組,這里要返回動態(tài)數(shù)組存儲的品牌名稱。(2)主要考查考生對成員函數(shù)的掌握情況,根據(jù)題目中類的定義中私有成員的定義:intintensity;//風(fēng)速:0-關(guān)機(jī),1-弱,2-中,3-強(qiáng),可知本函數(shù)要關(guān)電扇,因此在這里in-tensity=0;。(3)主要考查考生對成員函數(shù)的掌握,根據(jù)題目中函數(shù)的注釋:開電扇并設(shè)置風(fēng)速,可知if語句里要判斷的應(yīng)該是形參inten而不是intensity。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類Base和Derived,以及主函數(shù)main。程序文本中位于每行“//****found****”下面的一行內(nèi)有一處或多處下畫線標(biāo)記,請?jiān)诿總€下畫線標(biāo)記處填寫合適的內(nèi)容.并刪除下畫線標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出應(yīng)為:sum=55。注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容。1#include2usingnamespacestd;3classBase4{5public:6Base(intm1,intm2){7mem1=m1;mem2=m2;8}9intsum(){returnmeml+mem2;)10private:11intmeml,mem2;//基類的數(shù)據(jù)成員12};1314//派生類Derived從基類Base公有繼承15//**********found**********16classDerived:17{18public:19//構(gòu)造函數(shù)聲明20Derived(intm1,intm2,intm3);21//sum函數(shù)定義,要求返回mem1、mem2和mem3之和22//**********found**********23intsum(){return______+mem3;}private:24intmem3;//派生類本身的數(shù)據(jù)成員25};2627//構(gòu)造函數(shù)的類外定義,要求由m1和m2分別初始化mem1和mem2.由m3初始化mem328//**********found**********29______Derived(intm1,intm2,intm3):30//**********found**********31________,mem3(m3){)32intmain(){33Basea(4,6);34Derivedb(10,15,20);35intsum=a.sum()+b.sum();36cout<<"sum="<標(biāo)準(zhǔn)答案:(1)publicBase(2)Base::sum()(3)Derived::(4)Base(m1,m2)知識點(diǎn)解析:(1)主要考查考生對公有繼承的掌握情況,根據(jù)題目要求:派生類Derived從基類Base公有繼承,因此這里使用public來公有繼承。(2)主要考查考生對成員函數(shù)的掌握情況,根據(jù)題目對sum函數(shù)的要求:sum函數(shù)定義,要求返回mem1、mem2和mem3之和,因此這里直接調(diào)用基類的sum函數(shù),再加上mem3就滿足題目要求。(3)主要考查考生對構(gòu)造函數(shù)的掌握情況,由于Derived的構(gòu)造函數(shù)在類外定義,因此要加上類名和作用域符,即Derived::。(4)主要考查考生對構(gòu)造函數(shù)的掌握情況,因?yàn)镈erived是Base類的派生類,所以其構(gòu)造函數(shù)要使用成員列表初始化先給Base初始化。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。sort成員函數(shù)的功能是將當(dāng)前數(shù)據(jù)表中的元素升序排列。請編寫這個sort函數(shù)。程序的正確輸出應(yīng)為:排序前:7,1,3,11,6,9,12,10,8,4,5,2排序后:1,2,3,4,5,6,7,8,9,10,11,12要求:補(bǔ)充編制的內(nèi)容寫在“//**********333**********”與“//******666******”兩行之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序調(diào)用。1//DataList.h2#include3usingnamespacestd;4classDataList{//數(shù)據(jù)表類5intlen;6double*d;7public:8DataList(intlen,doubledata[]=NULL);9-DataList(){delete[]d;}10intlength()const{returnlen;}//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個數(shù))11doublegetElement(inti)const{re-iturnd[i];}12voidsort();//數(shù)據(jù)表排序13voidshow()const;//顯示數(shù)據(jù)表14};15voidwriteToFile(char*,constDataList&);1//main.cpp2#include"DataList.h"34DataList::DataList(intfen,doubledata[]):len(fen){5d=newdouble[len];6for(inti=0;i標(biāo)準(zhǔn)答案:1for(inti=0;id[j])//d[i]和d[j]比較認(rèn),如果大于,就d[i]和d[j]值交換4{5inttemp=d[i];//把臨時(shí)整型變量temp賦值為d[i]6d[i]=d[j];//把d[j]賦值給d[i]7d[j]=temp;//把temp值賦給d[j]8}知識點(diǎn)解析:本題使用最簡單的冒泡排序算法,首先明確要排序的動態(tài)數(shù)組d,其長度為len,在此可以使用兩個下標(biāo)i和j相比較,當(dāng)d[i]>d[j]時(shí),數(shù)組內(nèi)的值利用中間變量temp進(jìn)行交換。國家二級C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請打開考生文件夾下的解決方案文件proj1,其中:有點(diǎn)類Point和線段類Line和主函數(shù)main的定義,程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出應(yīng)為:p1=(8,4)p2=(3,5)注意:只修改兩個“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。#inclucle<iostream>#include<cmath>usingnamespacestd;classPoint{doublex,y;public:Point(doublex=0.0,doubley=0.0)//ERROR*******found*******{x=x;y=y;}doublegetX()const{returnx;}doublegetY()const{returny;}//ERROR*******found*******voidshow()const{cout<<’(’<<x<<’,’<<y<<’)’}};classLine{Point;p1,p2;public:Line(Point;pt1,Pointpt2)//ERROR*******found*******{pt1=p1;pt2=p2;}PointgetP1()const{returnp1;}PointgetP2()const{returnp2;}};intmain(){Lineline(Point:(8,4),Point(3,5));cout<<"p1=";line.getP1().show();cout<<"p2=";line.getP2().show();tout<<endl;return0;}標(biāo)準(zhǔn)答案:(1):x(x),y(y){}或{this->x=x,this->y=y;}(2)voidshow()const{eout<<’(’<<x<<’,’<<y<<’)’;}(3):p1(pt1),p2(pt2){}或{p1=pt1;p2=pt2}知識點(diǎn)解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,因?yàn)樾螀⒚退接谐蓡T名稱一樣,因此不能直接賦值,在這里使用成員列表初始化,也可以使用this指針賦值。(2)主要考查考生對語句基本語法的掌握,根據(jù)語句:voidshow()const{tout<<’(’<<x<<’,’<<y<<’)’}??煽闯龊瘮?shù)體內(nèi)并沒有“;”作為tout語句的結(jié)束符,因此程序錯誤。(3)主要考查考生對構(gòu)造函數(shù)的掌握,形參是pt1和pt2,這里寫反了,也可以他用成員列太表初始化法,可以避免這種錯誤。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請打開考生文件夾下的解決方案文件proj2,該工程中包含程序文件main.cpp,其中有類Mammal(“哺乳動物”)、類Elephant(“大象”)、類Mouse(“老鼠”)的定義和主函數(shù)main的定義。請?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述定義。此程序的正確輸出結(jié)果應(yīng)為:ELEPHANTMOUSE注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#include<iostream>usingnamespacestd;enumcategory{ENPTY,ELEPHANT,NOUSE);char*output[]={"ENPTY","ELEPHANT","NOUSE"};classMarrlitlal{public:Nammal(char*str){//*******found*******name=new_______strcpy(name,str);}virtualchar*WhoAmI()=0;virtual~Nammal(){delete[]name;}voidPrint(){cout<<WhoAmI()<<endl;}private:char*name;};classElephant:publicNammal{public://*******found*******Elephant(char*str):_______{}char*WhoAmI(){returnoutput[ELEPHANT];}};classNouse:publicNammal{public:Mouse(char*str):Mammal(str){}//*******found*******char*WhoAml(){_______}};intmain(){//*******found*******Mammal*pm=new_______("Huanhuan");pm->Print:();deletepm;pm=newNouse("Micky");pm->Print();deletepm;return0;}標(biāo)準(zhǔn)答案:(1)char[strlen(str)+1];(2)Mammal(str)(3)returnoutput[MOUSE];(4)Elephant知識點(diǎn)解析:(1)主要考查分配空間,程序要給name分配空間,由下一條語句中strcpy(name,str)可知程序要把字符串str復(fù)制給name,因此要分配的空間大小為strlen(str)+1。(2)主要考查考生對構(gòu)造函數(shù)的掌握,因?yàn)镋lephant類是Mammal類的派生類,所以其構(gòu)造函數(shù)要使用成員列表先對Mammal類初始化。(3)主要考查考生對枚舉類型的掌握,先看程序:enumcategory{EMPTY,ELEPHANT,MOUSE}。再參考Elephant類中的WhoAmI函數(shù):char*WhoAmI(){returnoutput[ELEPHANT];}??芍@里要填寫的返回語句為:returnoutput[MOUSE];。(4)主要考查考生對派生類的掌握,題目要求輸出:ELEPHANTMOUSE可知,要先調(diào)用Elephant類的WhoAmI函數(shù),因此給指針pm分配Elephant類空間。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請打開考生文件夾下的解決方案文件proj3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個動態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對象的深層復(fù)制。請編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayv1={1,2,3,4,5}ValArrayv2={2,2,2,2,2}要求:補(bǔ)充編制的內(nèi)容寫在“//*******333*******”與“//********666********”之間。不要修改程序的其他部分。注意:相關(guān)文件包括:main.cpp、ValArray.h。程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//ValArray.h#include<iostream>usingnamespacestd;classValArray{int*v;intsize;public:ValArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i<Size;i++)v[i]=p[i];}ValArray(constValArray&other);~ValArray(){delete[]v;}voidsetElement(inti,intval){v[i]=val;}voidprint(ostream&out)const{out<<’{’;for(inti=0;i<size-1;i++)out<<v[i]<<",";out<<v[size-1]<<’}’;}};voidwriteToFile(constchar*);//main.cpp#include"ValArray.h"ValArray::ValArray(constValArray&other){//********333********//********666********}intmain(){constinta[]={1,2,3,4,5};ValArrayv1(a,5);ValArrayv2(v1);for(inti=0;i<5;i++)v2.setElement(i,2);cout<<"ValArrayv1=";v1.print(cout);cout<<endl;cout<<"ValArrayv2=";v2.print(cout);cout<<endl;writeToFile("");return0;}標(biāo)準(zhǔn)答案:size=other.size;//把對象數(shù)組的大小賦值給sizev=newint[other.size];//根據(jù)對象數(shù)組的大小動態(tài)分配數(shù)組vfor(inti=0;i<size;++i)v[i]=other.v[i];//遍歷整個對象的數(shù)組把值other.v[i]放到數(shù)組v中知識點(diǎn)解析:主要考查考生對復(fù)制構(gòu)造函數(shù)的掌握。由函數(shù)名:ValArray::ValArrav(constValArray&other),知道要復(fù)制的對象是other,對由ValArray類的成員:int*v;intsize;知道要復(fù)制的內(nèi)容是動態(tài)數(shù)組v及整型變量size。動態(tài)數(shù)組要使用new語句分配內(nèi)存,最后利用for循環(huán)語句來完成復(fù)制過程。國家二級C++機(jī)試(操作題)模擬試卷

溫馨提示

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

最新文檔

評論

0/150

提交評論