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

下載本文檔

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

文檔簡介

國家二級(jí)C++機(jī)試(操作題)模擬試卷2(共9套)(共27題)國家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.epp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:1063022注意:錯(cuò)誤的語句在//********error********的下面,修改該語句即可。1#include2classCMyClass3{4private:5intnumber;6intAdd(inti)7{8returnnumber+=i;9}10intSub(inti)11{12returnnumber-=i;13}14intMul(inti)15{16returnnumber*=i;17}18intDiv(inti)19i20if(i!=0)21{22returnnumber/=i;23}24else25returnnumber;26}27//******error******28typedefint(FUNC)(int);29//******error******30FUNCfunc[];31public:32CMyClass()33{34func[0]=CMyClass::Add;35func[1]=CMyClass::Sub;36func[2]=CMyClass::Mul;37func[3]=CMyClass::Div;38number=0;39}40intCallFunction(inti,intJ)41{42//******error******43return(func[i])(J);44}45};46voidmain()47{48CMyClassmyobj;49cout<標(biāo)準(zhǔn)答案:(1)typedefint(CMyClass::*FUNC)(int);(2)FUNCfunc[4];(3)return(this->*func[i])(j);知識(shí)點(diǎn)解析:CMyClass類有一個(gè)成員變量number,多個(gè)成員函數(shù)分別實(shí)現(xiàn)加減乘除功能。使用typedef定義了一個(gè)返回值是整型并帶有一個(gè)整型參數(shù)的函數(shù)指針,并通過實(shí)例化一個(gè)容量為4的函數(shù)指針數(shù)組實(shí)現(xiàn)對(duì)類中定義的方法的調(diào)用。[解題思路](1)在類中定義函數(shù)指針須指定類名及指針定義運(yùn)算符*,因此第1個(gè)標(biāo)識(shí)下函數(shù)指針正確的定義為“typedefintrCMyClass::*FUNC)(int);”。(2)函數(shù)指針數(shù)組本身是數(shù)組類型,因此在定義時(shí)如果沒有初始化,就必須指定數(shù)組大小,在本題中因?yàn)橹羔様?shù)組包含的指針變量需要指向四種算數(shù)運(yùn)算,因此定義指針數(shù)組大小為4,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“FUNCfunc[4];”。(3)func是指針數(shù)組,因此訪問的時(shí)候需要有指針運(yùn)算符“*”,第3個(gè)標(biāo)識(shí)下應(yīng)改成“retum(this->*func[i])(j);”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分的程序。函數(shù)func(intA[NUM],intn)實(shí)現(xiàn)的功能是將數(shù)組的內(nèi)容進(jìn)行一次重新排序。排序的方法是:給定n,則下標(biāo)為i的數(shù)字與下標(biāo)為n.i的數(shù)字交換。從0開始,交換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}。注意:不能修改其他代碼。1#include2#defineNUM83voidfunc(intA[NUM],intn)4{56j7intmain()8{9intA[NUM]=(1,2,3,4,5,6,7,8);10func(A,6);11for(inti=0;i標(biāo)準(zhǔn)答案:1for(inti=0;i知識(shí)點(diǎn)解析:func()函數(shù)完成對(duì)數(shù)組內(nèi)容的重排,下標(biāo)為i的數(shù)字與下標(biāo)為n.i的數(shù)字交換,可以用循環(huán)來實(shí)現(xiàn)。[解題思路](1)用循環(huán)來實(shí)現(xiàn)該過程,題目要求從0開始,交換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打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。其中:定義了類circle和column,column類由circle類protected派生,但是兩個(gè)類的定義并不完整,請(qǐng)按照以下的要求,將程序補(bǔ)充完整。(1)定義類circle的保護(hù)數(shù)據(jù)成員函數(shù)r和area,它們都是double型的數(shù)據(jù),請(qǐng)?jiān)谧⑨專?*******1********后完成。(2)添加類circle的無參數(shù)的構(gòu)造函數(shù),使得類circle對(duì)象的r默認(rèn)值為0,請(qǐng)?jiān)谧⑨專?*******2********后完成。(3)添加派生類column的構(gòu)造函數(shù)的定義,使得參數(shù)為double型的height和radius并將其分別賦給數(shù)據(jù)成員h和基類的r請(qǐng)?jiān)谧⑨專?*******3********之后完成。(4)完成派生類column的成員函數(shù)print()的定義,請(qǐng)?jiān)谧⑨專?*******4********之后完成,使得輸出為:radius=5area=78.54height=10vol=785.4注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來。請(qǐng)不要修改其他的程序代碼。1#include2constdoublepi=3.1416;3classcircle4{5protected:6//********1********78public:9//********2********1011{12r=0.0;13}14circle(doubleradius)15{16r=radius;17}18voidprint()19{20area=r*r*pi;21cout<<"radius="<標(biāo)準(zhǔn)答案:(1)添加語句:doubler,area;(2)添加語句:Circle()(3)添加語句:column(doubleradius,doubleheight)(4)添加語句:cout<<"height="<國家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中包含了類Pets(“寵物”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:sonnyType:dogName:JohnType:dogName:DannyType:catName:JohnType:dog注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<lostream>usingnamespacestd;enumPets_type{dog,cat,bird,fish};classPets{private:char*name;Pets_typetype;public:Pets(constchar*name="sonny",Pets_typetype=dog);Pets&operator=(constPets&s);~Pets();voidshow()const;};Pets∷Pets(constchar*name,Pets_typetype)//構(gòu)造函數(shù){this->name=newchar[strlen(name)+1];strcpy(this->name,name);//ERROR*******found*******type=type;}Pets∷~Pets()//析構(gòu)函數(shù),釋放name所指向的字符串{//ERROR*******found*******name=’/0’;}Pets&Pets∷operator=(constPets&S){if(&s==this)//確保不要向自身賦值return*this;delete[]name;name=newchar[strlen(s.name)+1];//ERROR*******found*******strcpy(this->name,name);type=s.type;return*this;}voidPets∷show()const{cout<<"Name:"<<name<<"Type:”,switch(type){casedog:cout<<"dog";break;casecat:cout<<"cat";break;casebird:cout<<"bird";break;casefish:cout<<"fish";break;}cout<<end1;}intmain(){Petsmypet1,mypet2("John",dog);Petsyoupet("Danny",cat);mypet1.show();mypet2.show();youpet.show();youpet=mypet2;youpet.show();return0;}標(biāo)準(zhǔn)答案:(1)this->type=type;(2)delete[]name;(3)strcpy(this->name,s.name);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,因?yàn)樾螀⒚皖惖乃接谐蓡T名稱都是type,為了避免混淆,所以規(guī)定類的私有成員使用this指針調(diào)用,即:this->type=type;。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握情況,題目中要求,釋放name所指向的字符串。要釋放name指針用delete語句,即delete[]name;。(3)主要考查考生對(duì)sineW函數(shù)的掌握情況,strcpy函數(shù)的形參為兩個(gè)字符串,而name為指向字符串的指針,因此使用語句:strcpy(this->name,s.name);。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTfiange(“三角形”)的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為:2010注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;classCPolygon{public://**********found**********_______//純虛函數(shù)area聲明voidprintarea(void)//**********found**********{cout<<_______<<end1,}};classCRectangle:publicCPolygon{intwidth;//長方形寬intheight;//長方形高public:CRectangle(intW,inth):width(w),height(h){}intarea(void){return(width*height);}};classCTriangle:publicCPolygon{intlength;//三角形一邊長intheight;//該邊上的高public:CTriangle(int1,inth):length(1),height(h){}//**********found**********intarea(void){return(_______)/2;}};intmain()fCRectanglerect(4,5);CTriangletrgl(4,5);//**********found**********_______*ppoly1,*ppoly2;ppoly1=&rect;ppoly2=&trg1;ppoly1->printarea();ppoly2->printarea();retumR0;}標(biāo)準(zhǔn)答案:(1)viauMintarea(void)=0;(2)area()(3)length*height(4)Cpolygon知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)純虛函數(shù)的掌握,在定義純虛函數(shù)時(shí)要看在派生類中函數(shù)的定義:intarea(void)。由此可知純虛函數(shù)應(yīng)該為:viauMintarea(void)=0;。(2)主要考查考生對(duì)純虛函數(shù)的掌握情況,由voidprintarea(void)可知,該函數(shù)要打印面積,因此在此要調(diào)用純虛函數(shù)area,即cont<<area()。(3)主要考查考生對(duì)數(shù)學(xué)公式的掌握,該函數(shù)要返回三角形面積,三角形的面積公式為長乘以該邊上的高除以2,即return(length*height)/2;。(4)主要考查考生對(duì)抽象類的掌握情況,根據(jù)程序段:ppoly1=&rect;ppoly2=&trg1;可知指針ppoly1指向CReetangle類,而指針ppoly2指向CTfiangle類,因此在這里只能填這兩種類的基類CPolygon類。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種隋況下程序的輸出應(yīng)該是:ValArrayv1={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:補(bǔ)充編制的內(nèi)容寫在“//********333********”與“********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。//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()fdelete[]v;}voidprint(ostream&out)const{out<<’{’;for(inti=0j<size-1;i++)out<<v[i]<<",";out<<v[size-1]<<’)’;}voidsetArray(inti,intval){v[i]=val;}};voidwriteToFile(constchar*);//main.cpp#include"ValArray.h"ValArray∷ValArray(constValArray&other){//********333********//********666********}intmain(){constinta[]={1,2,3,4,5};ValArrayvl(a,5);cout<<"ValArrayv1=";v1.print(cout);cout<<end1;ValArrayV2(V1);cout<<"ValArrayV2=";v2.print(cout);cout<<end1;writeTOFile(“”);return0;}標(biāo)準(zhǔn)答案:size=other.size;v=newint[size];for(inti=0;i<size;i++)setArray(i,other.v[i]);知識(shí)點(diǎn)解析:主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握,ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。由ValArray類的構(gòu)造函數(shù):ValArray(constint*p,intn):size(n){v=newint[size];//給v分配大小為size的空間for(inti=0;i<size;i++)//遍歷pv[i]=p[i];//把p[i]賦值給v[i]}可知類中v是動(dòng)態(tài)數(shù)組,size表示數(shù)組長度,因此要先給v分配空間為size,再逐個(gè)元素復(fù)制以達(dá)到對(duì)象的深層復(fù)制。國家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正錯(cuò)誤,使得程序正確執(zhí)行,并且輸出以下語句:TestClass1:0TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//********error********的下面。#inCludestructTestClass1{TestClass1(inti=0){mi=i;}Voidprint(){cout<<"TestClass1:"<標(biāo)準(zhǔn)答案:(1)public:(2)TestClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下的“private:~TestClass20”是析構(gòu)函數(shù),它不是私有的,所以這里應(yīng)該為“刪除private:或修改為public:”。(2)第2個(gè)標(biāo)識(shí)下的“TestClass1obj1();”語句是定義一個(gè)TestClass1類型的對(duì)象obj1(),根據(jù)類TestClass1構(gòu)造函數(shù)的定義“TestClass1(inti=0)”,知道存在整型參數(shù),應(yīng)該補(bǔ)充參數(shù),或者只是先定義一個(gè)對(duì)象名,然后在使用時(shí)補(bǔ)充參數(shù),即修改為“TestClass1obj1(0);或TestClass1obj1;”。(3)同理第3個(gè)標(biāo)識(shí)下的“TestClass2obj2)_;”語句修改為“TestClass2obj2;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*data),此函數(shù)的功能是,找出字符串?dāng)?shù)組中最小的ASCII值,如果有相同變量,則輸出最后一個(gè)所在的位置;如果字符串為空,則返回-1;或者不存在時(shí)也返回-1。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。計(jì)算數(shù)字如果第一個(gè)字母最小,則返回0。依次增加。#includeintfun(char*data){}voidmain(){charstr[1024];cout<<"請(qǐng)輸入一行英文字符串:\n";cin.getline(str,1024);cout<<"最小的字母出現(xiàn)在距離頭部"<標(biāo)準(zhǔn)答案:intMinPos=0;//初始化最小值位置if(data==NULL)//判斷輸入字符串是否為空return-1;charMinData=data[0];//設(shè)置字符串第一個(gè)字符為最小值if(MinData==0)//判斷第一個(gè)字符是否存在return-1;for(inti=1;data[i]!=0;i++){if(data[i]<=MinData){MinData=data[i];//逐個(gè)判斷每個(gè)字母是否小于標(biāo)記字符MinPos=i;//最小值位置}}returnMinPos;知識(shí)點(diǎn)解析:(1)MinPos變量首先指向字符串data的第一個(gè)字符,同時(shí)將標(biāo)志位MinPos初始值賦為0。(2)然后利用for循環(huán)對(duì)每一個(gè)當(dāng)前字符與MinPos標(biāo)記的字符進(jìn)行比較。(3)循環(huán)中將求得的最小數(shù)據(jù)data[i]賦值給MinData,并將該數(shù)據(jù)項(xiàng)數(shù)組標(biāo)志位賦給標(biāo)志位MinPos。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生:丈件夾下的源程序文件modi3.cpp。學(xué)校教務(wù)處要為任課老師開發(fā)一個(gè)學(xué)生管理系統(tǒng),需求如下:(1)學(xué)生的信息是要受到嚴(yán)密保護(hù)和限制的,包括姓名、五個(gè)英文字符的學(xué)號(hào),以及精確到小數(shù)點(diǎn)后一位的一科成績,只有任課老師可以修改,如果學(xué)生升學(xué)了,比如由本科升到研究生,原來的信息還有效,而只需添加研究生的必要信息,不過現(xiàn)在不必馬上實(shí)現(xiàn),但應(yīng)當(dāng)有所考慮。(2)學(xué)生的所有信息可以查看,但也只有學(xué)生自己才有這個(gè)權(quán)利。(3)學(xué)生的信息可以從文件中讀取來構(gòu)造信息庫,需要把信息輸出到屏幕以便核實(shí),但這需要任課老師來完成。(4)老師能提供所教學(xué)生的完整信息列表,同時(shí)可按成績高低排序。(5)為了便于學(xué)校評(píng)定獎(jiǎng)學(xué)金,需要單獨(dú)查找成績最高的同學(xué)(一般不采用把成績單全部排列后來選取,可能這比較耗費(fèi)時(shí)間,雖然要求不太合理,但要按用戶的需求操作,同時(shí)需要指出的是,如果成績最高者有數(shù)名,需要一一列出)。(6)由于學(xué)校的機(jī)器比較老,內(nèi)存嚴(yán)重不足,每個(gè)老師帶的學(xué)生數(shù)不一樣,但也不會(huì)超過50人。以上功能的程序框架已經(jīng)形成,考生需要按照需求來逐個(gè)實(shí)現(xiàn)。(1)請(qǐng)?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z句,以便實(shí)現(xiàn)功能需求(1)。(2)請(qǐng)?jiān)谧⑨專?*******2********處添加適當(dāng)?shù)恼Z句,成績單排序功能。(3)請(qǐng)?jiān)谧⑨專?*******3********處實(shí)現(xiàn)奩找成績最高學(xué)生名單。無需修改main()主函數(shù),當(dāng)?shù)玫较旅娴慕Y(jié)果,該系統(tǒng)可能被采用。輸入的學(xué)生信息:姓名學(xué)號(hào)成績周華000178.5李強(qiáng)000298劉星000389賀蘭000478周紅000576.5趙邦000685高俊000798排序后的學(xué)生信息:姓名學(xué)號(hào)成績李強(qiáng)000298高俊000798劉星000389趙邦000685周華000178.5賀蘭000478周紅000576.5查詢成績最高的學(xué)生信息:高俊000798李強(qiáng)000298注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#include#include#defineNMAX50classTeacher;classStudent{public:Student(char*name=“未知”,char*number=“00000”,doublemark=0.01{intlen=strien(name);mname:newchar[len+1];strcpy(mname,name);strcpy(mnumber,number);mmark=mark;}~Student(){delete[]mname;)voidDisplayMsg(){cout<>name;in>>number;in>>mark;m_count++;m_pStu[i]=newStudent(name,number,mark);cout<m_mark>mpStu[index]->m_mark)index=j;}//********2********if(){Student*ps=mpStu[i];mpStu[i]=mpStu[index];m_pStu[index]=ps;}}}voidTeacher::Display(){cout<<"姓名\t"<<"學(xué)號(hào)\t"<<"成績\t"<DisplayMsg();}}intTeacher::BestScore(Student*pS[]){intindex=0;intcount=1;//********3********for(intj=1;jmmark>mpStu[index]_>mmark){count=1;index=j;pSpcount++]=mpStu[index];}elseif(mpStu[j]->mmark==m_pStu[index]->m_mark){index=j;pS[count++]=m_pStu[index];}}returncount;}Voidmain(){TeacherTeacher;Student*pStudent[NMAX];cout<<"輸入的學(xué)生信息:"<DisplayMsg();}}標(biāo)準(zhǔn)答案:(1)添加語句:friendclassTeacher;(2)將“if()”補(bǔ)充完整為:if(index!=j)(3)添加語句:ps[0]=mpStu[0];知識(shí)點(diǎn)解析:(1)學(xué)生的信息受到嚴(yán)密保護(hù)和限制,任課老師可以修改學(xué)生數(shù)據(jù),比如本科升到研究需要修改學(xué)號(hào)等信息,因此老師類(Teacher)可以訪問學(xué)生類(Student),故老師類是學(xué)生類友元類,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“friendclassTeacher;”。(2)SortScore()成員函數(shù)是實(shí)現(xiàn)按成績高低的排序,函數(shù)結(jié)構(gòu)是二重循環(huán),采用的是選擇法排序,每次在內(nèi)層循環(huán)中尋找成績最高的元素的下標(biāo),如果找到的最高成績的元素的下標(biāo)和現(xiàn)在的位置(外層循環(huán)變量i+1的值)不同則兩者交換,故第2個(gè)標(biāo)識(shí)下的判斷條件為“if(index!=j)”。(3)BestScore(Student*pS[])實(shí)現(xiàn)查找成績最高學(xué)生名單,即利用循環(huán)查找數(shù)組中的每個(gè)元素的成績值,先假設(shè)第一個(gè)元素的成績最高,然后再循環(huán)中逐個(gè)比較,如果有成績更高的,那么將更高的成績保存下來,搜索整個(gè)數(shù)組就能找到成績最高的學(xué)生,即第3標(biāo)識(shí)下應(yīng)添加“ps[0]=mpStu[0];”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp。本程序要求輸入一字符串,然后將其中的小寫字母改變成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到界面。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******error******的下面。#include<iostream.h>voidmain(){inti=0;charstr[120];cout<<"Enterastringendwith’?’."<<endl;//********error********cin.getline(str,120);//********error********while(Str){//********error********if(str[i]>=’a’)str[i]=str[i]-’a’+’A’;i++;}cout<<Str<<endl;return;}標(biāo)準(zhǔn)答案:(1)cin.getline(str,120,’?’);(2)while(str[i])(3)if(str[i]>=’a’&&str[i]<=’z’)知識(shí)點(diǎn)解析:(1)題目中要求以輸入字符“?”為結(jié)束,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式cin.getline(字符數(shù)組,字符個(gè)數(shù),終止標(biāo)志字符),所以第1個(gè)標(biāo)識(shí)下為“cin.getline(str,120,’?’);”。(2)第2個(gè)標(biāo)識(shí)下的“while(str)”語句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為尾符,若不是尾符在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。(3)第3個(gè)標(biāo)識(shí)下的“if(str[i]>=’a’)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于’a’,但是小寫字符應(yīng)該是’a’到’z’,所以修改為“if(str[i]>=’a’&&str[i]<=’z’)”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*str,char*s)空出部分。函數(shù)fun(char*str,char*s)的功能是:將在字符串str中下標(biāo)為偶數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)新串S中,S中字符按原字符串中字符的順序排列。(注意0為偶數(shù))例如:當(dāng)str中的字符串為:"abcdef"時(shí),s中的字符串應(yīng)為:"aaccee"。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include<iostream.h>voidfun(char*str,char*s){}voidmain(){charstr[100],s[100];cout<<"Pleaseenterstringstring:"<<endl;cin.getline(str,100);fun(Str,s);cout<<"Theresultis:"<<s<<endl;return;}標(biāo)準(zhǔn)答案:inti;for(i=0;str[i]!=0;i++)//循環(huán)判斷每一個(gè)字符{if(i%2==0)//判斷字符串中下標(biāo)為偶數(shù)位置{s[i]=str[i];s[i+1]=str[i];s[i+2]=’0’;//新串添加尾符}}知識(shí)點(diǎn)解析:(1)判斷一個(gè)字符串中的某一字符下標(biāo)i是否為偶數(shù),可用“i%2==0”來判斷。(2)對(duì)串str中各個(gè)字符串逐個(gè)進(jìn)行考查,滿足條件的字符就順序放在新串s中,否則就不存放。(3)所有字符處理完后,記得在新串S的末尾加上結(jié)束符“’\0’。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有成員變量year、month、day,分別表示年、月、目,類型為int。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù),分別給year、month、day賦值,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成重載符號(hào)“+=”的定義,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成print()打印函數(shù),如2008年8月8日到屏幕和文件modi3.txt格式相同,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<iostream.h>#include<fStream>#include<iomanip>#include<cmath>USingnamespacestd;voidWriteFile(intc){ofStreamout1;out1.open("modi3.txt",ios_base::app);out1<(c<<’’;out1.close();}voidWriteFile(char*str){ofstreamout1;out1.open("modi3.txt",iosbase::app);out1<<str:out1.close():}voidClearFile(){ofstreamout1;out1.open("modi3.txt");out1.close();}classDate{public:Date(inty,intm,intd){//********2********}voidprint()const;//********3********{month+=m;inti=month/12;intj=month%12;if(i==0){year+=(i-1),month=12;}else{year+=i;month=j;}return*this;}private://********1********};voidDate::Print()const{//********4********WriteFile(year);WriteFile("年");WriteFile(month);WriteFile("月");WriteFile(day);WriteFile("日");}intmain(){clearFile();Dateoly_day(2008,8,8);oly_day+=3;oly_day.print();return0;}標(biāo)準(zhǔn)答案:(1)添加語句:intyear,month,day;(2)添加語句:year=y;month=m;day=d;(3)添加語句:Date&operator+=(intm)(4)添加語句:cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;知識(shí)點(diǎn)解析:(1)題目1要求“定義私有成員變量year、month、day”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成構(gòu)造函數(shù),分別給year、month、day賦值”。在程序中“Date(inty,intm,intd)”的構(gòu)造函數(shù)中添加給year、month、day賦值的語句,即在第2個(gè)標(biāo)識(shí)下添加“year=y;month=m;day=d;”。(3)題目3要求“完成重載符號(hào)“+=”的定義”。在C++中,運(yùn)算符重載的定義方法是定義一個(gè)重載運(yùn)算符的函數(shù),格式為函數(shù)operator+~載運(yùn)算符號(hào)+,所以這里補(bǔ)全“Date&operator+=(intm)”。(4)題目4要求“完成函數(shù)print()打印函數(shù)”。在C++中的print()函數(shù)中補(bǔ)全其打印功能,即在第四個(gè)標(biāo)識(shí)下添加“cout<<year<<"年"<<month<<"月"<<daV<<"日"<<endl;”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將帶頭結(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;/*********found*********/p=【1】;while(p){/*********found*********/q=【2】,while(q){/*********found*********/if(p一>data—【3】q一>data){t=p一>data;p一>data=q一>data;q一>data=t;)q=q一>next;}p=p一>next;}}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h一>next=NULL;for(i=0;idata=a[i];q一>next=NULL;if(h一>next==NULL)h一>next=p=q;else(p一>next=q;p=q;)}returnh;}voidoutlist(NODE*h){NODE*p;p=h一>next;if(P==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("一>%d",p一>data);p=p一>next;)while(p!=NULL);printf("一>End\n");}}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistaftersorting:\n");outliSt(head);}標(biāo)準(zhǔn)答案:(1)h一>next(2)p一>next(3)>知識(shí)點(diǎn)解析:填空1:本題考查了指針變量p賦初值,使p指向鏈表的頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),因此本空應(yīng)該填寫h一>next。填空2:本空考查了q的作用,q代表p的下一個(gè)數(shù),因此次空應(yīng)該填寫p一>next。填空3:if判斷句是比較鏈表中相鄰兩個(gè)數(shù)的大小,如果p一>data>q一>data就交換這兩個(gè)數(shù)的值,因而此空填寫>。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中,函數(shù)fun的功能是:計(jì)算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值依次為:39、一47、21、2、一8、15、0,則程序的運(yùn)行結(jié)果為19.250000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includedoublefun(intx[]){/*********found*********/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>一0){sum+=x[i];c++;}i++;)/*********found*********/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%1f\n",fun(x));}標(biāo)準(zhǔn)答案:(1)doublesum=0.0;(2)sum/=c;知識(shí)點(diǎn)解析:(1)變量定義錯(cuò)誤,變量sum存放所有數(shù)據(jù)的和,應(yīng)定義為double型。(2)C語言中的除法運(yùn)算符是“/”。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:求Fibonacei數(shù)列中大于t的最小的數(shù),結(jié)果由函數(shù)返回。Fibonacci數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n一1)+F(n一2)例如,當(dāng)t=1000時(shí),函數(shù)值為1597。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include#include#includeintfun(intt){}main(){intn;n=1000;printf("n=%d,f=%d\n",n,fun(n));}標(biāo)準(zhǔn)答案:intfun(intt){intf0=0,f1=1,f;do{/*根據(jù)Fibonacci數(shù)列的定義求數(shù)值*/f=f0+f1;f0=f1;f1=f;)while(f知識(shí)點(diǎn)解析:根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果是由兩個(gè)數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把f看成是前兩項(xiàng)之和,而f0始終代表第n一2項(xiàng),n代表第n一1項(xiàng)。退出循環(huán)時(shí)得到的數(shù)f,就是大于指定數(shù)的最小的數(shù)。國家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程包含一個(gè)源程序文件proj1.cpp。文件中將表示數(shù)組元素個(gè)數(shù)的常量Size定義為4,并用int類型對(duì)類模板進(jìn)行了實(shí)例化。文件中位于每個(gè)注釋“//ERROR****found****”之后的一行語句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:1234注意:模板參數(shù)名用T。只修改注釋“//ERROR*******found*******”的下一行語句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;//將數(shù)組元素個(gè)數(shù)Size定義為4//ERROR*******found*******constintSize;templateclassMyClass{public:MyClass(T*P){for(inti=0;i//ERROR*******found*******voidMyClass::Print(){for(inti=0;iobj(intArray);obj.Print();cout<標(biāo)準(zhǔn)答案:(1)constintSize=4;(2)voidMyClass::Print()(3)MyClassobj(intArray);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)const變量的掌握,因?yàn)閏onst變量不能修改,所以在定義的同時(shí)必須初始化。(2)主要考查考生對(duì)模板類的成員函數(shù)定義的掌握,因?yàn)镸yClass類是模板類,所以在定義該函數(shù)時(shí)要加上模板標(biāo)識(shí)符“”,即語句voidMyClass::Print()。(3)主要考查考生對(duì)模板類構(gòu)造函數(shù)的調(diào)用的理解,從上一條語句intintArray[Size]={1,2,3,4};中可以知道intArray為int型,因此定義obj時(shí)要使用,即MyClassobj(intArray);。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp,其中定義了CharShape類、Triangle類和Rectangle類。CharShape是一個(gè)抽象基類,它表示由字符組成的圖形(簡稱字符圖形),純虛函數(shù)Show用于顯示不同字符圖形的相同操作接口。Triangle和Rectangle是CharShape的派生類,它們分別用于表示字符三角形和字符矩形,并且都定義了成員函數(shù)Show,用于實(shí)現(xiàn)各自的顯示操作。程序的正確輸出結(jié)果應(yīng)為:****************########################請(qǐng)閱讀程序,分析輸出結(jié)果,然后根據(jù)以下要求在橫線處填寫適當(dāng)?shù)拇a并刪除橫線。(1)將Triangle類的成員函數(shù)Show補(bǔ)充完整,使字符三角形的顯示符合輸出結(jié)果。(2)將Rectangle類的成員函數(shù)Show補(bǔ)充完整,使字符矩形的顯示符合輸出結(jié)果。(3)為類外函數(shù)fun添加合適的形參。注意:只在指定位置編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#includeusingnamespacestd;classCharShape{public:CharShape(charch):ch(ch){);virtualvoidShow()=0;protected:charch;//組成圖形的字符};classTriangle:publicCharShape{public:Triangle(charch,intr):CharShape(ch),rows(r){}voidShow();private:introws;//行數(shù)};classRectangle:publicChar-Shape{public:Rectangle(charch,intr,intc):CharShape(ch),_rows(r),cols(c){)voidShow();private:introwstcols;//行數(shù)和列數(shù)};voidTriangle::Show()//輸出字符組成的三角形{for(inti=1;i<=rows;i++){//**********found**********for(intj=1;j<=__________;j++)cout<<_ch;cout<標(biāo)準(zhǔn)答案:(1)i*2-1(2)_rows(3)_cols(4)CharShape&cs知識(shí)點(diǎn)解析:(1)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的三角形。從外層循環(huán)中可以看出下標(biāo)i代表行數(shù),那么下標(biāo)j就代表每一行字符的個(gè)數(shù),因?yàn)橐敵龅氖侨切危悦恳恍械膫€(gè)數(shù)與該行的行數(shù)相關(guān),即j<=i*2-1;。(2)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)i不大于行數(shù)即可。(3)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)j不大于列數(shù)即可。(4)主要考查考生對(duì)虛函數(shù)的掌握,該語句所在的函數(shù)是普通函數(shù)fun,題目要求為fun函數(shù)添加形參。從函數(shù)體中可以知道形參名為cs,那么形參的類型是什么呢?就是抽象類CharShape,因此要使用CharShape&es才可以實(shí)現(xiàn)題目要求輸出的內(nèi)容。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程oroj3,其中聲明IntSet是一個(gè)用于表示正整數(shù)集合的類。IntSet的成員函數(shù)Intersection的功能是求當(dāng)前集合與另一個(gè)集合的交集。請(qǐng)完成成員函數(shù)Intersection。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序的輸出應(yīng)該是:求交集前:123581028911305667求交集后:12358102891130566728要求:補(bǔ)充編制的內(nèi)容寫在“//**********333**********”與“//**********666**********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//Intset.h#includeusingnamespacestd;constintMax=100;classIntSet{public:IntSet()//構(gòu)造一個(gè)空集合{end=-1;}IntSet(inta[],intsize)//構(gòu)造一個(gè)包含數(shù)組a中size個(gè)元素的集合{if(size>=Max)end=Max-1;elseend=size-1;for(inti=0;i<=end;i++)element[i]=a[i];}boolIsMemberOf(inta)//判斷a是否為集合中的一個(gè)元素{for(inti=0;i<=end;i++)if(element[i]==a)returntrue;returnfalse;}intGetEnd(){returnend;}//返回最后一個(gè)元素的下標(biāo)intGetElement(inti){returnelement[i];}//返回下標(biāo)為i的元素IntSetIntersection(IntSet&set);//求當(dāng)前集合與集合set的交voidPrint()//輸出集合中的所有元素{for(inti=0;i<=end;i++)if((i+1)%20==0)cout<標(biāo)準(zhǔn)答案:for(inti=0;i<=set.GetEnd();i++)//遍對(duì)象set數(shù)組if(IsMemberOf(set.GetElement(i)))//判斷對(duì)象Set數(shù)組第i個(gè)值是不是集合中的值,如果是則把它插入到a中a[size++]=set.GetElement(i);知識(shí)點(diǎn)解析:主要考查考生對(duì)數(shù)組的掌握,根據(jù)IntSet類的構(gòu)造函數(shù):IntSet(inta[],intsize)//構(gòu)造一個(gè)包含數(shù)組a中size個(gè)元素的集合{if(Size>=Max)end=Max-1;elseend=Size-1;for(inti=0;i<=end;i++)element[i]=a[i];}可知數(shù)組element用來裝載集合,end表示數(shù)組長度,因此調(diào)用函數(shù)IsMemberOf來判斷set中的元素是否存在于集合中,如果存在則放人數(shù)組a中。國家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:1063022注意:錯(cuò)誤的語句在∥********error********的下面,修改該語句即可。#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)答案:(I)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í)如果沒有初始化,就必須指定數(shù)組大小,在本題中因?yàn)橹羔様?shù)組包含的指針變量需要指向四種算數(shù)運(yùn)算,因此定義指針數(shù)組大小為4,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“FUNCfunc[4];”。(3)func是指針數(shù)組,因此訪問的時(shí)候需要有指針運(yùn)算符“*”,第3個(gè)標(biāo)識(shí)下應(yīng)改成“return(this一>*func[i])(j);”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*data),此函數(shù)的功能是,找出字符串?dāng)?shù)組中最小的ASCII值,如果有相同變量,則輸出最后一個(gè)所在的位置;如果字符串為空,則返回一1;或者不存在時(shí)也返回一1。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。計(jì)算數(shù)字如果第一個(gè)字母最小,則返回0。依次增加。1#include2intfun(char*data)3{45}6voidmain()7{8charStr[1024];9cout<<”請(qǐng)輸入一行英文字符串:\n”;10cin.getline(str,1024);iicout<<”最小的字母出現(xiàn)在距離頭部"<標(biāo)準(zhǔn)答案:intMinPos=0;//初始化最小值位置if(data==NULL)//判斷輸入字符串是否為空return一1;charMinData=data[0];//設(shè)置字符串第一個(gè)字符為最小值if(MinData==0)//判斷第一個(gè)字符是否存在return一1;for(inti=1;data[i]!=0;i++){if(data[i]<=MinData){MinData=data[i];//逐個(gè)判斷每個(gè)字母是否小于標(biāo)記字符MinPos=i;//最小值位置}}returnMinPos;知識(shí)點(diǎn)解析:(1)該程序功能是找出字符串?dāng)?shù)組中最小的ASCII值。它的解題思路,用最小值變量標(biāo)記第一個(gè)待找字符,把所有待找字符和標(biāo)記字符逐個(gè)進(jìn)行比較,并標(biāo)記其當(dāng)前最小值及其所在位置,從而找出最小值。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)intfun(char*data)gO的data參數(shù)為輸入的字符串?dāng)?shù)組,其中MinPos為最小值位置。解題思路(1)MinPos變量首先指向字符串data的第一個(gè)字符,同時(shí)將標(biāo)志位MinPos初始值賦為0。(2)然后利用for循環(huán)對(duì)每一個(gè)當(dāng)前字符與MinPos標(biāo)記的字符進(jìn)行比較。(3)循環(huán)中將求得的最小數(shù)據(jù)data[i]賦值給MinData,并將該數(shù)據(jù)項(xiàng)數(shù)組標(biāo)志位賦給標(biāo)志位MinPos。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,閱讀下列程序說明和代碼,功能如下:從屏幕輸入數(shù)字,然后由大到小插入指定的鏈中。當(dāng)輸入0時(shí),表示輸出的數(shù)據(jù)已經(jīng)輸入完成,然后把數(shù)據(jù)打印到屏幕,然后釋放內(nèi)存。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z句。(2)把pNext的子節(jié)點(diǎn)賦給pNext本身,請(qǐng)?jiān)谧⑨專狭狭狭?料料料料后添加適當(dāng)?shù)恼Z句。(3)判定P的子節(jié)點(diǎn)不為空,如果不為空,則打印p其中的數(shù)據(jù)到屏幕,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z句。(4)用templ保存動(dòng)態(tài)申請(qǐng)內(nèi)存節(jié)點(diǎn)的鏈表頭,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#includeclasSTestClasS{public:TestClass(intdata=0){this一>data=data;this一>next=NULL;};intdata;TestClass*next;};voidInsert(TestClass*P,intdata){TestClass*temp=newTestClass(data);TestClass*pParent=p;TestClass*pNext=p一>next;while(pNext){if(data>pNext一>data){∥********1********temp一>next=pNext;return,}E1se{pParent=pNext;∥********2********}}if(pNext==NULL){PParent一>next=temp;return;}}voidprintf(TestClass*P){∥********3********while(){cout<next一>data<<””;P=P一>next;}cout<next;deletetempl;templ=temp2;}}voidmain(){inti=0;TestClasshead;do{intdata;cout<<“請(qǐng)輸入一個(gè)數(shù)字:”<>data;if(data==0)break;Insert(&head,data);}while(1);printf(&head);Delete(&head);return,}標(biāo)準(zhǔn)答案:(1)添加語句:pParent一>next:temp;(2)添加語句:pNext=pNext一>next;(3)將“while()”補(bǔ)充完整為:while(p一>next!=NULL)(4)將“TestClass*templ:;”補(bǔ)充完整為:TestClass*templ=p一>next;知識(shí)點(diǎn)解析:在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的math主函數(shù)開始入手,可以看出程序通過調(diào)用類TestClass實(shí)現(xiàn)各種輸出操作。解題思路(1)題目1要求“在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針”。對(duì)于指針的操作pParent->next為pParent的子結(jié)點(diǎn),在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針,即“pParent->next=temp;"。(2)題目2要求“把pNext的子節(jié)點(diǎn)賦給pNext本身"。pNe~->next為pNext的子結(jié)點(diǎn),把pNext的子節(jié)點(diǎn)賦給pNext本身,即“pNext=pNext->next;”。(3)注釋∥*******3********下是判定P的子節(jié)點(diǎn)不為空。P的子節(jié)點(diǎn)是p->next。程序中的“while()”缺乏P的子節(jié)點(diǎn)不為空的判斷條件,所以修改為“while(p.>next!=NULL)”。(4)題目4要求“用tempi保存動(dòng)態(tài)申請(qǐng)內(nèi)存節(jié)點(diǎn)的鏈表頭”。P為鏈表,p->next為鏈表頭。程序中的語句“TestClass*templ=;”中templ沒有被賦值,所以修改為“TestClass*templ=p->next;”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,程序中位于每個(gè)“//ERROR****found****”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:SmithAge:21ID:99999CourseNum:12Record:970注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classStudentInfo{protected://ERROR*******found*******charName;intAge;intID;intCourseNum;floatRecord;public:StudentInfo(char*name,intAge,intID,intcourseNum,floatrecord);//ERROR*******found*******VOid~StudentInfo(){}floatAVerageRecord(){returnRecord/CourseNum;}voidshow()const{cout<<"Name:"<<Name<<"Age:"<<Age<<"ID:"<<ID<<"CourSeNum:"<<CourSeNum<<"ReCOrd:"<<Re-cord<<endl;}};//ERROR*******found*******StudentInfoStudentInfo(char*Name,intAge,intID,intCourseNum,floatRecord){Name=name;Age=age;this->ID=ID;CourSeNum=courSeNum;Record=record;}intmain(){StudentInfost("Smith",21,99999,12,970);st.show();return0;}標(biāo)準(zhǔn)答案:(1)char*Name;(2)~StudentInfo(){}(3)Studentlnfo::Studentlnfo(char*name,intage,intID,intcourseNum,floatrecord)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)動(dòng)態(tài)數(shù)組的掌握,由題目可知Name應(yīng)該指向一個(gè)動(dòng)態(tài)數(shù)組,而不是一個(gè)有效char型字符,因此要定義成char型指針。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)不需要函數(shù)返回類型,應(yīng)把void去掉。(3)主要考查考生對(duì)構(gòu)造函數(shù)定義的掌握,構(gòu)造函數(shù)也要使用作用域符號(hào)“::”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,其中有矩陣基類MatrixBase、矩陣類Matrix和單位陣UnitMatrix的定義,還有main函數(shù)的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:123452345634567100000010000001000000100000010000001注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;//矩陣基礎(chǔ)類,一個(gè)抽象類classMatrixBase{introws,cols;public:MatrixBase(introws,intcols):rows(rows),cols(cols){)intgetRows()const{returnroows}//矩陣行數(shù)intgetC

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論