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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷13(共9套)(共26題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:initTestClassdelTestClass注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。1#include2classTeStClass3{4//********error********56//********error********7intTestClass()fcout<<"initTestClass"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:plablic:(2)Testclass(){COl]t<<"intTestclass"<知識(shí)點(diǎn)解析:本題的功能是分別利用構(gòu)造函數(shù)和析構(gòu)函數(shù)中的輸出語(yǔ)句,輸出“initTestClass”和“delTestClass”字符串。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先通過(guò)類TestClass中的TestClass構(gòu)造函數(shù)實(shí)現(xiàn)各種輸出。[解題思路](1)打開(kāi)modil.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第一標(biāo)識(shí)下“modil.cpp(13):errorC2248:’TestClass::TestClass’:cannotaccessprivate:member。declaredinclass’TestClass’”,構(gòu)造函數(shù)由于是私有的,無(wú)法獲得,所以應(yīng)該定義為public型,即第1個(gè)標(biāo)識(shí)下添加“public:”。(2)構(gòu)造函數(shù)首部的一般形式為:構(gòu)造函數(shù)名(形參列表),構(gòu)造函數(shù)沒(méi)有返回值,所以定義構(gòu)造函數(shù)時(shí)不需要聲明類型,所以“intTestClass()fcout<<"initTestClass"<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,實(shí)現(xiàn)函數(shù)sort(intA[],intn),用選擇排序法把數(shù)組從大到小排序。提示:選擇排序法的思想是:(1)反復(fù)從還未排好的那部分線性表中選擇出關(guān)鍵字最小的節(jié)點(diǎn);(2)按照從線性表中選擇出的順序排列節(jié)點(diǎn),重新組成線性表;(3)直到未排序的那部分為空,則重新形成的線性表是一個(gè)有序的線性表。補(bǔ)充函數(shù)sort(intA[],intn),實(shí)現(xiàn)選擇排序。注意:請(qǐng)勿改動(dòng)主函數(shù)。1#include2#defineN103voidsort(intA[N],intn)4{56}7intmain()8{9intA[N]={1,2,10,5,7,19,34,78,-3,8};10sort(A,10);Iifor(inti=0;i標(biāo)準(zhǔn)答案:1inti,j;2for(i=0;iA[j+1])//如果前面的數(shù)比后面的大則進(jìn)行交換7{8intt=A[j];//做交換9A[j]=A[j+1];10A[j+1]=t;11}12}13}知識(shí)點(diǎn)解析:選擇法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭。這樣下標(biāo)從0到n-1的數(shù)與其后面相鄰的數(shù)交換,可以把最大的數(shù)交換到數(shù)組的末端。進(jìn)行n次下標(biāo)從0到n-1的交換,則數(shù)組則會(huì)變成有序的,而且是由小到大的順序。[解題思路](1)數(shù)組A[N]中有n個(gè)數(shù),進(jìn)行n-1趟比較,在每一趟比較中兩兩比較的次數(shù)逐漸減少,比如若有6個(gè)數(shù)9,8,5,4,2,0。第一次將8和9對(duì)調(diào),第二次將第2和第3個(gè)數(shù)(9和5)對(duì)調(diào),……,如此共進(jìn)行5次,得到8-5-4-2-0-9的順序,可以看到:最大的數(shù)9已“沉底”,成為最下面一個(gè)數(shù),而小的數(shù)“上升”。最小的數(shù)0已向上“浮起”一個(gè)位置。經(jīng)第一趟(共5次)后,已得到最大的數(shù)。然后進(jìn)行第二趟比較,對(duì)余下的前面5個(gè)數(shù)按上法進(jìn)行比較,經(jīng)過(guò)4次比較,得到次大的數(shù)8。如此進(jìn)行下去??梢酝浦?,6個(gè)數(shù)要比較5趟。在第一趟中要進(jìn)行兩兩比較5次,在第二趟中比4次,……第5趟比1次。因此設(shè)置兩層循環(huán),外層循環(huán)變量i從0變化大到n-1,內(nèi)層循環(huán)變量j從0到n-j,在內(nèi)層循環(huán)體內(nèi),比較相鄰兩數(shù),如果前面比后面的大則交換。(2)在內(nèi)層循環(huán)體內(nèi),如果前面的元素比后面的元素大,則用一個(gè)臨時(shí)變量記錄前面的第i個(gè)元素,然后將第i+1個(gè)元素賦值給第j個(gè)元素,臨時(shí)變量值賦給第j+1個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成列操作,將類的定義補(bǔ)充完整,實(shí)現(xiàn)以下功能:(1)完成CBook類構(gòu)造函數(shù),對(duì)整型變量ID和作者Author進(jìn)行賦值,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類CBooks的析構(gòu)函數(shù),釋放申請(qǐng)的內(nèi)存,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CBooks的AddBookMember函數(shù),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成CBooks類,用于由書(shū)的ID檢索到作者的函數(shù)char*GetBookAuthor(intnlD),請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。(5)程序的輸出結(jié)果為:TomHarry注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include2#include3classCBook4{5public:6intID;7charAuthor[32];8public:9CBook(intID_Number,char*Author_Name)10{11this->ID=ID_Number;12//********1********1314}15};16classCBooks17{18private:19C1assNode20{21public:22Node*next;23CBook*book;24}*m_pBook;25public:26CBooks()27{28m_pBook=NULL;29}30~CBooks()31{32//********2********33while()34{35Node*p=m_pBook->next;36deletem_pBook->book;37deletem_pBook;38m_pBook=p;39}40}41intAddBookMenber(intnID,char*Author)42{43Node*p=m_pBook;44Node*q=NULL;45//*********3********46while()47{48if(nlD==p->book->ID)49{50return0;5152q=p;53p=p->next;54}55if(p==NULL)56{57p=newNode;58p->next=NULL;59p->book=newCBook(nID,Author);60}61if(q==NULL)62{63m_pBook=p;64}65else66{67q->next=P;68}69return1;70}71Char*GetBookAuthor(intnID)72{73Node*p=m_pBook;74//********4********75while()76{77if(P->book->ID==nID)78{79returnP->book->Author;80}81p=p->next;82}83return0;84}85};86intmain()87{88CBooksbooksl;89books1.AddBookMenber(1,"Tom");90books1.AddBookMenber(3,"Lee");91books1.AddBookMenber(4,"Lily");92books1.AddBookMenber(5,"Harry");93cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:strcpy(Author,AuthorName);(2)將“while()”補(bǔ)充完整為:while(mpBook!=NULL)(3)將“while()”補(bǔ)充完整為:while(p!=NULL)(4)將“while()”補(bǔ)充完整為:while(p!=NULL)知識(shí)點(diǎn)解析:程序當(dāng)中定義了CBook類和CBooks類,CBook類描述書(shū)的基本信息,包含ID和Author數(shù)組兩個(gè)成員變量,CBooks類描述由Node對(duì)象組成的鏈表,每個(gè)Node對(duì)象包含指向CBook對(duì)象的指針和下一個(gè)Node對(duì)象的指針。第一個(gè)Node對(duì)象的next指針指向第二個(gè)Node對(duì)象,同樣第二個(gè)Node對(duì)象的next指針指向第三個(gè)Node對(duì)象,如此形成一個(gè)鏈表結(jié)構(gòu)。成員函數(shù)AddBookMenber(intnID,char*Author)實(shí)現(xiàn)向鏈表中添加一個(gè)Node節(jié)點(diǎn),成員函數(shù)GetBookAuthor(intnlD)返回某個(gè)Node節(jié)點(diǎn)的CBook對(duì)象的ID為nlD的CBook對(duì)象的Author數(shù)組名。[解題思路](1)第1個(gè)標(biāo)識(shí)下完成CBook類的構(gòu)造函數(shù),對(duì)成員變量整ID和作者Author進(jìn)行初始化,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“strcpy(Author,AuthorName);”,利用strcpy函數(shù),將Author_Name數(shù)組內(nèi)容拷貝到Author數(shù)組中。(2)~CBooksO為CBooks類的析構(gòu)函數(shù),由于CBooks類在運(yùn)行過(guò)程中會(huì)動(dòng)態(tài)申請(qǐng)內(nèi)存空間,因此在析構(gòu)函數(shù)中必須將這些內(nèi)存釋放。CBooks類是由Node對(duì)象組成的鏈表,因此可利用循環(huán)逐個(gè)搜索這個(gè)鏈表,逐個(gè)釋放內(nèi)存空間,故第2個(gè)標(biāo)識(shí)下應(yīng)改為while(mpBook!=NULL),在while循環(huán)體不斷的搜索下一個(gè)節(jié)點(diǎn)直到mpBook為空為止,刪除所以節(jié)點(diǎn)。(3)AddBookMenber(intnlD,char*Author)函數(shù)在鏈表的最后添加一個(gè)新的節(jié)點(diǎn),因此必須先找到最后一個(gè)節(jié)點(diǎn),同樣利用循環(huán)尋找最后一個(gè)節(jié)點(diǎn),故第3個(gè)標(biāo)識(shí)下為while(p!=NULL)。(4)GetBookAuthor(intnlD)返回某個(gè)Node節(jié)點(diǎn)的CBook對(duì)象的1D為nlD的CBook對(duì)象的Author數(shù)組名,同樣需要利用循環(huán)來(lái)查找各個(gè)節(jié)點(diǎn)CBook對(duì)象的ID是否為nlD,故第4個(gè)標(biāo)識(shí)下應(yīng)為while(p!=NULL)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Copyconstructorcalled.Thevalueis10Destructorcalled.Destructorcalled.注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{public://ERROR*******found*******MyClass(inti){value=i;cout<<"Constructorcalled."<<end1;}//ERROR*******found*******MyClass(constMyClassP){value=P.value;cout<<"Copyconstructorcalled."<<end1;}voidPrint(){cout<<"Thevalueis"<<value<<end1;)//ERROR*******found*******void~MyClass(){cout<<"Destructorcalled."<<end1;}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)值,題目要求輸出語(yǔ)句:Thevalueis10,從主函數(shù)中可以看出,obj1并沒(méi)有初始化,但是obj1調(diào)用Print()函數(shù)時(shí)它的值為10,由此可知構(gòu)造函數(shù)的形參有默認(rèn)值,且值為10,因此得出語(yǔ)句MyClass(inti=10)。(2)主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握,復(fù)制構(gòu)造函數(shù)的形參都為引用,同時(shí)為了不改變形參的值要加上const,因此得出語(yǔ)句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)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,其中有矩陣基類MatrixBase、矩陣類Matrix和單位陣UnitMatrix的定義,還有main函數(shù)的定義。請(qǐng)?jiān)跈M線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:123452345634567100000010000001000000100000010000001注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;//矩陣基礎(chǔ)類,一個(gè)抽象類classMatrixBase{introwsrcols;public:MatrixBase(introws,intcols):rows(rows),cols(cols){}intgetRows()const{returnrows;}//矩陣行數(shù)intgetCols()const{returncols;}//矩陣列數(shù)virtualdoublegetElement(intr,intc)const=0;//取第i個(gè)元素的值voidshow()const{//分行顯示矩陣中所有元素for(inti=0;i<rows;i++){cout<<end1;for(intj=0;j<cols;j++)//**********found**********cout<<_______<<"";}}};//矩陣類classMatrix:publicMatrix--Base{double*val;public://**********found**********Matrix(introws,intcols,doublem[]=NULL):_______{//**********found**********val=_______;for(inti=0;i<rows*cols;i++)val[i]=(m==NULL?0.0:m[i]);}~Matrix(){delete[]val;}doublegetElement(intr,intc)const{returnval[r*getCols()+c];)};//單位陣(主對(duì)角線元素都是1,其余元素都是0的方陣)類classUnitMatrix:publicMatrixBase(public:UnitMatrix(introws):MatrixBase(rows,rows){}//單位陣行數(shù)列數(shù)相同doublegetElement(intr,intc)const{//**********found**********if(_______)return1.0;return0.0;}};intmain()fMatrixBase*m;doubled[][5]={1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};m=newMatrix(3,5,(double*)d);m->show();deletem;cout<<end1;m=newUnitMatrix(6);m->show();deletem;return0;}標(biāo)準(zhǔn)答案:(1)getElement(i,j)(2)MatrixBase(rows,cols)(3)newdouble[rows*cols](4)r==c知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)純虛函數(shù)的掌握,函數(shù)功能是分行顯示矩陣中所有元素。因此在這里要輸出行為i、列為j的元素,使用純虛函數(shù)getElement(i,j)實(shí)現(xiàn),輸出語(yǔ)句為cout<<getElement(i,j)<<"";。(2)主要考查考生對(duì)派生類的構(gòu)造函數(shù)的掌握,派生類的構(gòu)造函數(shù)使用成員列表初始化法,先對(duì)基類初始化。(3)主要考查考生對(duì)動(dòng)態(tài)數(shù)組的掌握,val是double型指針,要給val賦值,就要先給它分配空間,應(yīng)使用new來(lái)完成。(4)主要考查考生對(duì)成員函數(shù)的掌握,因?yàn)橐敵鰡挝痪仃?,只有滿足條件r==c的元素為1.0,所以填寫(xiě)語(yǔ)句if(r==c)return1.0;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。DataList的重載運(yùn)算符函數(shù)operator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個(gè)相同長(zhǎng)度的數(shù)據(jù)表之和;即它返回一個(gè)數(shù)據(jù)表,其每個(gè)元素等于相應(yīng)兩個(gè)數(shù)據(jù)表對(duì)應(yīng)元素之和。請(qǐng)編寫(xiě)這個(gè)operator+函數(shù)。程序的正確輸出應(yīng)該是:兩個(gè)數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個(gè)數(shù)據(jù)表之和:4,6,8,10,12,14要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//DataList.h#include<iostream>usingnamespacestd;classDataList{//數(shù)據(jù)表類intlen;double*d;public:DataList(intlen,doubledata[]=NULL);DataList(DataList&data);intlength()const{returnlen;}doublegetElement(inti)const{returnd[i];)DataListoperator+(constDataList&list)const;//兩個(gè)數(shù)據(jù)表求和voidshow()const;//顯示數(shù)據(jù)表};voidwriteToFile(char*,constDataList&);//main.cpp#include"DataList.h"DataList∷DataList(intlen,doubledata[]):len(1en){d=newdouble[len];for(inti=0;i<len;i++)d[i]=(data==NULL?0.0:data[i]);}DataList∷DataList(DataList&data):fen(data.fen){d=newdouble[len];for(inti=0;i<len;i++)d[i]=data.d[i];}DataListDataList∷operator+(constDataList&list)const{//兩個(gè)數(shù)據(jù)表求和double*dd=newdouble[list.1ength()];//********333********//********666********returnDataList(list.length(),dd);}voidDataList∷show()const{//顯示數(shù)據(jù)表for(inti=0;i<len-1;i++)cout<<d[i]<<",";cout<<d[len-1]<<end1;}intmain(){doublesl[]=(1,2,3,4,5,6};doubles2[]={3,4,5,6,7,8);DataListlistl(6,s1),list2(6,s2);//定義兩個(gè)數(shù)據(jù)表對(duì)象cout<<"兩個(gè)數(shù)據(jù)表:"<<end1;list1.show();list2.show();cout<<end1<<"兩個(gè)數(shù)據(jù)表之和:"<<end1;(list1+list2).show();writeToFile("",listl+list2);return0;}標(biāo)準(zhǔn)答案:for(inti=0;i<len;++i)//遍歷對(duì)象list中的數(shù)組和d數(shù)組,把對(duì)應(yīng)的值相加后放到數(shù)組dd中。dd[i]=d[i]+list.d[i];知識(shí)點(diǎn)解析:暫無(wú)解析國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本題的功能是:從鍵盤(pán)輸入字符串S,然后輸出字符串s,中的字符個(gè)數(shù)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#include<iostream>intmain(){//********error********cout<<"pleaseinputastring:"<<endl;//********error********namespacestd;chars[256];cin.getline(s,256);cout<<strlen(S)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)std::cout<<"pleaseinputastring:"<<std::endl;(2)usingnamespacestd;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下實(shí)現(xiàn)在屏幕上輸出“pleaseinputastring:”提示語(yǔ)句。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即第1個(gè)標(biāo)識(shí)下的“std::cout<<"pleaseinputastring:"<<std::endl;”。(2)第2個(gè)標(biāo)識(shí)下的“namespacestd;”‘語(yǔ)句是使用了標(biāo)準(zhǔn)命名空間std,正確語(yǔ)句應(yīng)該是“usingnamespacestd;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件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)中填入所編寫(xiě)的若干語(yǔ)句。計(jì)算數(shù)字如果第一個(gè)字母最小,則返回0。依次增加。#include<iostream.h>intfun(char*data){}voidmain(){charstr[1024];cout<<"請(qǐng)輸入一行英文字符串:\n";cin.getline(str,1024);cout<<"最小的字母出現(xiàn)在距離頭部"<<fun(str)<<"個(gè)字母處"<<endl;}標(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打開(kāi)考生文件夾下的源程序文件modi3.cpp。請(qǐng)完成以下部分,實(shí)現(xiàn)在屏幕上輸出為:TestClass3TestClass2這個(gè)程序需要修改的部分,請(qǐng)按照以下部分實(shí)現(xiàn)。(1)類TestClass0不能被實(shí)例化,請(qǐng)定義一個(gè)純虛函數(shù)print,在注釋//********1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類TestClass1私有虛繼承類TestClass0,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類TestClass2公有繼承類TestClass0,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)類TestClass3公有繼承類TestClass2與TestClass1,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<ioStream.h>C1assTestClass0{//********1********};//********2********classTestClass1:{public:voidprint(){cout<<"TestClass1"<<endl;}};//********3********classTestClass2:{public:voidprint(){cout<<"TestClass2"<<endl;}};//********4********ClassTestClass3:{public:voidprint(){cout<<"TestClass3"<<endl;}};voidmain(){TestClass3c3;TestClass2c2;c3.print();c2.print();return;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualvoidprint()=0;(2)將“classTestClass1:”補(bǔ)充完整為:classTestClass1:virtualprivateTestClass0(3)將“classTestClass2:”補(bǔ)充完整為:classTestClass2:publicTestClass0(4)將“classTestClass3:”補(bǔ)充完整為:classTestClass3:publicTestClass2,publicTestClass1知識(shí)點(diǎn)解析:(1)題目1要求“請(qǐng)定義一個(gè)純虛函數(shù)print”。在C++中,虛函數(shù)在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的函數(shù),即“virtualvoidprint()=0;”。(12)題目2要求“類TestClass1私有虛繼承類TestClass0”。在C++中聲明一個(gè)派生類時(shí)將基類的繼承方式指定為private的,稱為私有繼承。同(1),聲明TestClass1虛繼承類“:virtualTestClass0”,題目要求為私有,即“classTestClass1:virtualprivateTestClass0”。(3)題目3要求“類TestClass2公有繼承類TestClass0?!蓖?2),公有繼承是在定義一個(gè)派生類時(shí)將基類的繼承方式指定為public的,稱為公用繼承。所以這里補(bǔ)全“classTestClass2:publicTestClass0”。(4)題目4要求“類TestClass3公有繼承類TestClass2與TestClass1?!蓖?3),所以這里補(bǔ)全“classTestClass3:publicTestClass2,publicTestClass1”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:i=5i=10i=15i=20注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。1#include2clasSCMyClasS3{4publiC:5template6voidfunc(Tx,Ty)7{8/********error********/9Ti=0;10if(x>=i)11{12i=i+x;13}14else15{16i=i+y,17}18cout<<"i="<標(biāo)準(zhǔn)答案:(1)staticTi=0;(2)t.func((char)68,(char)1);(3)t.func((int)i,1);知識(shí)點(diǎn)解析:程序當(dāng)中定義了類CMyClass,含有一個(gè)成員函數(shù)模板func(Tx,Ty),在函數(shù)內(nèi)定義一個(gè)變量i,如果參數(shù)X大于i,則i和X的和賦值給i,否則i和y的和賦值給i。[解題思路](1)在主函數(shù)內(nèi)定義了類CMyClass對(duì)象t,第一次調(diào)用func0函數(shù)傳入整型參數(shù)5和0,此時(shí)T表示整型(int),5>0,此時(shí)i和X的和為5,故屏幕輸出i的值為i=5;第二次調(diào)用func0函數(shù),傳入?yún)?shù)為char型數(shù)據(jù),此時(shí)T表示字符型(char),chari=0,68>0,故i為68,屏幕輸出ASCII碼為68的字符,即i=D;第三次調(diào)用func()函數(shù),傳入整型數(shù)據(jù)10和l,此時(shí)T表示整型(int),輸出為i=15,顯然如果i為一般的局部變量,輸出應(yīng)該是i=10(10>0,i=10+0=10),這里i記憶了第一次調(diào)用funcO函數(shù)后的值(i=5,10>5,10+5=15),故i為靜態(tài)變量,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“staticTi=0:”。(2)func()函數(shù)兩個(gè)參數(shù)類型一致,從輸出結(jié)果看,第二次調(diào)用func()傳入的參數(shù)均是char型的,故第2個(gè)標(biāo)識(shí)下應(yīng)改為“t.func((char)68,(char)1);”,(char)68和(char)1含義是做強(qiáng)制類型轉(zhuǎn)換,將整型轉(zhuǎn)換成char型。(3)第3個(gè)標(biāo)識(shí)下傳入?yún)?shù)l為整型,局部變量i為float型,由輸出結(jié)果可知,第四次調(diào)用func0函數(shù)也改變了靜態(tài)變量i(staticinti)的值,故傳入的參數(shù)均為整型,因第3個(gè)標(biāo)識(shí)下的局部變量i(float型)也要強(qiáng)制類型轉(zhuǎn)換,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“t.func((int)i,1);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp,閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)sum(intn)計(jì)算在n范圍內(nèi),能被7和11整除的所有整數(shù)的和(包括n在內(nèi))。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。1#include2doublesum(intn)3{45}6voidmain()7{8cout<標(biāo)準(zhǔn)答案:1intresult=0;2for(inti=11;i<=n;i++)3{4if((i%7==0)&&(i%11==0))5{6result+=i;7}8}9returnresult;知識(shí)點(diǎn)解析:函數(shù)sum(intn)的功能是實(shí)現(xiàn)計(jì)算在n范圍內(nèi),能被7和11整除的所有整數(shù)的和(包括n在內(nèi)),可采用循環(huán)的方式從11開(kāi)始到n逐個(gè)尋找能被7和11整除的數(shù),如果能同時(shí)被7和1l整除則加到累加變量中。[解題思路](1)利用循環(huán)查找能所有小于等于n的能被7和ll整除的數(shù),循環(huán)變量i從最小值11開(kāi)始,到n結(jié)束,即11<=i<=n。(2)在函數(shù)中定義累加變量result用來(lái)保存求和結(jié)果,在循環(huán)體內(nèi),逐個(gè)判斷每個(gè)i是否能被7和11整除,即(i%7==0)和(i%11==0)都滿足的話,說(shuō)明i能同時(shí)被7和11整除,將該值加到result上,循環(huán)結(jié)束返回result。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示學(xué)生學(xué)號(hào)的類CStudentlD,但類CStudentlD的定義并不完整。運(yùn)行結(jié)果為:學(xué)生的學(xué)號(hào)為:200805學(xué)生名為:李偉刪除學(xué)生學(xué)號(hào)為:200805請(qǐng)按要求完成下列操作,將類CStudentID的定義補(bǔ)充完成:(1)定義classCStudentID類的私有數(shù)據(jù)成員IDvalue表示學(xué)生的學(xué)號(hào),為long型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)CStudentlD的定義,使CStudentID對(duì)象的默認(rèn)值為:id=0,并把學(xué)生的學(xué)號(hào)賦給IDvalue,并輸出“賦給學(xué)生的學(xué)號(hào):”及學(xué)號(hào)。請(qǐng)?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成默認(rèn)析構(gòu)函數(shù)CStudentlD的定義,使CStudentID析構(gòu)時(shí)輸出“刪除學(xué)號(hào):”及學(xué)號(hào)。請(qǐng)?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成默認(rèn)構(gòu)造函數(shù)CStudentlnfo的定義。對(duì)應(yīng)兩個(gè)默認(rèn)參數(shù):要求定義charstName[],其默認(rèn)值為“noname”,定義longstID,其默認(rèn)值設(shè)為0,并使它們賦值給相應(yīng)的類數(shù)據(jù)成員。請(qǐng)?jiān)谧⑨專?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include2#include3C1assCStudentID4{5//********1********定義私有數(shù)據(jù)成員67public:8//********2********定義默認(rèn)構(gòu)造函數(shù)910{11IDvalue=id;12cout<<"學(xué)生的學(xué)號(hào)為:"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:longIDvalue;(2)添加語(yǔ)句:CStudentID(10ngid=0)(3)添加語(yǔ)句:~CStudentID()(4)添加語(yǔ)句:CStudentInfo(charstName[]="noname",longstID=O):id(stID)知識(shí)點(diǎn)解析:程序中定義了兩個(gè)類CStudentID和CStudentlnfo,其中類CStudentID包含學(xué)生的學(xué)號(hào)信息的成員變量,有自定義構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù),而類CStudentlnfo不僅包含學(xué)生的學(xué)號(hào)還包括對(duì)應(yīng)的姓名信息的成員變量,還實(shí)現(xiàn)了自定義構(gòu)造函數(shù)。[解題思路](1)第1個(gè)標(biāo)識(shí)下完成CStudentID類的私有數(shù)據(jù)成員IDvalue的定義,為long型的數(shù)據(jù),因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“l(fā)ongI:Dvalue;”。(2)構(gòu)造函數(shù)完成類成員變量的初始化,構(gòu)造函數(shù)名和類名一致,該構(gòu)造函數(shù)帶有一個(gè)參數(shù)id,其默認(rèn)值為id=0,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“CStudentlD(10ng。id=0)”。(3)析構(gòu)函數(shù)也和類名一致,并且在前面加“~”以和構(gòu)造函數(shù)區(qū)分,析構(gòu)函數(shù)沒(méi)有參數(shù),故第3個(gè)標(biāo)識(shí)下應(yīng)添加“~CStudentID()”。(4)CStudentlnfo包含的學(xué)生學(xué)號(hào)信息保存在類CStudentID的實(shí)例中,可通過(guò)調(diào)用類CSmdentlD的自定義構(gòu)造函數(shù)初始化,第4個(gè)標(biāo)識(shí)下應(yīng)添加“CStudentlnfo(charstName[]=”noname",longstID=0):id(stlD)”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:100注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。1#include2statiCintx=50;3intt=0;4int*func(intx,inty,intz)s{6t=t+x+y+Z;7//********error********8returnt;9};10voidmain()11{12inty=30;13intx=10:。14intz=20;15//********error********16X=X;17//********error********18cout<標(biāo)準(zhǔn)答案:(1)return&t;(2)x=::x;(3)Cout<<*fune(x,y,z)<知識(shí)點(diǎn)解析:程序當(dāng)中定義了全局靜態(tài)變量x,主函數(shù)內(nèi)又定義了一個(gè)和靜態(tài)變量x重名的變量x,在使用時(shí)需要注意區(qū)分這兩個(gè)變量。函數(shù)func(intx,inty,intz)返回一個(gè)整型數(shù)據(jù)指針,功能是將參數(shù)x,y,z三者求和,通過(guò)指針?lè)祷剡\(yùn)算結(jié)果。[解題思路](1)由審題分析可知,函數(shù)func(intx,inty,intz)返回的是整型數(shù)據(jù)指針,而第1個(gè)標(biāo)識(shí)下的retumt表示返回一個(gè)整型數(shù)據(jù),和要求的返回?cái)?shù)據(jù)類型不匹配,應(yīng)改為“return&t:”。(2)第2個(gè)標(biāo)識(shí)下x=x表示局部變量x自己給自己賦值,調(diào)用func(x,y,z)函數(shù)后,返回的運(yùn)算結(jié)果是30+10+20=60,與輸出100不同,而全局靜態(tài)變量x值為50,30+50+20=100,剛好滿足條件,因此第2個(gè)標(biāo)識(shí)下是將全局靜態(tài)變量x的值賦給局部變量x,即第2個(gè)標(biāo)識(shí)下應(yīng)該為“x=::x:”,“::”表示的是引用全局變量。(3)func(x,y,z)返回一個(gè)整型數(shù)據(jù)指針,通過(guò)該指針可以得到運(yùn)算結(jié)果,而cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*S,inta[]),其功能是把S中出現(xiàn)的數(shù)字轉(zhuǎn)換成數(shù)字存儲(chǔ)在a[]中,然后返回轉(zhuǎn)換的個(gè)數(shù)。例如:S="1234abcdef567":則:a[]qb存儲(chǔ)著1234567返回:7注意:不能修改程序的其他部分,只能修改fun()函數(shù)。1#include2intfun(char*S,inta[])3{45}6intmain()7{8inta[1024];9intlen=fun("1234abcdef567",a);10for(inti=0;i標(biāo)準(zhǔn)答案:1intJ=0;2for(inti=0;S[i]!=0;i++)//字符串內(nèi)循環(huán)3{4if(S[i]>=’0’&&s[i]<=’9’)//判斷字符是否為0~9的字符5{6a[j++]=S[i]一’0’;//如果為0~9的字符,轉(zhuǎn)換為整型7}8}9returnj;//返回?cái)?shù)字個(gè)數(shù)知識(shí)點(diǎn)解析:(1)該程序功能是把字符串中出現(xiàn)的數(shù)字轉(zhuǎn)換成數(shù)字存儲(chǔ)在數(shù)組中,然后返回轉(zhuǎn)換的個(gè)數(shù)。其中,字符和整型的ASCII差為96,即為’0’的ASCII碼值。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)fun實(shí)現(xiàn)題目中要求的功能,其中intfun(char*s,inta[])中的S為要轉(zhuǎn)換的字符串,a為存放轉(zhuǎn)換為數(shù)字的數(shù)組,返回值為轉(zhuǎn)換的個(gè)數(shù)。[解題思路](1)i變量用來(lái)記錄轉(zhuǎn)換的個(gè)數(shù),首先初始化為0。(2)然后利用for循環(huán)對(duì)每一個(gè)當(dāng)前字符進(jìn)行判斷是否為數(shù)字字符。(3)如果為數(shù)字字符,就將其減去字符‘0’,即實(shí)現(xiàn)字符和整型的轉(zhuǎn)換。并且,將i的變量值加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,這個(gè)程序完成輸出到屏幕一些特定的信息,但工程有錯(cuò)誤或者不完整,請(qǐng)完成以下功能:(1)初始化mNum2的值為j,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)補(bǔ)充全局函數(shù)fun()使之能夠調(diào)用類TestClass的成員變量,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)初始化靜態(tài)變量,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)修改注釋//********4********后的語(yǔ)句。使得程序輸出以下內(nèi)容:m_Num1=1m_Num2=2m_Num3=lm_Num1=4m_Num2=2m_Num3=1注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。1#include2ClaSSTestClasS3{4publiC:s//********1********67TestClasS(inti,intJ)8{9m_Numl=i;i0m_Num3+=i;11}12VOidPrint()13{14cout<<"m_Numl="<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:TestClasS(inti,intJ):mNum2(j)(2)添加語(yǔ)句:friendvoidfun();(3)添加語(yǔ)句:intTestClass::m_Num3:0;(4)將“Num.Add();”補(bǔ)充完整為:Num.Add(5);知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類TestClass和函數(shù)fun實(shí)現(xiàn)各種輸出操作。[解題思路](1)根據(jù)“constintmNum2;”語(yǔ)句知道m(xù)_Num2為類TestClass中的私有數(shù)據(jù),另外,C++定義構(gòu)造函數(shù)的初始化數(shù)據(jù)成員的方法中可以在原有函數(shù)末尾加一個(gè)冒號(hào),然后列出參數(shù)的初始化表實(shí)現(xiàn),即“TestClass(inti,intj):m_Num2(j)”。(2)在C++中,如果在本類以外的其他地方定義了一個(gè)函數(shù),在類體中是用friend對(duì)該函數(shù)進(jìn)行聲明的,此函數(shù)稱為本類的友元函數(shù),并且能夠調(diào)用本類中的成員變量。程序中fun()在類TestClass以外的地方定義的,為了實(shí)現(xiàn)其對(duì)類TestClass中成員變量的調(diào)用,在類TestClass中補(bǔ)全“friendvoidfun();”,即聲明脅()為類TestClass的友元函數(shù)。(3)在C++中,初始化類中數(shù)據(jù)成員的格式可以是“<類型>類名class::參數(shù)=”,其中<類型>為要初始化參數(shù)的類型,“::”為作用域符號(hào),說(shuō)明參數(shù)是class中的參數(shù),所以這里補(bǔ)全“intTestClass::m_Num3=0;”。(4)函數(shù)fun()中“Num.Add();”語(yǔ)句應(yīng)該是調(diào)用類“TestClass”中的成員函數(shù)“voidAdd(inti)”。其定義中存在參數(shù)inti,所以注釋下修改的語(yǔ)句缺少參數(shù)。主函數(shù)首先調(diào)用“Num.Print();”,即實(shí)現(xiàn)題目中輸出的前三條語(yǔ)句,而“fun();”語(yǔ)句實(shí)現(xiàn)后面三條語(yǔ)句的輸出,即“mNum3=7”才是調(diào)用Num.Add的輸出結(jié)果,即“mNum3+=i;”的計(jì)算結(jié)果?!癟estClassNum(1,2);”中將i的值初始化為1,“mNum3”的值在上一次“Num.Print();”調(diào)用中為1,如果計(jì)算結(jié)果為7,那么Add(inti)中i的初始化值為5,即“Num.Add(5);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:Hello注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。{}includevoidmain()f∥********error********typedefBOOLbool;∥********error********BOOLa=FALSE;inti=0X80000000;∥********error********a=!i;if(a){cout<<“Hello”<標(biāo)準(zhǔn)答案:(1)typedefboolBOOL;(2)BOOLa=false;(3)a=(i!=0);知識(shí)點(diǎn)解析:程序要求輸出Hello。本題程序中不存在復(fù)雜的結(jié)構(gòu),從己定源程序的main主函數(shù)依次處理錯(cuò)誤提示下的語(yǔ)句即可。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(inti),實(shí)現(xiàn)以下功能:當(dāng)i等于5時(shí),則打印如下內(nèi)容。###############注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includevoidfun(intn){}voidmain(){intn;cout<<“請(qǐng)輸入打印的行數(shù):”<>n;if(n<1){cout<<“輸入的行數(shù)必須大于0”<標(biāo)準(zhǔn)答案:inti;for(i=0;i知識(shí)點(diǎn)解析:(1)該程序功能是打印題目中要求的#字形狀。它的解題思路,在不顯示#字地方,用空格占位。(2)從己給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(intn)中的n參數(shù)為輸入的要打印的行數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)源程序文件modi3.cpp。其中類TcstClass用于把文件輸出到屏幕,然后進(jìn)行文件的分割。分割的方法如下:第一個(gè)文件的大小是文件的前一半,另外一個(gè)文件的大小是剩余部分。此程序?qū)nt.txt文件中的內(nèi)容輸出到屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)從輸入文件中獲得一個(gè)字符,并判斷是否到文件結(jié)尾,如果到文件結(jié)尾,則退出循環(huán)。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)把獲得的輸入文件的內(nèi)容存儲(chǔ)到buf中,并且用len記錄下文件的長(zhǎng)度。請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)將輸入文件的后一半內(nèi)容存儲(chǔ)在第二個(gè)文件中,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)使用文件流對(duì)象打開(kāi)輸入文件in.txt,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#include#includeclassTestClass{public:TestClaSS(char*fileName){len=0;fStreaminfile;infile.open(fileName,ios::in);charch;∥********1********while(){cout<標(biāo)準(zhǔn)答案:(1)將“while()”完整為:while(infile.get(ch))(2)添加語(yǔ)句:buf[1en++]=ch;(3)添加語(yǔ)句:outfile2<知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類TcstClass及其成員函數(shù)實(shí)現(xiàn)各種輸出操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)1、給定程序NODll.C中,fun函數(shù)的功能是:刪除b所指數(shù)組中小于10的數(shù)據(jù)。主函數(shù)中輸出刪除后數(shù)組中余下的數(shù)據(jù)。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN20intfun(int*b){/*********found*********/intt[N],i,numfor(i=0;i=10)/*********found*********/t[++num]=b[i];/*********found*********/for(i=0;i標(biāo)準(zhǔn)答案:(1)intt[N],i,num:0;(2)t[num++]=b[i];或{t[num]=b[i];num++;}(3)for(i=0;i知識(shí)點(diǎn)解析:要?jiǎng)h除數(shù)組b中小于10的數(shù),應(yīng)依次取出數(shù)組數(shù)組b中的元素與10進(jìn)行比較,若不小于10,則將其存入數(shù)組t中,遍歷完成后,數(shù)組t中的元素即為所求,再將數(shù)組t中的元素保存到數(shù)組b中即可。(1)元素。num存放不小于10的元素的個(gè)數(shù),應(yīng)將其初始化為0。(2)將數(shù)組b中不小于10的元素存入數(shù)組t中,同時(shí)使數(shù)組t的下標(biāo)加1。(3)語(yǔ)法錯(cuò)誤,沒(méi)有nun這個(gè)變量,應(yīng)該為num。二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、編寫(xiě)函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在C數(shù)的十位和千位上。例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后c=2514。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容.僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include#includevoidfun(inta,intb,long*c){}main(){inta,b;longc;printf("Inputa,b:");scarlf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%1d\n",c);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){/*b%10獲取b的個(gè)位,a/10獲取a的十位,a%10獲取a的個(gè)位,b/10獲取b的十位*/*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;}知識(shí)點(diǎn)解析:本題的主要問(wèn)題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對(duì)它們除10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、100、10、l,就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意使用c時(shí)要進(jìn)行指針運(yùn)算。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類ABC和主函數(shù)main。程序文本中位于每行“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:2123注意:只修改每個(gè)“//ERROR****found****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#include<iostream>usingnamespacestd;classABC(public://ERROR*******found*******ABC(){a=0;b=0;c=0;}ABC(intaa,intbb,intcc);voidSetab(){++a,++b;}intSum(){returna+b+c;}private:inta,b;constintc;};ABC∷ABC(intaa,intbb,intcc):c(cc){a=aa;b=bb;}intmain(){ABCx(1,2,3),y(4,5,6);ABCz,*w=&z;w->Setab();//ERROR*******found*******ints1=x.Sum()+y->Sum();cout:<<s1<<";//ERROR*******found*******ints2=s1+w.Sum();cout<<s2<<end1;return0;}標(biāo)準(zhǔn)答案:(1)ABC():a(0),b(0),c(0){}(2)ints1=x.Sum()+y.Sum();(3)ints2=s1+w->Sum():知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,根據(jù)私有成員的定義:constintc;可知,c為常變量,因此構(gòu)造函數(shù)必須使用成員列表初始化來(lái)給c賦初始值。(2)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第一條語(yǔ)句:ABCx(1,2,3),y(4,5,6);可知,x和y都是ABC類,但不是指針,因此它們調(diào)用ABC類的成員函數(shù)要使用標(biāo)識(shí)符“.”,而不是“->”。(3)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第二條語(yǔ)句:ABCz,*w=&z;可知,w是ABC類的指針,指向z,因此w調(diào)用ABC類的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“->”,而不是“.”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類Base和Derived,以及主函數(shù)main。程序文本中位于每行“//****found****”下面的一行內(nèi)有一處或多處下畫(huà)線標(biāo)記,請(qǐng)?jiān)诿總€(gè)下畫(huà)線標(biāo)記處填寫(xiě)合適的內(nèi)容,并刪除下畫(huà)線標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出應(yīng)為:sum=55。注意:只在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classBase{public:Base(intm1,int;m2){metal=m1;mem2=m2j}intsum(){returnmeta1+mera2;}private:intmeta1,merm2;//基類的數(shù)據(jù)成員};//派生類Derived從基類Base公有繼承//**********found**********ClassDerived:_________{public://構(gòu)造函數(shù)聲明Derived(intm1,int:m2,intm3);//sum函數(shù)定義,要求返回mem1、mem2和mere3之和//**********found**********int:sum(){return_______+mem3;}private:intmere3;//派生類本身的數(shù)據(jù)成員};//構(gòu)造函數(shù)的類外定義,要求由m1和m2分別初始化mem1和mem2,由m3初始化mem3//**********found**********_______Derived(intm1,intm2,intm3)://**********found**********_______,mem3(m3){}intmain(){Basea(4,6);Derivedb(10,15,20);intsum=a.sum()+b.sum();cout<<"sum="<<sum<<end1;return0;}標(biāo)準(zhǔn)答案:(1)publicBase(2)Base∷sum()(3)Derived∷(4)Base(m1,m2)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)公有繼承的掌握情況,根據(jù)題目要求:派生類Derived從基類Base公有繼承,因此這里使用public來(lái)公有繼承。(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目對(duì)sum函數(shù)的要求:sum函數(shù)定義,要求返回mem1、mem2和mem3之和,因此這里直接調(diào)用基類的sum函數(shù),再加上mem3就滿足題目要求。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,由于Derived的構(gòu)造函數(shù)在類外定義,因此要加上類名和作用域符,即Derived∷。(4)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,因?yàn)镈erived是Base類的派生類,所以其構(gòu)造函數(shù)要使用成員列表初始化先給Base初始化。面加上基類名和作用域符,從而防止派生類中也有相同函數(shù)時(shí)產(chǎn)生的二義性。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中包含主程序文件main.cpp和用戶定義的頭文件Array.h,整個(gè)程序包含有類Array的定義和主函數(shù)main的定義。請(qǐng)把主程序文件中的Array類的成員函數(shù)Contrary()的定義補(bǔ)充完整,經(jīng)補(bǔ)充后運(yùn)行程序,得到的輸出結(jié)果應(yīng)該是:585,4,3,2,10,0,8.4,5.6,4.5,3.4,2.3,1.2注意:只允許在“********333********”和“//********666********”之間填寫(xiě)內(nèi)容,不允許修改其他任何地方的內(nèi)容。//Array.h#include<iostream>usingnamespacestd;template<classType,intm>classArray(//數(shù)組類public:Array(Typeb[],intmm){//構(gòu)造函數(shù)for(inti=0;i<m;i++)if(i<mm)a[i]=b[i];elsea[i]=0;}voidContrary();//交換數(shù)組a中前后位置對(duì)稱的元素的值intLength()const{returnm;}//返回?cái)?shù)組長(zhǎng)度Typeoperator[](inti)const{//下標(biāo)運(yùn)算符重載為成員函數(shù)if(i<0‖i>=m){cout<<"下標(biāo)越界!"<<end1;exit(1);}returna[i];}private:Typea[m];};voidwriteToFile(constchar*);//不用考慮此語(yǔ)句的作用//main.cpp#include"Array.h"//交換數(shù)組a中前后位置對(duì)稱的元素的值template<classType,intm>voidArray<Type,m>∷Contrary(){//補(bǔ)充函數(shù)體//********333********//********666********}intmein(){intsl[5]={1,2,3,4,5};doubles2[6]={1.2,2.3,3.4,4.5,5.6,8.4);Array<int,5>d1(s1,5);Array<double,8>d2(s2,6);inti;d1.Contrary();d2.Contrary();cout<<d1.Length()<<"<<d2.Length()<<end1;for(i=0;i<4;i++)cout<<d1[i]<<",";cout<<d1[4]<<end1;for(i=0;i<7;i++)cout<<d2[i]<<"

溫馨提示

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

評(píng)論

0/150

提交評(píng)論