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

下載本文檔

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

文檔簡介

國家二級C++機(jī)試(操作題)模擬試卷39(共9套)(共26題)國家二級C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用菜單命令或直接使用VC6打開考生文件夾下的工程proj1。程序中位于每個//ERROR********found********下的語句行有錯誤,請加以更正,不得修該程序的其他部分。更正后程序的輸出應(yīng)該是:兩點(diǎn)之間的距離為:7.5231注意:只能修改每爪//ERROR********found********下的那一行,不要改動程序中的其他內(nèi)容:1#include2#include3usingnamespacestd;4classPoint{5private:6doublex,y;7public:8Point(doublexx,doubleyy){x=xx;9y=yy;10}11//ERROR********found********12doubleMyDistance(Point&a,Point&b);13};14doubleMyDistance(Point&a,Point&b){15//ERROR********found********16doubledx=x-b.x;17//ERROR********found********18doubledy=a.y=y;19returnsqrt(dx*dx+dy*dy);20}21intmain()22{23Pointp1(3.6,6.4),p2(8,0.3);24doubled=MyDistance(p1,p2);25cout<<“兩點(diǎn)之間的距離為:”<標(biāo)準(zhǔn)答案:(1)frienddoubleMyDistance(Point&a,Point&b);(2)doubledx=a.x-b.x:(3)doubledv=a.y-b.v;知識點(diǎn)解析:(1)主要考查考生對友元函數(shù)的掌握,由于MyDistance函數(shù)在類定義體外定義時,未加類名Point修飾作用域,可知MyDistance并不是類。Point的成員函數(shù),但是聲明是在Point定義體內(nèi)部,所以應(yīng)該是友元函數(shù),另外函數(shù)MyDistance可以直接操作Point對象的成員變量,所以進(jìn)一步確定是友元函數(shù),使用friend關(guān)鍵字修飾。(2)主要考查考生對友元函數(shù)的掌握和成員變量的訪問,在函數(shù)MyDistance中,為了計(jì)算a、b兩點(diǎn)的距離,需要計(jì)算兩個點(diǎn)的橫縱坐標(biāo)差值,所以需要訪問a、b的橫縱坐標(biāo),將a的橫坐標(biāo)減去b的橫坐標(biāo),得到差值dx,再計(jì)算dy。(3)主要考查考生對友元函數(shù)的掌握和成員變量的訪問,在函數(shù)MyDistance中,為了計(jì)算a、b兩點(diǎn)的距離,需要計(jì)算兩個點(diǎn)的橫縱坐標(biāo)差值,所以需要訪問a、b的橫縱坐標(biāo),將a的縱坐標(biāo)減去b的縱坐標(biāo),得到差值dy,再與dx一起計(jì)算距離。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用菜單命令或直接用VC6打開考生文件夾下的工程proj2,其中有元素類Element和集合類MySet的定義。請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的輸出結(jié)果應(yīng)為:0358038注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不能刪除或移動“//**********found**********”。1#inClude2#include3usingnamespacestd;4#defineMaxElement1005classElement{//“元素”類6public:7intn;8Element(inti=0):n(i){)9};10classMySet{//“集合”類11Element*element;//指向存儲元素的數(shù)組的指針12intsize;//數(shù)組大小13intcounter;//數(shù)組中元素的個數(shù)14intcurrent;//用于表示掃描位置,及當(dāng)前被掃描元素在數(shù)組中的下標(biāo)15public:16MySet():element(newElement[100]),size(100),counter(0),cur-rent(0){)17~MySet(){delete[]element;}18voidadd(Elementele);//向集合中添加一個元素,保持由小到大的順序。19voidremOve(Elementele);//刪除集合中指定的元素20voidScanFirst(){current=0;)//將掃描位置定位于首元素21//**********found**********22voidscanNext(){_____;}//將掃描位置定位于下一個元素23Elementget()const{returnele-ment[current];}//返回當(dāng)前被掃描的元素24boolisEnded()const{returncur-rent>=counter;}//如果已經(jīng)沒有更多的元素可掃描了,返回true。25voidshow();//顯示集合中所有元素26};27voidMySet::add(Elementele){28intpos=counter;//pos用于確定元素應(yīng)插入的位置29while(pos>0){//從后往前尋找該位置30if(ele.n>element[pos-1].n)break;//找到應(yīng)插入的位置,退出循環(huán)31//**********found**********32if(_______)return;//發(fā)現(xiàn)相同元素,終止添加過程。33pos--;34}35if(counter>=size){//如果沒有足夠空間,擴(kuò)充空間(增加100個元素的容量)36Element木tmp=element;//tmp指向原來的數(shù)組37//**********found**********38element=______;//申請一個新的數(shù)組,容量擴(kuò)大100個元素的容量39for(inti=0;ipos;i--)element[i]=element[i-1];//后移相關(guān)元素,騰出存放新元素的空間44element[pos]=ele;//插入新元素counter++;45}46voidMySet::show(){47scanFirst();//掃描位置定位于首元素48while(!isEnded()){49cout<=0){//從后往前尋找該位置58if(ele.n>element[pos].n)return;//集合中沒有該元素,終止刪除過程。59if(ele.n==element[pos].n)break;//找到刪除的元素,退出循環(huán)。60pos--;61}62if(pos<0)return;//集合中沒有該元素,終止刪除過程。63for(inti=pos;i標(biāo)準(zhǔn)答案:(1)++current(2)ele.n==element,[pos-1].n(3)newElementl[size+100](4)scanNext()知識點(diǎn)解析:(1)主要考查考生對數(shù)組和自增運(yùn)算符的掌握情況,掃描數(shù)組元素,將掃描位置定位到下一個元素,需要將下標(biāo)加1,使用自增運(yùn)算符。(2)主要考查考生對數(shù)組元素的訪問和比較運(yùn)算符的掌握,pos初值為數(shù)組元素個數(shù),所以訪問element元素使用pos-1,避免訪問數(shù)組越界;另外需要判斷插入元素與當(dāng)前元素是否相等來決定程序是否返回,使用相等運(yùn)算符。(3)主要考查考生對動態(tài)內(nèi)存分配的掌握,題意需要申請一個新的數(shù)組,并將當(dāng)前數(shù)組容量size擴(kuò)大100個,所以答案為newElement[size+100]。(4)主要考查考生對類成員函數(shù)的掌握,show函數(shù)用來輸出數(shù)組的所有元素,所以從首元素開始一次輸出,輸出一個元素需要將掃描定位到下一個元素,對應(yīng)于前面的scan-First(),使用成員函數(shù)scanNext()最合適不過了。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明了SortedList類,是一個用于表示有序數(shù)據(jù)表的類。其成員函數(shù)insert的功能是將一個數(shù)據(jù)插入到一個有序表中,使得該數(shù)據(jù)表仍然保持有序。請編寫這個insert函數(shù)。程序的正確輸出應(yīng)為:插入前:1,2,4,5,7,8,10插人6和3后:1,2,3,4,5,6,7,8,10要求:補(bǔ)充編制的內(nèi)容寫在“//料**********333**********”與“//********666********”之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obi文件,并且在本程序中調(diào)用。1//SortedList.h2#include3usingnamespacestd;4classSortedList{//有序數(shù)據(jù)表類5intlen;6double*d;7public:8SortedList(intlen,doubledata[]=NULL);9~SortedList(){delete{]d;}10intlength()const{returnlen;)//有序數(shù)據(jù)表長度(即元素的個數(shù))11doublegetElement(inti)const{re-turnd[i];}12voidinsert(doubledata);13voidshow()const;//顯示有序數(shù)據(jù)表14};15voidwriteToFile(char*,constSort-16edList&);1//main.cpp2#include"SortedList.h"34SortedList::SortedList(intlen,5doubledata[]):len(len){6d=rlewdouble[len];7for(intk=0;ki){14doublet=d[m];15d[m]=d[i];16d[i]=t;17}18}19}20voidSortedList::insert(doubleda-21ta){22//********333********232425//********666********26}27voidSortedList::show()const{//顯示有序數(shù)據(jù)表28for(inti=0;i標(biāo)準(zhǔn)答案:1for(inti=0;ii;k--)//在數(shù)組d中從k等于fen到i做遍歷7dd[k]=d[k-1];//把d[k-1]賦值給dd[k]8dd[i]=data;//把data賦值給dd[i]9for(intj=0;j知識點(diǎn)解析:主要考查考生對插入算法的掌握,題目要求insert函數(shù)的功能是將一個數(shù)據(jù)插入到一個有序表中,使得該數(shù)據(jù)表仍保持有序??梢灾罃?shù)據(jù)表d是一組有序的數(shù)組,那么就采取先比較再插入的步驟完成即可。要注意動態(tài)數(shù)組d的長度是確定的,要添加元素,就要重新分配空間。國家二級C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤,使得程序運(yùn)行后沒有內(nèi)存遺漏??梢栽谛薷奶幵黾踊蛘邉h除一條語句。本程序完成輸入兩個字符串,分別存儲到s1,s2中。注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********error********的下面。1#include2voidmain()3{4char*s1;5chars2[1024];6cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:(1)s1=newchar[1024];(2)delete[]s1;(3)刪除“deletes2;”語句知識點(diǎn)解析:本題是主要是處理程序運(yùn)行后是否有內(nèi)存遺漏的問題。對于這類問題主要是根據(jù)調(diào)試環(huán)境中的錯誤提示以及警告提示進(jìn)行處理。[解題思路](1)sl變量為指針變量,在使用前要對其分配空間,所以第1個標(biāo)識下添加“s1=newchar[1024];”。(2)為了防止內(nèi)存空間的泄漏,指針變量使用后,要將其空間釋放,第二個標(biāo)識下“delete[]s1;”。(3)s2是數(shù)組變量,空間是在使用前靜態(tài)分配的,不是使用前動態(tài)分配的,所以使用后不用釋放內(nèi)存空間,這里應(yīng)該刪除“deletes2;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請補(bǔ)充完整程序fun(inti),使程序完成以下功能:如果i=5,則輸出如下5行井號。###############注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include2voidfun(inti)3{45}6intmain()7{8fun(5);9return0;10}標(biāo)準(zhǔn)答案:1for(intj=0;j知識點(diǎn)解析:(1)該程序功能是輸出5行井號。它的解題思路,兩層循環(huán),外循環(huán)為行,內(nèi)循環(huán)為列。第一行為1列,第二行為兩列,同理類推,第11行為n列。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)fun(inti)中的i參數(shù)為i行#。[解題思路](1)首先,利用for循環(huán)進(jìn)行外層循環(huán),要輸出的i行。(2)然后,利用for循環(huán)進(jìn)行內(nèi)層循環(huán),輸出對應(yīng)i行的i列。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,通過把類Distance定義為類Point的友元類,來實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離的功能。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)把類CDistance定義為類CPoint的友元類。請?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z句。(2)定義類CPoint的構(gòu)造函數(shù),完成給私有數(shù)據(jù)成員x和y的賦值,并且兩個參數(shù)的缺省值都為0。請?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z句。(3)完成類CDistance的成員函數(shù)length(Point&pPoint,Point&qPoint)~定義,并在其中計(jì)算點(diǎn)p、q之間的距離,并且返回結(jié)果。假設(shè)兩點(diǎn)之間的距離distance=sqrt((pPoint.x-qPomt.x)*(pPoint.x-qPoint.x)+(pPoint.y-qPoint.y)*(pPoint.y-qPoint.y))。請?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。1#include2#include3usingnamespacestd;4classCPoint5{6public:7//********1********89//定義類Point的構(gòu)造函數(shù)10//********2********1112voiddisplay(){cout<<"x="<標(biāo)準(zhǔn)答案:(1)添加語句:friendC1assCDistance;(2)添加語句:CPoint(floata=0,floatb=0){x=a;y=b;)(3)添加語句:returnsqrt((pPoint.x—qPoint.x)*(pPoint.x—qPoint.x)+(pPoint.y—qPoint.y)*(pPoint.y—qPoint.y));知識點(diǎn)解析:程序當(dāng)中定義了類CPoint和CDistance,CPoint類含有成員變量x和y,display()函數(shù)輸出x和y的值;類CDistance只有成員函數(shù)length(CPoint&p,CPoint&q),且類CDistance為類CPoint的友元類。[解題思路](1)第1個標(biāo)識下補(bǔ)充定義類CDistance為類CPoint的友元類,聲明友元類的格式為:friend<類名>;,故第1個標(biāo)識下應(yīng)添加“friendclassCDistance;”。(2)類CPoint的構(gòu)造函數(shù)完成給私有數(shù)據(jù)成員x和y的初始化,兩個參數(shù)的缺省值都為0,因此參數(shù)含有默認(rèn)值0,故第2個標(biāo)識下應(yīng)添加“CPoint(floata=O,floatb=0){x=a;y=b;}”。(3)類CDistance的成員函數(shù)length(CPoint&pPoint,CPoint&qPoint)返回點(diǎn)P、q之間的距離,可由公式distance=sqrt((pPoint.X-qPoint.X)*(pPoint.X-qPoint.x)+(pPoint.Y-qPoint.y)*(pPoint.y-qPoint.y))計(jì)算求得,第3個標(biāo)識下應(yīng)添加“returnsqrt((pPoint.x-qPoint.x)*(pPoint.X-qPoint.x)+(pPoint.y-qPoint.y)*(pPoint.Y-qPoint.y));”。國家二級C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:HelloVisualC++!HelloVisualC++!!注意:錯誤的語句在∥********error********的下面,修改該語句即可。#includeclassCMyObject{public:CMyObject(){∥********error********cout<<“HellO,”VisualC++!’<標(biāo)準(zhǔn)答案:(1)cout<<“Hello,”(2)cout<<“Helio,\(3)~CMyObject()知識點(diǎn)解析:程序當(dāng)中定義了類CMyOb]ect,含有兩個構(gòu)造函數(shù)和一個析構(gòu)函數(shù),在構(gòu)造函數(shù)內(nèi)部均使用cou輸出一段字符。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補(bǔ)充空出的代碼。完成函數(shù)ToUpper(char*des.char*str),該函數(shù)實(shí)現(xiàn)把str字符串中小寫字符轉(zhuǎn)換成大寫字符,并存發(fā)在des中。例如:str=“aBcdrFGHijK”:則:des=“ABCDEFGHIJK”:注意:不能修改程序的其他部分,只能補(bǔ)充ToUpper()函數(shù)。#include#defineMAXLEN1024voidToUpper(char*des,char*str){}voidmain(){chardeSt[MAXLEN];char*str=“aBcdrFGHiJK”:ToUpper(dest,Str);cout<標(biāo)準(zhǔn)答案:for(inti=0;Str[i]!=0;i++){if(str[i]>=‘a(chǎn)’&&Str[i]<=’z’)//比較是否是小寫字母{des[i]=str[i]一‘a(chǎn)’+‘A’;//替換成大寫字母}else{des[i]=str[i];//其他情況不變}deS[i+1]=0;}知識點(diǎn)解析:函數(shù)ToUpper(char*des,char*str),該函數(shù)實(shí)現(xiàn)把str字符串中小寫字符轉(zhuǎn)換成大寫字符,可利用循環(huán)檢查字符串str中的每一個字符,判斷該字符是不是小寫字母,如果是則轉(zhuǎn)換成大寫字母。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,分別用來表示復(fù)數(shù)的實(shí)部和虛部,都是double類型的變量。請?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z句。(2)添加復(fù)數(shù)類CComplex的帶一個參數(shù)的構(gòu)造函數(shù),分別將real和imaginary賦值為參數(shù)r和0。請?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成對運(yùn)算符“+”的重載,分別對復(fù)數(shù)的實(shí)部和虛部相加。請?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成復(fù)數(shù)的友元函數(shù)Equal(CComplex&c1.CComplex&c2)的定義,如果兩個數(shù)的實(shí)部和虛部都相等,則返回1,否則返回0,請?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#includeclassCComplex{private:∥********1********public:CComplex(){real=imaginary:0;}CComplex(doubler){∥********2********}CComplexoperator+(CComplex&c1){∥********3********temp.real=real+cl.real;temp.imaginary=imaginary+c1.imaginary;returntemp;}voidSet(intre,intimag){real=re;imaginary=imag;}friendboolEqual(CComplex&cl,CComplex&c2);};boolEqual(CComplex&cl,CComplex&c2){∥********4********}intmain(){CComplexcOmplexl(5);ccqmplexcomp!ex2;cout<標(biāo)準(zhǔn)答案:(1)添加語句:doublereal,imaginary;(2)添加語句:real=r;imaginary=0;(3)添加語句:CComplextemp;(4)添加語句:return(cl.real==c2.real)&&(c1.imagiI"18ry==c2.imaginary);知識點(diǎn)解析:程序中定義了類CComplex,含有私有成員變量real和imaginary,分別用來表示復(fù)數(shù)的實(shí)部和虛部,CComplex類有兩個構(gòu)造函數(shù)、對運(yùn)算符“+”的重載、Set(intre,intimag)可改變實(shí)部和虛都的值、友元Equal(CComplex&c1,CComplex&c2)函數(shù)可判斷兩個CComplex對象是否相等。(1)第1個標(biāo)識下完成定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,均為double類型的變量,因此第1個標(biāo)識下應(yīng)添加“doublereal,imaginary;”。(2)構(gòu)造函數(shù)CComplex(doubler)完成類的初始化,該構(gòu)造函數(shù)有一個參數(shù),分別將real和imaginary賦值為參數(shù)r和0,因此第2個標(biāo)識下應(yīng)添加“real=r;imaginary=0:”。(3)編譯程序可知,變量temp沒有定義,由operator+(CComplex&c1)函數(shù)體的語句可知,temp為函數(shù)的返回值,而operator+(CComplex&c1)i~數(shù)體函數(shù)返回CComplex類對象,故在第3個標(biāo)識下補(bǔ)充temp定義,即“CComplextemp;”。(4)即判斷兩個對象c1和c2的實(shí)部和虛部是否均相等,兩個邏輯結(jié)果相與即可,因此第4個標(biāo)識下應(yīng)添加“retum(c1.real==c2.real)&&(c1.imaginary==cz.imaginary)。國家二級C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:在帶頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。找到后通過函數(shù)值返回該結(jié)點(diǎn)在鏈表中所處的順序號;若不存在值為ch的結(jié)點(diǎn),函數(shù)返回0值。請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并將中括號刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN8typedefstructlist{intdata;strLlCtlist*next;}SLIST;SLIST*Crearlist(char*);voidoutlist(SLIST*);intfun(SLTST*h,charch){SLIST*p;intn=0;p=h一>next;/*********found*********/while(p!=【1】){n++;/*********found*********/if(p一>data==ch)return【2】;elsep=p一>next;}return0:}main(){SLIST*head;intk;charch;chara[N]={’m’,’p’,’q’,’a’,’w’,’x’,’r’,’d’};head=crearlist(a);outlist(head);print;f(”Enteraletter:”);scarlf("%c",&ch);/*********found*********/k=fun(【3】);if(k==0)printf("\nNotfound!\n");elseprintf("Thesequencenumberis:%d\n",k);}SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p一>next=0;returnh;}voidoutliSt(SLIST*h){SLIST*p;p=h一>next;if(p==NULL)printf("\nThelistisNULL!\n");else{printf("\nHead");do{printf("一>%c",p一>data);p=p一>next;}while(P!=NULL);printf("一>End\n");}}標(biāo)準(zhǔn)答案:(1)NULL(2)n(3)head,ch知識點(diǎn)解析:填空1:while循環(huán)語句用來判斷是否到達(dá)鏈表結(jié)尾,鏈表結(jié)尾結(jié)點(diǎn)指針域是NULL。填空2:若找到指定字符,則通過return語句將該結(jié)點(diǎn)在鏈表的順序號返回給main函數(shù)。填空3:函數(shù)調(diào)用語句,其形式是:函數(shù)名(實(shí)際參數(shù)表),因此根據(jù)函數(shù)定義語句,填入head,ch。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序的功能是:建立一個帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件NODI1.C中,不要改動main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includetypedefstructaa{intdata;structaa*next;}NODE;fun(NODE*h){intmax=一1;NODE*p;/*********found*********/p=h;while(p){if(p一>data>max)max=p一>data;/*********found*********/p=h一>next:}returnmax;}outresult(ints,F(xiàn)ILE*pf){fprintf(pf,"\nThemaxinlink:%d\n",s);}NODE*creatlink(intn,intm)(NODE*h,*p,*s;inti;h=p=(NODE*)malloc(sizeof(NODE));h一>data=9999;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s一>data=rand()%m;s一>next=p一>next;p一>next=s;p=p一>next;}p一>next=NULL;returnh;}outlink(NODE*h,F(xiàn)ILE*pf){NODE*p;p=h一>next;fprintf(pf,"\nTheLIST:\n\nHEAD");while(P){fprintf(pf,"->%d",p->data);p=p一>next;)fprintf(pf,"\n");}main(){NODE*head;intm;system("CLS");head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf("\nTheRESULT:\n");outresult(m,Stdout);}標(biāo)準(zhǔn)答案:(1)p=h一>next;(2)p=p一>next;知識點(diǎn)解析:(1)因?yàn)殒湵淼念^結(jié)點(diǎn)沒有數(shù)據(jù)域,所以對指針p進(jìn)行初始化時,要將p指向頭結(jié)點(diǎn)的下一個結(jié)點(diǎn)。(2)通過指針p的移動遍歷鏈表,因此此處應(yīng)改為p=p->next;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:根據(jù)以下公式計(jì)算s,并將計(jì)算結(jié)果作為函數(shù)值返回,n通過形參傳入。例如,若n的值為11時,函數(shù)的值為1.833333。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#include#includefloatfun(intn){}voidmain(){intn;floats;system("CLS");printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("Theresultis:%f\n",s);}標(biāo)準(zhǔn)答案:floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每一項(xiàng)的分母*/s=s+1.0/s1;/*求多項(xiàng)式的值*/}returns;}知識點(diǎn)解析:此類計(jì)算表達(dá)式值的程序,首先需要根據(jù)題意分析表達(dá)式的規(guī)律,得出通項(xiàng),然后再完成程序語句。本題中表達(dá)式的規(guī)律是1+2+…+n的倒數(shù)之和,那么可以通過for循環(huán)語句來實(shí)現(xiàn)第1項(xiàng)到第n項(xiàng)的變化。其實(shí)就是累加算法,方法是先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型,然后對其進(jìn)行初始化操作,因?yàn)樵撟兞康淖饔檬抢奂悠鳎猿跏贾祽?yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類型來確定),再通過for循環(huán)語句來完成累加過程。本題中sl用來表示每一項(xiàng)的分母,每一項(xiàng)的分母都是由前一項(xiàng)分母加項(xiàng)數(shù)。注意,由于sl定義成一個整型,所以在s=s+1.0/s1語句中不能把1.0寫成1。國家二級C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判斷形參s所指字符串是否是”回文”(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0?!被匚摹笔钦x和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是”回文”,而LEVLEV不是”回文”。請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并把中括號刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includeintfun(char*s){char*]p,*rp;/*********found*********/lp=【1】;rp=s+strlen(s)一1;while((toupper(*ip)==toupper(*rp))&&(ip標(biāo)準(zhǔn)答案:(1)s(2)--(3)return0知識點(diǎn)解析:填空1:根據(jù)函數(shù)體fun中,對變量1p和rp的使用可知,1p應(yīng)指向形參s的起始地址,rp指向s的結(jié)尾地址,所以應(yīng)填s。填空2:rp是指向字符串的尾指針,當(dāng)每做一次循環(huán)rI)向前移動一個位置,所以應(yīng)填:--。填空3:當(dāng)lp和rp相等時,表示字符串是回文并返回1,否則就返回0,所以應(yīng)填retum0。二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請編寫函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式的值。例如,當(dāng)n=10時,函數(shù)值為0.909091。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#includedoublefun(intn){}voidmain(){FILE*wf;system("CLS");printf("%f\n",fun(10));/**********************/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(10));fclose(wf);/**********************/}標(biāo)準(zhǔn)答案:doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));/*求級數(shù)的和*/returns;}知識點(diǎn)解析:本題要求級數(shù)的和,由多項(xiàng)式的形式可知,應(yīng)使用循環(huán)語句實(shí)現(xiàn),循環(huán)的通項(xiàng)為1/n(n+1)。本程序首先定義了和變量及循環(huán)變量,然后運(yùn)用一個for語句求出級數(shù)的和,最后將和變量s返回。國家二級C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:150200注意:錯誤的語句在//********error********的下面,修改該語句即可。提示:定義Numberl為一個整型數(shù)據(jù)位長的變量。1#include2//******error******3Struct4{5//******error******6intNumberl:1;7intNumber2;8}MyStruct;9voidmein()10{11MyStructmstr;12mstr.Numberl=150;13mstr.Number2=15;14//******error******15int*ptr=&mstr.Numberl;16cout<<*ptr<標(biāo)準(zhǔn)答案:(1)typedefstruct(2)intNumberl:32或intNumberl;(3)int*ptr=(int*)&mstr;知識點(diǎn)解析:結(jié)構(gòu)體MyStruct有兩個成員變量Numberl和Number2,主函數(shù)中定義結(jié)構(gòu)變量mstr,并通過指針改變變量mstr內(nèi)Numberl的值。[解題思路](1)第1標(biāo)識下是定義結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>;程序當(dāng)中定義結(jié)構(gòu)體名放在后面,MyStruct為結(jié)構(gòu)體變量類型,相當(dāng)于typedef為已有的類型定義一個新的類型,第1個標(biāo)識下應(yīng)改為“typedefstruct”。(2)第2標(biāo)識下是定義Numberl為一個整型數(shù)據(jù)變量,整型數(shù)據(jù)位數(shù)為32(4字節(jié)),因此第2個標(biāo)識下應(yīng)改成“intNumberl:32;”或“intNumberl:”。(3)ptr為整型數(shù)據(jù)指針,mstr為MyStruct類型結(jié)構(gòu)變量,兩者類型不一致應(yīng)該做強(qiáng)制類型轉(zhuǎn)換,第3個標(biāo)識下應(yīng)改成“int*ptr:(int*)&mstr;”,表示將mstr的地址給ptr,ptr指向MyStruct的第一個域Number1,Numberl也是整形,類型一致,故可通過ptr指針來改變Number1的值。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)sort(int&m,int&n,int&1)實(shí)現(xiàn)將三個整數(shù)m、n、1由大到小輸出。m最大,1最小。程序分析:程序?qū)崿F(xiàn)時,可以把最大的數(shù)放到m上,先將n1與n進(jìn)行比較,如果m2voidsort(int&m,int&n,int&1)3{45}6intmain()7{8intx=9;9inty=13;10intz=一3;iisort(x,y,Z);12cout<標(biāo)準(zhǔn)答案:1intt;2if(m知識點(diǎn)解析:sort函數(shù)實(shí)現(xiàn)3個參數(shù)的從大到小的排序,可以采用很多方法來排序,比如選擇法排序、冒泡法排序等,這里要求采用比較的方法來實(shí)現(xiàn)排序,由于需要排序的數(shù)據(jù)較少,只有3個,逐個比較就可以找到最大最值小進(jìn)行排序。[解題思路](1)由審題分析可知,三次比較便可將m、n、1排序。(2)在實(shí)現(xiàn)時,先將m與n進(jìn)行比較,如果m三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù),請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0,請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型,打印出性別,請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。輸出的內(nèi)容如下:Sex=ManSex=Woman注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。1#include2classPerson3{4public:5//********1********6voidprint(){);7intsexj8};9clasSMan:publicPerson10{11public:12Man()13{14//********2********1516}17voidprint()(18cout<<"Man"<標(biāo)準(zhǔn)答案:(1)將“voidprint()();”補(bǔ)充完整為:virtualvoidprint()();(2)添加語句:sex=1;(3)添加語句:sex=0;(4)添加語句:voidfbln(Person&p)知識點(diǎn)解析:在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補(bǔ)全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過調(diào)用類的成員函數(shù)實(shí)現(xiàn)各種輸出操作。[解題思路](1)題目1要求“基類Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以第1個標(biāo)識下的“voidprint(){);”語句修改為“‘virtualvoidprint(){);”。(2)題目2要求“類Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1”?;怭erson中變量sex是用來存放性別的,Man繼承。Person,所以Man中性別的變量可以使用基類中的sex變量,設(shè)置性別為l,即“sex=1:”。(3)題目3要求“類Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0”。同(2),在第三個標(biāo)識下添加“sex=0;”。(4)題目4要求“實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類型,打印出性別”。根據(jù)“p.print0;”語句知道,fun()函數(shù)的形參為指針p,由于它調(diào)用了基類Person中的成員函數(shù)print(),所以p的基類為:Person,即添加函數(shù)fun()的定義為“voidftm(Person&p)”。國家二級C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中含有一個源程序文件proj1.epp。其中位于每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Maxnumberis20Destructorcalled.注意:只能修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#include<iostream>USingnamespacestd;classMyClass{public://ERROR********found********voidMyClasS(inti){value=i;cout<<”Constructorcalled.”<<end1;}intMax(intX,intY){returnX>y?X:y;)//求兩個整數(shù)的最大值//ERROR*******found*******intMax(intx,intY,intz=0)//求三個整數(shù)的最大值{if(x>y)returnx>z?X:z;elsereturnY>z?Y:z;}intGetValue()const{returnvalue;}~MyClass(){cout<<"Destructorcalled."<<end1;}private:intvalue;};intmain(){MyClasSobj(10);//ERROR*******found*******cout<<"Thevalueis"<<value()<<end1;cout<<"Maxnumberis"<<o(jì)bj.Max(10,20)<<end1;return0;}標(biāo)準(zhǔn)答案:(1)MyClass(inti)(2)intMax(intx,inty,intz)(3)cout<<"Thevalueis"<<o(jì)bj.GetValue()<<end1:知識點(diǎn)解析:(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)前不加void或其他任何類型名,直接使用MyClass(inti)即可。(2)主要考查函數(shù)重載,在int:Max(intx,inty){returnx>y?x:y;}中兩個形參變量都是int型,而語句intMax(intx,inty,intz=0)的前兩個形參也都是int型,第三個形參定義默認(rèn)值,那么這兩個Max函數(shù)在調(diào)用時它們的參數(shù)個數(shù)和參數(shù)類型都一樣,因?yàn)楹瘮?shù)重載要求形參類型或形參個數(shù)不同,所以要把intz=0改為intz,才能構(gòu)成函數(shù)重載。(3)主要考查成員函數(shù)的調(diào)用,因?yàn)関alue是私有成員,所以不能被類外函數(shù)直接調(diào)用,而且value()的用法也是錯誤的,可以使用成員函數(shù)obj.GetValue()得到value的值。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中含有一個源程序文件proj2.epp,請將堆棧類的定義補(bǔ)充完整。使程序的輸出結(jié)果為:Theelementofstackare:4321注意:請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,只在橫線處編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2.cpp#include<ioStream>USingnamespacestd;constintSize=5;classStack;ClassItem{public://********found********Item(constint&val):_______{}//構(gòu)造函數(shù)對item進(jìn)行初始化private:intitem;Item*next;friendclasSStack;};classStack{public:Stack():top(NULL){}~Stack();intPop();voidPush(constint&);private:Item*top;};Stack∷~Stack(){Item*P=top,*q;while(P!=NULL){q=P->next;//********found********_______;//釋放P所指向的節(jié)點(diǎn)p=q;}}intStack∷Pop(){Item*temp;intret;//********found********_______;//使temp指向棧頂節(jié)點(diǎn)ret=top->item;top:top->next;deletetemp;returnret;}voidStack∷Push(constint&val){Item*temp=newItem(val);//********found********_______;//使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù)top=temp;}intmain(){Stacks;for(inti=1;i<Size;i++)s.Push(i);cout<<"Theelementofstackare:";for(i=1;i<Size;i++)cout<<s.Pop()<<’t’;return0;}標(biāo)準(zhǔn)答案:(1)item(val)(2)delete[]p(3)temp=top(4)temp->next=top知識點(diǎn)解析:(1)主要考查構(gòu)造函數(shù),對私有成員進(jìn)行初始化,即item(val)。(2)主要考查使用delete語句釋放指針,一般格式為:delete[]+指針。(3)指向棧頂節(jié)點(diǎn)的是top指針,要使temp指向棧頂節(jié)點(diǎn),故使用語句temp=top;。(4)指向棧頂節(jié)點(diǎn)的是top指針,要使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù),故使用語句temp->next=top:o三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.epp,其中定義了用于表示平面坐標(biāo)系中的點(diǎn)的類MyPoint和表示矩形的類MyRectangle;程序應(yīng)當(dāng)顯示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,請按照以下提示,把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的左上角和右下角的坐標(biāo)對up_left和down_right進(jìn)行初始化。(2)在“//**2******found****”的下方是成員函數(shù)getDownLeft的定義中的一條語句。函數(shù)getDownLeft返回用MyPoint對象表示的矩形的左下角。(3)在“//**3******found****”的下方是成員函數(shù)area的定義,它返回矩形的面積。注意:只在指定位置編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。//proj3.cpp#include<iostream>usingnamespacestd;classMyPoint{//表示平面坐標(biāo)系中的點(diǎn)的類doublex;doubley;public:MyPoint(doubleX,doubley){this->x=x;this->y=y(tǒng);)doublegetX()const{returnx;)doublegetY()const{returny;)voidshow()const{cout<<’(’<<X<<’,’<<Y<<’)’;)};classMyRectangle{//示矩形的類MyPointup_left;//矩形的左上角頂點(diǎn)MyPointdown_right;//矩彤的右下角頂點(diǎn)public:MyRectangle(MyPointupleft,MyPointdownright);MyPointgetUpLeft()const{returnup_left;}//返回左上角坐標(biāo)MyPointgetDownRight()const{returndownright;}/返回右下角坐標(biāo)MyPointgetUpRight()const;//返回右上角坐標(biāo)MyPointgetDownLeft()const;//返回左下角坐標(biāo)doublearea()const;//返回矩形的面積};//**1***********found*********MyRectangle∷MyRectangle(_______):up_left(p1),down_right(p2){}MyPointMyRectangle∷getUpRight()const{returnMyPoint(down_right.getX(),upleft.getY());}MyPointMyRectangle∷getDownLeft()const{//**2*********found*******returnMyPoint(_______);}//**3*********found*******_______area()const{return(getUpLeft().getX()-getDownRight().getX())*(getDownRight().getY()-getUpLeft().getY());}intmain(){MyRectangler(MyPoint(0,2),MyPoint(2,0));r.getUpLeft().show();r.getUpRight().show();r.getDownRight().show();r.getDownLeft().show();cout<<r.a(chǎn)rea()<<end1;return0;}標(biāo)準(zhǔn)答案:(1)MyPointp1,MyPointp2(2)up_left.getX(),down_right.getY()(3)doubleMyRectangle∷知識點(diǎn)解析:(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)中的參數(shù)要給私有成員賦值,在下句中up_left(p1),down_right(p2){}指出私有成員賦值要使用形參p1和p2,因此這里參數(shù)要定義為MyPointp1,MyPointp2。(2)主要考查成員函數(shù)的返回語句,MyPointMyRectangle∷getDownLeft()const函數(shù)要求返回一個左下角的點(diǎn)坐標(biāo),因此使用語句MyPoint(up_left.getX(),down_right.getY());。(3)主要考查成員函數(shù)的定義,在MyRectangle類中已經(jīng)聲明doublearea()const,因此此處只要添加doubleMyRectangle∷即可。國家二級C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算下式前11項(xiàng)的和,并作為函數(shù)值返回。例如,當(dāng)形參n的值為10時,函數(shù)返回一0.204491。請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并把中括號刪除,使程序得出正確的結(jié)果。注意:源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includedoublefun(intn){inti,k;doubles,t;s=0;/*********found*********/k=【1】;for(i=1;i<=n;i++){/*********found*********/t=【2】;s=s+k*(2*i一1)*(2*i+1)/(t*t);/*********found*********/k=k*【3】;}returns;}main(){intn=一1;while(n<0){printf("pleaseinput(n>0):");scanf("%d",&n);)printf("\nTheresultis:%f\n“,fun(n));}標(biāo)準(zhǔn)答案:(1)1(2)2*i(3)(一1)知識點(diǎn)解析:填空1:由fun函數(shù)整體結(jié)構(gòu)可以看出k的作用是賦值,并累加各項(xiàng)前邊的正負(fù)號,由于第一項(xiàng)是正的,因此賦給k的值為1。填空2:此空下一行的表達(dá)式k*(2*i—1)*(2*i+1)/(t*t)累加的通項(xiàng),k為正負(fù)號,由題目中的公式可知t=2*i。填空3:由于通項(xiàng)前邊的正負(fù)號每次都要發(fā)生變化,因此k=k*(一1)。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從0項(xiàng)開始的前3項(xiàng):0、0、1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為23.197745。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件NODll.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include#include/*********found*********/fun(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+sl+s2;sHm+=sqrt(s);s0=s1;s1=s2;s2=s;}/*********found*********/returnsum}voidmain(){intn;system("CLS");printf("InputN=");scanf("%d",&n);printf("%f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)returnsum;知識點(diǎn)解析:(1)根據(jù)函數(shù)的返回值可知函數(shù)fun應(yīng)定義為double類型。(2)語法錯誤,缺分號。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:將放在字符串?dāng)?shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串?dāng)?shù)組中的M個字符串為{“AAAA”,“BBBBBBB”,“CC”},則合并后的字符串內(nèi)容應(yīng)該是“AAAABBBBBBBCC”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#defineM3#defineN20voidfun(chara[M][N],char*b){}voidmain(){charW[M][N]={"AAAA","BBBBBBB","CC"};chara[100]={"#####################");intijprintf("Thestring:\n");for(i=0;i標(biāo)準(zhǔn)答案:voidfun(chara[M][N],char*b){inti,j,k=0;for(i=0;i知識點(diǎn)解析:本題考查:字符串連接操作。本程序中第1個for循環(huán)的作用是對二維數(shù)組行的控制,第2個循環(huán)的作用是從同一行中取出字符并存放到一維數(shù)組b中,語句是b[k++]=a[i][j];。國家二級C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程包含有一個源程序文件proj1.cpp。其中位于每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:(4,4)注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classPoint{public://ERROR*******found*******Point(doublex,doubley)_x(x),_y(y){)doubleGetX()const{return_x;}doubleGetY()const{return_y;}//ERROR*******found*******voidMove(doublexOff,doubleyOff)const{_x+=xOff;_y+=y(tǒng)Off;}protected:double_X,_y;};intmain(){Pointpt(1.5,2.5);pt.Move(2.5,1.5);//ERROR*******found*******以下語句輸出pt成員_x和_y的值cout<<’(’<<pt._X<<’,’<<pt._y<<’)’<<end1;return0;}標(biāo)準(zhǔn)答案:(1)Point(doublex,doubley):_x(x),_y(y){}或Point(doublex,doubley){_x=;_y=y(tǒng);}(2)voidMove(doublexOff,doubleyOff)(3)cout<<’(’<<pt.GetX()<<’,’<<pt.GetY()<<’)’<<end1:知識點(diǎn)解析:(1)主要考查的是構(gòu)造函數(shù)的成員初始化列表的語法,在成員列表之前必須加“:”。(2)主要考查成員函數(shù)中const的使用,先看Move函數(shù)的函數(shù)體:{_x+=xOff;_y+=y(tǒng)Off;}可以看到Point類的兩個私有成員_x和_y的值都發(fā)生了變化,因此Move函數(shù)不能使用const,因?yàn)橹挥性诤瘮?shù)內(nèi)不改變類的成員的值時才能使用const。(3)主要考查私有成員不能被類外函數(shù)調(diào)用的知識。題目要求輸出pt成員_x和_y的值,從Point類中的函數(shù)doubleGetX()const{retum_x;}和doubleGetY()const{retum_y;},可以分別得到_x和_y的值,因此這里使用語句cout<<’(’<<pt.GetX()<<’,’<<pt.GetY()<<’)’<<end1;調(diào)用成員函數(shù)GetX()和GetY()來實(shí)現(xiàn)題目要求。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程包含有一個源程序文件proj2.cpp。其中定義了Base1類、Base2類和Derived類。Base1是一個抽象類,其類體中聲明了純虛函數(shù)Show。Base2類的構(gòu)造函數(shù)負(fù)責(zé)動態(tài)分配一個字符數(shù)組,并將形參指向的字符串復(fù)制到該數(shù)組中,復(fù)制功能要求通過調(diào)用strcpy函數(shù)來實(shí)現(xiàn)。Derived類以公有繼承方式繼承Base1類,以私有繼承方式繼承Base2類。在Derived類的構(gòu)造函數(shù)的成員初始化列表中調(diào)用B鷦e類的構(gòu)造函數(shù)。請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以完成Base1、B鷦e2和Derived類的功能。此程序的正確輸出結(jié)果應(yīng)為:I’maderivedclass.注意:只在指定位置編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2.cpp#include<iostream>#include<cstring>usingnamespace

溫馨提示

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

評論

0/150

提交評論