版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷16(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾progl下的工程prog1。此工程中包含程序文件main.cpp,其中有類Score(“成績(jī)”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR*****found****”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:學(xué)號(hào):12345678課程:英語總評(píng)成績(jī):85注意:只修改每個(gè)“//ERROR****found****”下的一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;clasSScore{public:Score(constchar‘thecourse,constchar*theidrintthenormallintthemidterm,inttheendofterm):course(thecourse),normal(thenormal),midterm(themidterm),endofterm(theendofterm){//ERROR*********found**********strcpy(theid,studentid);}constchar*getCourse()const{returncourse;)//返回課程名稱//ERROR*********found*********constchar*getID()const{return&studentid;)//返回學(xué)號(hào)intgetNormal()const{returnnormal;)//返回平時(shí)成績(jī)intgetMidterm()const{returnmidterm;)//返回期中考試成績(jī)intgetEndOfTerm()const{returnend—of—term;}//返回期末考試成績(jī)intgetFinal()const;//返回總評(píng)成績(jī)private:constchar*course;//課程名稱charstudentid[12];//學(xué)號(hào)intnormal;//平時(shí)成績(jī)intmidterm;//期中考試成績(jī)intendofterm;//期末考試成績(jī)};//總評(píng)成績(jī)中平時(shí)成績(jī)占20%,期中考試占30%,期末考試占50%,最后結(jié)果四舍五入為一個(gè)整數(shù)//ERROR*********found*********intgetFinal()const{returnnormal*0.2+midterm*0.3+end—of—term*0.5+0.5;}intmain(){charEnglish[]=“英語”;Scorescore(English,“12345678”,68,83,92);cout<<“學(xué)號(hào):”<標(biāo)準(zhǔn)答案:(1)strepy(studentjd,thejd);(2)eonstchar*getlD()const{returnstudentjd;}(3)intScore::getFinal.()const{知識(shí)點(diǎn)解析:本題考查的是Score類,其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、strcpy函數(shù)、const函數(shù)和成員函數(shù)。strcpy()函數(shù)和strlen()函數(shù)等經(jīng)常會(huì)考到,要注意它們的參數(shù)要求。類的成員函數(shù)在類外定義時(shí)需要加上類名的作用域符。【解題思路】(1)主要考查考生對(duì)strepy()函數(shù)的掌握情況,strcpy(參數(shù)一,參數(shù)二)函數(shù)的功能是將參數(shù)二的字符串復(fù)制給參數(shù)一,因此在這里student-id應(yīng)該位于參數(shù)一的位置,即strcpy(studentjd,thejd);。(2)主要考查考生對(duì)函數(shù)返回值的掌握情況,根據(jù)注釋:返回學(xué)號(hào)可知學(xué)號(hào)應(yīng)該由一個(gè)字符串組成。再看函數(shù)要返回的類型:constchar術(shù),可知要返回一個(gè)char型指針,也就是一個(gè)char型數(shù)組,而&studentjd是一個(gè)char型數(shù)組指針,因此直接寫studentjd即可。(3)主要考查考生對(duì)類的成員函數(shù)的掌握情況,因?yàn)間etFinal函數(shù)是Score類的成員函數(shù),所以在定義時(shí)要加上類名和作用域符,即Score::?!窘忸}寶典】主要考查考生對(duì)strcpy函數(shù)、函數(shù)返回值和成員函數(shù)的掌握情況,在含有動(dòng)態(tài)數(shù)組或者字符數(shù)組的類中,常常會(huì)涉及strepy、strlen等函數(shù)的使用,要注意這些函數(shù)的參數(shù)要求。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾prog2下的工程pmg2,此工程中包含一個(gè)程序文件mmn.cpp,其中有“班級(jí)”類Class和“學(xué)生”類Student的定義,還有主函數(shù)main的定義。在主函數(shù)中定義了兩個(gè)“學(xué)生”對(duì)象,他們屬于同一班級(jí)。程序展示,當(dāng)該班級(jí)換教室后,這兩個(gè)人的教室也同時(shí)得到改變。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:改換教室前:學(xué)號(hào):0789姓名:張三班級(jí):062113教室:521學(xué)號(hào):0513姓名:李四班級(jí):062113教室:521改換教室后:學(xué)號(hào):0789姓名:張三班級(jí):062113教室:311學(xué)號(hào):0513姓名:李四班級(jí):062113教室:311注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classClass{//“班級(jí)”類public:Class(constchar*id,constchar*room){strcpy(classid,id);//*********found**********}constchar*getClasSID()constfreturnclassid;)//返回班號(hào)//*********found**********constchar*getClassroom()const{_______)//返回所在教室房號(hào)voidchangeRoomTo(constchar*newroom){//改換到另一個(gè)指定房號(hào)的教室strcpy(classroom,newroom);}private:charclassid[20];//班號(hào)charclassroom[20];//所在教室房號(hào)};classStudent{//“學(xué)生”類charmyid[i0];//學(xué)號(hào)charmyname[20];//姓名Class&my_class;/is;st在教室public://*********found**********Student(constchar*the_id,constchar*the_name,Class&the—class):________{strcpy(my_id,the—id);strcpy(my_name,the_name);}constchar*getID()const{returnmy_id;)constchar*getName()const{returnmy—name;)ClassgetClass0const{returnmy_class;)};voidshowStudent(Student*stu){cout<<“學(xué)號(hào):”<getID()<<“”;cout<<“姓名:”《stu->getName()<<“”;cout<<“班級(jí):”<getClass().getClassID()<<“”;cout<<“教室:”<getClass().getClassroom()<標(biāo)準(zhǔn)答案:(1)strepy(classroom,loom);(2)returnclassroom;(3)my—class(the—class)(4)cla.changeRoomTo(“311”);知識(shí)點(diǎn)解析:本題考查的是Class類和Student類,其中涉及構(gòu)造函數(shù)、eonst函數(shù)和strcpy函數(shù)。在Student類中使用Class類,在C++中很常見,在調(diào)用的時(shí)候要注意類的調(diào)用格式及構(gòu)造函數(shù)。【解題思路】(1)主要考查考生對(duì)strcpy函數(shù)的掌握情況,根據(jù)上一條語句:syrcpy(class_id,id);可知,這條語句要復(fù)制字符串room,因此使用strcpy函數(shù)復(fù)制,即strcpy(classroom,room);。(2)主要考查考生對(duì)函數(shù)返回值的掌握情況,根據(jù)函數(shù)要求:返回所在教室房號(hào)及函數(shù)要求返回的類型為congtchar,*,可以得出這里直接使用return語句返回classroom即可。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看函數(shù)體中:strcpy(myjd,the—id);strcpy(my—name,the—name);可知只有參數(shù)Class&the—class未使用,因此在這里使用成員列表初始化給my—class賦初始值。(4)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,程序要求062113班的教室由521改換到311。在類Class中已經(jīng)定義了函數(shù):voidchangeRoomTo(constchar*new—room),因此直接調(diào)用函數(shù)changeRoomTo即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾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ù)就保存在c(1ef[i]中。成員函數(shù)getValue計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值是由參數(shù)指定的。請(qǐng)補(bǔ)充完成文件Polynomial.cpp中成員函數(shù)getValue的定義。此程序的正確輸出結(jié)果應(yīng)為:Valueofplwhenx=2.0:59.8Valueofp2whenx=3.0:226.8注意:只在函數(shù)getValue的“//**********333**********”和“/**********666**********”之間填入若干語句,不要改動(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;intnum0fterms;};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)的乘方動(dòng)作{xJalue*=x;j一一,}value+=coef[i]*xvalue;//把i項(xiàng)的乘方結(jié)果乘以該項(xiàng)系數(shù)后加進(jìn)value中}知識(shí)點(diǎn)解析:本題考查Polynomi~類,其中涉及構(gòu)造函數(shù)、動(dòng)態(tài)數(shù)組、析構(gòu)函數(shù)和const函數(shù)?!窘忸}思路】題目要求成員函數(shù)getValue計(jì)算多項(xiàng)式的值,多項(xiàng)式中x的值由參數(shù)指定,多項(xiàng)式的值value為各次項(xiàng)的累加和。由類的定義可知數(shù)組coef中存儲(chǔ)的是各次項(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ù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,該工程中包含程序文件main.cpp,其中有類Clock(“時(shí)鐘”)的定義和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Initialtimesare0d:0h:0m:59sAfteronesecondtimesare0d:0h:1m:0s注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classclock{public:Clock(unsignedlongi=0);voidset(unsignedlongi=0);voidprint()const;voidtick();//時(shí)間前進(jìn)一秒Clockoperator++();private:unsignedlongtotal_sec,secondsrminutes,hours,days;};Clock∷Clock(unsignedlongi):total_sec(i),seconds(i%60),minutes((i/60)%60),hours((i/3600)%24),days(i/86400){)voidClock∷set(unsignedlongi){totalsec=i;seconds=i%60;minutes=(i/60)%60;hours=(i/3600)%60;days=i/86400;}//ERROR*******found*******voidClock∷print(){cout<<days<<"d:"<<hours<<"h:"<<minutes<<"m:"<<seconds<<"s"<<end1;}voidClock∷tick(){//ERROR*******found*******set(totalsec++);}ClockClock∷operator++(){tick();//ERROR*******found*******returnthis;}intmain(){Clockck(59);cout<<"Initialtimesare"<<end1;ck.print();++ck;cout<<"After0nesecondtimesare"<<end1;ck.print();retuEn0;}標(biāo)準(zhǔn)答案:(1)voidClock∷pnnt()const(2)set(++total_sec);(3)return*this;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)成員函數(shù)的掌握,由Clock類中對(duì)函數(shù)print的聲明voidprint()const;可知,在定義print函數(shù)時(shí)少了const。(2)主要考查考生對(duì)++操作的掌握,根據(jù)函數(shù)要求,時(shí)間要先前進(jìn)一秒,再調(diào)用函數(shù)set,因此total_see++應(yīng)改為++total_sec。(3)主要考查考生對(duì)this指針的掌握,函數(shù)要求返回值Clock,即返回一個(gè)類,而不是指針,因此使用*this。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含程序文件main.cpp,其中有類Mammal(“哺乳動(dòng)物”)、類Elephan(“大象”)、類Nouse(“老鼠”)的定義和主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述定義。此程序的正確輸出結(jié)果應(yīng)為:ELEPHANTMOUSE注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;enumcategory{EMPTY,ELEPHANT,NOUSE};char*output[]={"EMPTY","ELEPHANT","NOUSE");cLassMammal{public:Nammal(char*str){//**********found**********name=new_______strcpy(name,str);}virtualchar*WhoamI()=0;virtual~Nammal(){delete[]name;}voidPrint(){cout<<WhoAmI()<<end1;}private:char*name;};classElephant:publicNammal{public://*********found*********Elephant(char*str):__________{}char*whoAmI(){returnoutput[ELEPHANT];}};classNouse:publicNammal{public:Nouse(char*str):Mammal(str){}//**********found**********char*WhoAmI(){_______}};intmain(){//**********found**********Mammal*pm=new_______("Huanhuan");pm->Print();deletepm;pm=newMouse("Micky”");pm>-Print();deletepm;return0;}標(biāo)準(zhǔn)答案:(1)char[strlen(str)+1];(2)Mammal(str)(3)returnoutput[MOUSE];(4)Elephant知識(shí)點(diǎn)解析:(1)主要考查分配空間,程序要給name分配空間,由下一條語句中strcpy(name,str)可知程序要把字符串str復(fù)制給name,因此要分配的空間大小為strlen(str)+1。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)镋lephant類是Mammal類的派生類,所以其構(gòu)造函數(shù)要使用成員列表先對(duì)Mammal類初始化。(3)主要考查考生對(duì)枚舉類型的掌握,先看程序:enumcategory{EMPTY,ELEPHANT,MOUSE}。再參考Elephant類中的WhoAmI函數(shù):char*WhoAmI(){returnoutput[ELEPHANT];}??芍@里要填寫的返回語句為:returnoutput[MOUSE];。(4)主要考查考生對(duì)派生類的掌握,題目要求輸出:ELEPHANTMOUSE可知,要先調(diào)用Elephant類的WhoAml函數(shù),因此給指針pm分配Elephant類空間。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明了一個(gè)單向鏈表類sLst。sList的成員函數(shù)Prepend的功能是在鏈表頭部加入一個(gè)新的元素。請(qǐng)編寫成員函數(shù)Pepend。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序的輸出應(yīng)為:B->A->###A->###A->###exitinginnerblockexitingouterblock注意:只在函數(shù)Prepend的“********333********”和“********666********”之間填入若干語句,不要改動(dòng)程序中的其他內(nèi)容。//SLiSt.hstructsListItem{chardata;sListItem*next;};classsList{public:sList():h(0){}//0表示空鏈表~sList();voidPrepend(charc);//在鏈表前端加入元素voidDel();//刪除鏈表首元素sListItem*First()const{Eeturnh;)//返回鏈表首元素voidPrint()const;//打印鏈表內(nèi)容voidRelease();//銷毀鏈表private:sListItem*h;//鏈表頭},voidwriteToFile(constchar*);//main.cpp#include<iostream>#include"sList.h"suingnamespacestd;sList∷~sList(){Release();}voidsList∷Prepend(charc){//********333********//********666********}voidsList∷Dei(){sListltem*temp=h;h=h->next;deletetemp;}voidsList∷Print()const{sListItem*temp=h;while(temp!=0)//判斷是否到達(dá)鏈表尾部{cout<<temp->data<<"->";temp=temp->next;}cout<<"\n###"<<end1;}voidsList∷Release(){while(h!=0)Del();}intmain(){sList*ptr;{sListobj;obj.Prepend(’A’);obj.Prepend(’B’);obj.Print();obj.Del();obj.Print();ptr=&obj;ptr->Print(),tout<<"exitinginnerblock"<<end1;}cout<<"exitingouterblock"<<end1;writeToFile("");return0;}標(biāo)準(zhǔn)答案:sListItem*temp=newsListItem;//動(dòng)態(tài)分配空間給結(jié)構(gòu)體temp的指針temp->data=c;//把c賦值于結(jié)構(gòu)體temp成員datatemp->next=h;//把h賦值于結(jié)構(gòu)temp體成員nexth=temp;//把temp賦值給h,即h指向temp指向的空間知識(shí)點(diǎn)解析:主要考查考生對(duì)鏈表的掌握,成員函數(shù)Prepend的功能是在鏈表頭部加入一個(gè)新元素。形參e是一個(gè)char型變量,因此要定義一個(gè)新的結(jié)構(gòu)體指針temp,并給它分配sListltem類型空間,把形參c中的值賦給temp的數(shù)據(jù)域,并使temp通過指針鏈接到鏈表E。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:用函數(shù)指針指向要調(diào)用的函數(shù),并進(jìn)行調(diào)用。規(guī)定在【2】處使f指向函數(shù)n,在【3】處使f指向函數(shù)f2。當(dāng)調(diào)用正確時(shí),程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includedoublef1(doublex){returnx*x;)doublef2(doublex,doubley){returnx*y;)doublefun(doublea,doubleb){/*********found*********/【1】(*f)();doubler1,r2;/*********found*********/f=【2】;r1=f(a);/*********found*********/f=【3】;r2=(*f)(a,b);returnr1+r2;}main(){doublex1=5,x2=3,r;r=fun(x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r);}標(biāo)準(zhǔn)答案:(1)double(2)f1(3)f2知識(shí)點(diǎn)解析:填空1:(*f)()代表一個(gè)指向函數(shù)的指針變量,而本題所被調(diào)用的f1、f2兩函數(shù)的返回值均為double型,因而此空應(yīng)該填寫double。填空2:因?yàn)樵诮o函數(shù)指針變量賦值時(shí),只需給出函數(shù)名而不必給出參數(shù),因而此空應(yīng)該填寫f1。填空3:同填空2,此空應(yīng)該填寫f2。相關(guān)知識(shí)點(diǎn):(1)指向函數(shù)的指針變量的一般定義形式為:數(shù)據(jù)類型(*指針變量名)();(2)函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。(3)在給函數(shù)指針變量賦值時(shí),只需給出函數(shù)名而不必給出參數(shù)。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)Bum)為止。例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includefloatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/*********found*********/while(t>=num){pi=pi+t;n=n+2;s=一s;/*********found*********/t=s%n;}pi=pi*4;returnpi;}voidmain(){floatn1,n2;system("CLS");printf("Enterafloatnumber:");scarlf("%f",&n1);n2=fun(n1);printf("%6.4f\n",n2);}標(biāo)準(zhǔn)答案:(1)while(fabs(t)>=num)(2)t=s/n;知識(shí)點(diǎn)解析:(1)函數(shù)fun中while語句的作用是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì)計(jì)算s的值。題目要求最后一項(xiàng)的絕對(duì)值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)是while(fabs(t)>=num)。(2)變量t用來存放最后一項(xiàng)的值,因?yàn)槊恳豁?xiàng)均為1或一1除以一個(gè)數(shù),所以此處應(yīng)使用除法運(yùn)算符“/”。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,其功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個(gè)字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為WWWWSSSSHHHH則字符串中的內(nèi)容應(yīng)是:WSHWSHWSHWSH。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include#defineM3#defineN4voidfun(char(*s)[N],char*b){}voidmain(){chara[100],w[M][N]={{’W’,’W’,’W’,’W’}、{’S’,’S’,’S’,’S’},{’H’,’H’,’H’,’H’));inti,j;printf("Thematrix:\n");for(i=0;i標(biāo)準(zhǔn)答案:voidfun(char(*s)[N],char*b){inti,j,k=0;for(i=0;i知識(shí)點(diǎn)解析:看到程序后,很容易便能想到用循環(huán)嵌套的方法,本題中按列的順序依次放到一個(gè)字符串中,所以列標(biāo)變化慢,行標(biāo)變化快。注意:第1個(gè)循環(huán)條件為i國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Copyconstructorcalled.Thevalueis10Destructorcalled.Destructorcalled.注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<ioStream>usingnamespacestd;classMyClass{public://ERROR*******found*******MyClass(inti){value=i;cout<<"Constructorcalled."<<endl;}//ERROR*******found*******MyClasS(constMyClassP){value=p.value;cout<<"Copyconstruc-torcalled."<<endl;}voidPrint(){cout<<"Thevalueis"<<value<<endl;}//ERROR*******found*******void~MyClass(){cout<<"DeStructorcalled."<<endl;}private:intvalue;};intmain(){MyClassobj1;obj1.Print();MyClassobj2(obj1);obj2.Print();return0;}標(biāo)準(zhǔn)答案:(1)MyClass(inti=10)(2)MyClass(constMyClass&p)(3)~MyClass()知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù)參數(shù)默認(rèn)值,題目要求輸出語句:Thevalueis10,從主函數(shù)中可以看出,obj1并沒有初始化,但是obj1調(diào)用Print()函數(shù)時(shí)它的值為10,由此可知構(gòu)造函數(shù)的形參有默認(rèn)值,且值為10,因此得出語句MyClass(inti=10)。(2)主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握,復(fù)制構(gòu)造函數(shù)的形參都為引用,同時(shí)為了不改變形參的值要加上const,因此得出語句MyClass(constMyclass&p)。(3)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣,前面不能添加任何類型,要把void去掉。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,該工程中包含一個(gè)程序文件main.cpp,其中有“書”類Book及其派生出的“教材”類TeachingMaterial的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)诔绦蛑小埃?*********found**********”下的橫線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結(jié)果應(yīng)為:教材名:C++語言程序設(shè)計(jì)頁數(shù):299作者:張三相關(guān)課程:面向?qū)ο蟮某绦蛟O(shè)計(jì)注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;classBook{//“書”類char*title;//書名intnumpages;//頁數(shù)char*writer;/作者姓名public:Book(constchar*the_title,intpages,constchar*the_writer):numpageS(pages){title=newchar[strlen(the_titie)+1];strcpy(title,the_title);//**********found**********_______strcpy(writer,thewriter);}//**********found**********~Book(){_______}intnumOfPages()const{returnnum_pages;)//返回書的頁數(shù)constchar*theTitle()const{returntitle;)//返回書名constchar*theWriter()const{returnwriter;}//返回作者名};classTeachingMaterial:publicBook{//“教材”類char*course;public:TeachingMaterial(constchar*the_title,intpages,constchar*the_writer,constchar*the_course)//**********found**********:_______{course=newchar[strlen(the_course)+1];Strcpy(course,thecourse);}~TeachingMaterial(){delete[]course;}constchar*theCourse()const{returncourse;}//返回相關(guān)課程的名稱};intmain(){TeachingMateriala_book("C++語言程序設(shè)計(jì)",299,"張三",”面向?qū)ο蟮某绦蛟O(shè)計(jì)”);cout<<"教材名:"<<a_book.theTitle()<<endl<<"頁數(shù):"<<a_book.numOfPages()<<endl<<"作者:"<<a_book.theWriter()<<endl//**********found**********<<"相關(guān)課程:"<<_______;cout<<endl;return0;}標(biāo)準(zhǔn)答案:(1)writer=newchar[strlen(the_writer)+1];(2)delete[]title,writer;(3)Book(the_title,pages,the_writer)(4)a_book.theCourse()<<endl知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)動(dòng)態(tài)分配空間的掌握,在填空前可以參考title的初始化,即先分配空間,再使用strcpy函數(shù)復(fù)制字符串,因此這里使用writer=newchar[strlen(the_writer)+1]語句給writer分配空間,注意分配空間的大小應(yīng)為字符串長(zhǎng)度加1。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,要填寫的內(nèi)容是析構(gòu)函數(shù)的函數(shù)體,因?yàn)橛袃蓚€(gè)動(dòng)態(tài)數(shù)組title和writer,所以要釋放兩個(gè)動(dòng)態(tài)數(shù)組空間,使用語句~Book(){delete[]title,writer;}來完成。(3)主要考查考生對(duì)派生類的構(gòu)造函數(shù)的掌握,派生類必須成員初始化列表法來先給基類進(jìn)行初始化。(4)主要考查成員函數(shù)調(diào)用,題目要求輸出“相關(guān)課程:面向?qū)ο蟮某绦蛟O(shè)計(jì)”??梢灾肋@里要顯示的是course,但course是私有成員不能直接調(diào)用,要使用成員函數(shù)調(diào)用,即theCourse()。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中包含了類IntegerSet和主函數(shù)main的定義。一個(gè)IntegerSet對(duì)象就是一個(gè)整數(shù)的集合,其中包含0個(gè)或多個(gè)無重復(fù)的整數(shù);為了便于進(jìn)行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單元中。成員函數(shù)add的作用是將一個(gè)元素添加到集合中(如果集合中不存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。請(qǐng)編寫成員函數(shù)remove。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序的正確輸出結(jié)果應(yīng)為:234527283166752345627283166752345619272831667534561927283166753456192728316675要求:補(bǔ)充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)WriteToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//IntegorSet.h#ifndefINTEGERSET#defineINTEGERSET#include<iostream>usingnamespacestd;constintMAXELEMENTS=100;//集合最多可擁有的元素個(gè)數(shù)classIntegerSet{intelem[MAXELEMENTS];//用于存放集合元素的數(shù)組intcounter;//用于記錄集合中元素個(gè)數(shù)的計(jì)數(shù)器public:IntegerSet():counter(0){}//創(chuàng)建一個(gè)空集合IntegerSet(intdata[],intsize);//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個(gè)整數(shù)集合voidadd(intelement);//添加一個(gè)元素到集合中VOidremove(intelement);//刪除集合中指定的元素intgetCount()const{returncounter;)//返回集合中元素的個(gè)數(shù)intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidshow()const;};voidWriteToFile(char*);#endif//main.cpp#include"IntegerSet.h"#include<iomanip>IntegerSet::IntegerSet(intdata[],intsize):counter(0){for(inti=0j;i<size;i++)add(data[i]);}voidIntegerSet::add(intelement){intj;//從后往前尋找第一個(gè)小于等于element的元素for(J=counter;j>0;j--)if(element>=elem[j-1])break;//如果找到的是等于element的元素,說明要添加的元素已經(jīng)存在,直接返回if(j>0)if(element==elem[j-1])return;//如果找到的是小于element的元素,j就是要添加的位置//該元素及其后面的元素依次后移,騰出插入位置for(intk=counter;k>J;k--)elem[k]=elem[k-1];elem[j]=element;//將element插入到該位置counter++;//計(jì)數(shù)器加1}voidIntegerSet::remove(intelement){//********333********//********333********}voidIntegerSet::show()const{for(inti=0;i<getCount();i++)cout<<setw(4)<<getElement(i);cout<<endl;}intmain(){intd[]={5,28,2,4,5,3,2,75,27,66,31};IntegerSets(d,11);s.show();s.a(chǎn)dd(6);s.show();s.a(chǎn)dd(19);s.show();s.remove(2);s.show();s.a(chǎn)dd(4);s.show();WriteToFile("");return0;}標(biāo)準(zhǔn)答案:for(inti=0;i<counterj;1++)//遍歷整個(gè)集合(數(shù)組elem)if(element==elem[i])//如果element等于elem[i]{for(intj=i;j<counter-i;j++)//從i開始遍歷集合elemelem[j]=elem[j+1];//把elem[j+1]賦值給elem[j]counter--;//elem長(zhǎng)度自減1return;//返回}知識(shí)點(diǎn)解析:主要考查考生對(duì)有序數(shù)組的掌握,題目要求成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。遍歷數(shù)組elem中的元素,找出與形參element相等的元素,并將其刪除,每刪除一個(gè)元素,即將該元素之后的每個(gè)元素前移一位,如果不存在與形參element相等的元素則沒有操作。使用下標(biāo)i遍歷數(shù)組,if語句判斷是否與element相等。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Thisisagreart!HelloHello注意:錯(cuò)誤的語句在//********error********的下面,修改該語句即可。#includeclassCMyClass{public:voiddisplayl(){cout<<"Thisisgreat!"<標(biāo)準(zhǔn)答案:(1)charstr[6]="Hello";或charstr[]="Hello";(2)voiddisplay3(char*string)或voiddisplay3(charstring[])(3)cout<知識(shí)點(diǎn)解析:(1)"Hello"字符串的長(zhǎng)度為5,存放在字符數(shù)組中的話,字符數(shù)組的長(zhǎng)度至少為6,因?yàn)樽址麛?shù)組的最后一個(gè)字符為NULL,故第1個(gè)標(biāo)識(shí)下字符數(shù)組長(zhǎng)度為5太短,應(yīng)改成“charstr[6]="Hello";”或“charstr[1="Hello";”。(2)charstring表示string為一個(gè)char變量,代表一個(gè)字符而不是一串字符,程序要求輸出一串字符顯然字符變量做不到,應(yīng)該為字符指針或字符數(shù)組,故第2個(gè)標(biāo)識(shí)下應(yīng)改為“voiddisplay3(char*string)”或“voiddisplay3(charstring[])”。(3)編譯程序發(fā)現(xiàn)第3標(biāo)識(shí)下有錯(cuò)誤,觀察程序可知第3個(gè)標(biāo)識(shí)下語句結(jié)束沒有分號(hào),而C++語句必須以分號(hào)結(jié)束,應(yīng)加上分號(hào),即第3表示下應(yīng)改為“cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)sum(intA[NUM][NUM],intn)實(shí)現(xiàn)的功能是計(jì)算矩陣中所有非質(zhì)數(shù)數(shù)字的和。提示:函數(shù)isPrime(intn)的功能是判定當(dāng)前數(shù)字是否為質(zhì)數(shù),如果是則返回true。注意:不能修改程序的其他部分,只能修改sum()函數(shù)。#include#include#defineNUM50intA[NUM][NUM]={{10,13,59,70,6},{2,40,89,92,9},{14,55,71,11,19},{79,68,83,97,101},{102,10001,23,45}};boolisPrime(intn){if(n==1)returnfalse;if(n==2)returntrue;for(inti=2;i標(biāo)準(zhǔn)答案:intre=0;for(inti=0;i知識(shí)點(diǎn)解析:(1)矩陣A[NUM][NUM]是2維矩陣,SHIn函數(shù)的參數(shù)n給出了矩陣A的具體維數(shù),因此矩陣A中共含有n×n個(gè)有效數(shù)。(2)A[NUM][NUM]中元素可表示為A[i][j],其中i表示元素所在行數(shù),i表示元素所在的列數(shù),i、j分別從0到n.1范圍內(nèi)變化,因此設(shè)置內(nèi)外兩層循環(huán)可逐個(gè)遍歷整個(gè)矩陣尋找非質(zhì)數(shù)。(3)函數(shù)isprime提供了判斷質(zhì)數(shù)的方法,對(duì)每個(gè)元素A[i][j],調(diào)用函數(shù)isprime(A[i][j]),判斷函數(shù)的返剛值是否為假,如果為假說明不是質(zhì)數(shù),應(yīng)該累加起來。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù),請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear0的定義,返回?cái)?shù)據(jù)成員date2是否是閏年的值,是則返回1,否則返回0。請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)設(shè)置SetData0的默認(rèn)時(shí)間為:2004-12-1,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成主函數(shù)main(),完成輸出date2isaleapyear,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。提示:公元紀(jì)年的年數(shù)可以被四整除,即為閏年;被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。注意:增加或修改代碼的位置已經(jīng)用符號(hào)表示出來。請(qǐng)不要修改其他的程序代碼。#includeusingnamespacestd;ClassDate{public://********3********voidSetDate(inty,intm,intn);intIsLeapYear();VoidPrint(){cout<標(biāo)準(zhǔn)答案:(1)intyear,month,day;(2)將“return”補(bǔ)充完整為:returnfyear%400==0)||(year%4==0&&year%100!=0);(3)將“voidSetDate(inty,intm,intn);”補(bǔ)充完整為:voidSetDate(inty=2004,intm=12,intn=1);(4)將“cout<<"date2is"<<("":"not")<<"aleapyear."<知識(shí)點(diǎn)解析:(1)題目1要求“定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù)”。在程序中的Date類中的priate區(qū)域添加數(shù)據(jù)成員year、month、day的定義即可,其中它們的類型根據(jù)題目要求定義為int型。即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear()的定義”。公元紀(jì)年的年數(shù)可以被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。用程序語言表達(dá)為“(year%400==0)‖(year%4==0&&year%100!=0)”,即在第2個(gè)標(biāo)識(shí)補(bǔ)充的返回值語句為“return(year%400=0)‖(year%4==0&&year%100!=0);”。(3)題目3要求“設(shè)置SetData0的默認(rèn)時(shí)間為:2004-12-1”。程序中類Date的成員函數(shù)定義為“voidSetDate(inty,intm,intn);”,設(shè)置默認(rèn)時(shí)間為:2004.12.1,就是設(shè)置SetDate函數(shù)中的變量值分別為2004,12,1。即成員函數(shù)的定義語句修改為“voidSetDate(inty=2004,intm=12,intn=1);”。(4)題目4要求“完成主函數(shù)main(),完成輸出date2isaleapyear”。標(biāo)識(shí)4下的語句“cout<<"date2is"<<("":"not”)<<"aleapyear.”<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:sizeof(strl)=5sizeof(str2)=10sizeof(str3)=l注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//********error********的下面。(1)不能刪除assert()語句;(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。1#include2#include3voidmain()4{5char*strl=”abc”;6//********error********7assert(sizeof(strl)==3);8cout<<"sizeof(strl)=5"<標(biāo)準(zhǔn)答案:(1)assert(Sizeof(strl)==4);(2)assert(Sizeof(str2)==10);(3)assert(Sizeof(str3)==1);知識(shí)點(diǎn)解析:本題的功能是利用assert()函數(shù),則會(huì)產(chǎn)生一個(gè)中斷異常。從已定源程序的main主函數(shù)開始入手,依次執(zhí)行程序中的語句,輸出題目中要求的輸出值。本題在調(diào)試的時(shí)候并不會(huì)產(chǎn)生錯(cuò)誤,它的錯(cuò)誤是邏輯錯(cuò)誤。[解題思路](1)assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert()函數(shù)就要為真,才不會(huì)產(chǎn)生中斷異常?!癮ssert(sizeof(strl)==3);”語句中“sizeof(strl)==3”為假,這個(gè)會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。兇為strl的值為abc但是它還有一個(gè)尾符,所以它的長(zhǎng)度應(yīng)該是4,而不是3,所以第1個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str1)==4);”。(2)同(1),str2[10]說明,str2的空間為10,第2個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str2)--lO);”。(3)同(1),charstr3=23;語句說明23是字符,占空間為l,所以修改為“assert(sizeof(str3)==1);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù)。例如:abcl23abc45返回輸出:6將函數(shù)num()補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。1#include2intnum(char*str)3{45}6intmain()7{8charstr[1024];9cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:1intnumber=0;2for(inti:0;str[i]!=0;i++)3if(str[i]>’9’||str[i]<’0’)//非數(shù)字字符4number++;5returnnumber;知識(shí)點(diǎn)解析:函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù),數(shù)字從0開始到9結(jié)束,共有10個(gè),因此判斷數(shù)組字符比較簡(jiǎn)單,即“’0’<=str[i1<=’9’”,除數(shù)字字符外其余的都是非數(shù)字字符,利用這個(gè)關(guān)系可迅速判斷該字符是否是非數(shù)字字符。[解題思路](1)利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開始,直到str[i]=0(到了字符數(shù)組的尾),不斷地讀取str中讀取元素。(2)每讀到一個(gè)元素判斷是否是非數(shù)字字符,即滿足條件“str[i]>’9’||str[i]<’0’”的字符為非數(shù)字字符,非數(shù)字字符個(gè)數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個(gè)數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。此程序的運(yùn)行結(jié)果為:InCDerive’sdisplay().b=1InCDerive2’sdisplay().b=2其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義函數(shù)display()為無值型純虛函數(shù)。請(qǐng)?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z句。(2)建立類CDerive的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z句。(3)完成類CDerive2成員函數(shù)diaplay()的定義。請(qǐng)?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z句。(4)定義類Derivel的對(duì)象指針d1,類CDerive2的對(duì)象指針d2。其初始化值分別為l和2。請(qǐng)?jiān)谧⑨專?*******4********之后添加適當(dāng)?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來。請(qǐng)不要修改其他的程序代碼。1#include2USingnamespacestd;3classCBase4{5public:6CBase(inti){b=i;)7//********1********89protected:10intb;11};12classCDerive:publicCBase13{14public:15//********2********1617voiddisplay()18{19cout<<"In.CDerive’sdisplay()."<<"b="<display();32}33voidmain()34{35//********4********3637func(d1);38func(d2);39}標(biāo)準(zhǔn)答案:(1)添加語句:virtualvoiddisplay():0;(2)添加語句:CDerive(inti):CBase(i){}(3)添加語句:voiddisplay(){cout<<"InCDerive2’sdisplay()."<<"b=”<知識(shí)點(diǎn)解析:程序中定義了類CBase、CDerive和CDerive2,CDerive和CDerive2公有派生于類CBase,CDerive和CDerive2均有成員函數(shù)display(),用于輸出。函數(shù)func(CBase*obj)的參數(shù)為CBase對(duì)象指針,在函數(shù)體內(nèi)通過該指針調(diào)用其display()函數(shù)。[解題思路](1)CBase類中的display()函數(shù)是純虛函數(shù),純虛函數(shù)的定義格式為:virtual<函數(shù)類型><函數(shù)名>(<參數(shù)表>)=0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“virtualvoiddisplay()=0;”。(2)類CDerive的構(gòu)造函數(shù)用來完成類成員變量的初始化,派生類沒有自己的成員變量,可直接采用基類的構(gòu)造函數(shù)完成初始化,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“CDerive(inti):CBase(i){)”。(3)第3個(gè)標(biāo)識(shí)下是完成類CDerive2成員函數(shù)diaplay()的定義和實(shí)現(xiàn),根據(jù)要求的輸出結(jié)果“InCDerive2’Sdisplay().b=2”可知display()函數(shù)除輸出字符串“InCDerive2’sdisplay().”還輸出變量b的值,故第3個(gè)標(biāo)識(shí)下應(yīng)添加“voiddisplay(){cout<<"InCDerive2’sdisplay()."<<"b="<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有數(shù)字字符順序前移,其他字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。例如,s所指字符串為:asd123fgh543df,處理后新字符串為:123543asdfghdf。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i標(biāo)準(zhǔn)答案:(1)j(2)k(3)p或(p)知識(shí)點(diǎn)解析:填空1:函數(shù)中申請(qǐng)了兩個(gè)內(nèi)存空間,其中p存放數(shù)字字符串,t存放非數(shù)字字符串,根據(jù)條件可知,p依次存放數(shù)字字符串,其位置由j來控制,所以應(yīng)填j。填空2:利用for循環(huán)再把t中的內(nèi)容依次追加到p中,其中t的長(zhǎng)度為k,所以應(yīng)填k。填空3:處理之后的字符串存放到p中,最后返回p的首地址即可,所以應(yīng)填p。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。例如,當(dāng)給指定精度的變量eps輸入0.0005時(shí),應(yīng)輸出Pi=3.140578。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includedoublefun(doubleeps){doubles,t;intn=1;s=0.0;/*********found*********/t=0;while(t>eps){s+=t;t=t*n/(2*n+1);n++;}/*********found*********/return(s);}voidmain(){doub2ex;printf("\nPleaseenteraprecision:");scarlf("%lf",&x);printf("\nPi=%lf\n",fun(x));}標(biāo)準(zhǔn)答案:(1)t=1.0;(2)return(s*2);知識(shí)點(diǎn)解析:該題中,首先檢查變量數(shù)據(jù)類型前后是否一致,因?yàn)樽兞縯定義為double型,所以賦值時(shí)要賦以實(shí)型數(shù)值。return(s)是一個(gè)數(shù)學(xué)錯(cuò)誤,應(yīng)該返回return(s*2);。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是查找X在s所指數(shù)組中下標(biāo)的位置,并作為函數(shù)值返回,若x不存在,則返回一1。注意:部分源程序在文件PROGl.C文件中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include#include#defineN15voidNONO();intfun(int*s,intx){}main(){inta[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7r27},i,x,index;printf("a數(shù)組中的數(shù)據(jù):\n");for(i=0;i標(biāo)準(zhǔn)答案:intfun(int*s,intx){inti;for(i=0;i知識(shí)點(diǎn)解析:要找出數(shù)組中指定數(shù)據(jù)的下標(biāo),首先定義變量i用于存放數(shù)組下標(biāo),然后使用循環(huán)語句對(duì)數(shù)組進(jìn)行遍歷,依次取出一個(gè)數(shù)組元素與指定的數(shù)進(jìn)行比較,若相等,則返回該元素的下標(biāo),否則繼續(xù)判斷下一個(gè)元素,直到數(shù)組結(jié)束。若數(shù)組結(jié)束時(shí)仍沒有找到與指定數(shù)相等的元素,則返回一1。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:151注意:錯(cuò)誤的語句在//*****error******的下面,修改該語句即可。#include//*****error******enum{Sun,Mon,Tue,Wed,Thu,F(xiàn)ri,Sat,//*****error******}MyEnum;StructStruct{//*****error******intFri,intSun;};voidmain(){inti=Mon;MyEnumt=Fri;StructStr1;Str1.Fri=Mon;cout<標(biāo)準(zhǔn)答案:(1)enumMyEnum(2)},(3)intFri;知識(shí)點(diǎn)解析:(1)第一標(biāo)識(shí)下聲明枚舉類型,聲明枚舉類型的一般形式為:“enum<枚舉類型名>{<枚舉常量列表>};”,程序當(dāng)中把枚舉類型名MyEnum放到枚舉聲明后面,顯然不符合枚舉類型聲明格式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成“enumMyEnum”。(2)由(1)的分析可知,第2個(gè)標(biāo)識(shí)下也不符合枚舉類型聲明格式,應(yīng)以“;”結(jié)束,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“};”。(3)第3標(biāo)識(shí)處聲明結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>;結(jié)構(gòu)體中成員列表中各個(gè)元素是不同的變量,變量之間應(yīng)以分號(hào)隔開,而不是以逗號(hào)隔開,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為為“intFri;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是:將n所有因數(shù)存放到des中,通過length引用返回因數(shù)的個(gè)數(shù),比如fator(a,length,20)執(zhí)行后,則a:{1,2,4,5,10,20),length=6。注意:只能補(bǔ)充函數(shù)factor(),請(qǐng)勿改動(dòng)其他部分的內(nèi)容。#include#defineMAXNLEN100voidfactor(int*des,int&length,intn){}voidmain(){inta[MAXNLEN],
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東海洋大學(xué)《環(huán)境工程制圖與CAD》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工商職業(yè)技術(shù)大學(xué)《和聲(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《藏族文化概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東財(cái)經(jīng)大學(xué)《內(nèi)燃機(jī)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 社保統(tǒng)計(jì)培訓(xùn)課件
- 安全運(yùn)輸課件
- 《組織環(huán)境與文化》課件
- 培訓(xùn)體系課件要求
- 贛州師范高等專科學(xué)?!兜乩硇畔⑾到y(tǒng)開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《輔助技能》課件
- GB 14102.1-2024防火卷簾第1部分:通用技術(shù)條件
- 2024年決戰(zhàn)行測(cè)5000題言語理解與表達(dá)一套
- DZ∕T 0272-2015 礦產(chǎn)資源綜合利用技術(shù)指標(biāo)及其計(jì)算方法(正式版)
- 生物入侵與生物安全智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 《公路工程集料試驗(yàn)規(guī)程》JTG-3432-2024考核試題及答案文檔
- 在線網(wǎng)課知慧《內(nèi)經(jīng)選讀(浙中醫(yī)大)》單元測(cè)試考核答案
- 2023醫(yī)院隔離技術(shù)標(biāo)準(zhǔn)-新舊版對(duì)比
- 部編版人教版語文八年級(jí)下冊(cè)全冊(cè)課件
- 圍手術(shù)期高血糖的管理
- 常見的排序算法-冒泡排序 課件 2023-2024學(xué)年浙教版(2019)高中信息技術(shù)選修1
- 農(nóng)貿(mào)市場(chǎng)安全生產(chǎn)
評(píng)論
0/150
提交評(píng)論