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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

國家二級C++機試(操作題)模擬試卷9(共9套)(共26題)國家二級C++機試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運行時有誤,請改正其中的錯誤,使程序正常運行,并使程序在界面上輸出為:平均值為:29最大值為:112最小值為:-11注意:錯誤的語句在//********error********的下面。修改該語句即可。#includeusingnamespacestd;intmain(){inti,Ave,Min,Max;intdata[8]={0,112,43,78,-11,-6,7,9};Ave=0;for(i=0;i<8;i++)//********error********Ave=data[i];Ave/=8;cout<<"平均值為:"<Min)Min=data[i];}cout<<"最大值為:"<標準答案:(1)Ave+=data[i];或Ave=Ave+data[i];(2)if(data[i]>Max)Max=data[i];(3)if(data[i]知識點解析:(1)觀察程序可知,第一個for循環(huán)是求數(shù)組各個元素的和,逐次將每個元素值加起來,而程序當中是逐個賦值,因此第l標識處應將Ave=data[i]改成Ave+=data[i]或Ave=Ave+data[i]。(2)根據(jù)題意再求數(shù)組當中元素的最大最小值,用變量Max記錄最大值,Min記錄最小值,在for循環(huán)中,逐次比較,如果該元素值比當前Max大,則Max取該元素值,因此第2標識處正確的應該是if(data[i]>Max)Max=data[i]。(3)同樣如果數(shù)組該元素值比Min小,則Min取該元素值。因此,兩個if中條件判斷錯誤,第3標識處“if(data[i]>Min)Min=data[i]”改成“if(data[i]二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(inta[],intn),實現(xiàn)遞歸函數(shù)fun(inta[],intn)的返回值是數(shù)組a[]的前n個元素之和。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includeintfun(inta[],intn){}Voidmain(){intA[]={1,2,3,4};cout<標準答案:if(n>0)returna[n-1]+fun(a,n-1);//遞歸求n項的和return0;//項數(shù)小于等于0,返回求和值0知識點解析:(1)如果要計算的項數(shù)小于等于0,那么直接返回0。(2)否則調(diào)用遞歸語句“a[n-1]+fun(a,n-1)”,實現(xiàn)0到第n項的和。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。完成以下功能:(1)定義CMyTime的私有成員函數(shù)m_year、mmonth類型為int,請在注釋//********1********后添加適當?shù)恼Z句。(2)補充完成CMyTime的構造函數(shù),完成對myear、m_month的賦值,請在注釋//********2********后添加適當?shù)恼Z句。(3)完成print()的輸出,請在注釋//********3********后添加適當?shù)恼Z句。輸出格式如下:CurrentTimeyear:xxmonth:xx注意:XX表示兩位0~9的數(shù)字,如CurrentTimeyear:08month:04。(4)完成對month的增加函數(shù)AddMonth(intm),請在注釋//********4********后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#includeclassCMyTime{private://********1********public:CMyTime(intyear,intmonth){//********2********}voiddisplay(){charyearChar[3];charmonthChar[3];yearChar[0]=(m_year%100)/10+’0’;yearChar[1]=(m_year%10)+’0’;monthChar[0]=(m_month%100)/10+’0’;monthChar[1]=(m_month%10)+’0’;//********3********cout<<"CurrentTime"<<"year:"<標準答案:(1)添加語句:intmyear,mmonth;(2)添加語句:myear=year;mmonth=month;(3)添加語句:yearChar[2]=0;monthChar[2]=0;(4)添加語句:myear+=mmonth/12;或myear=myear+mmonth/12;知識點解析:(1)第1個標識下添加CMyTime的私有成員變量m_year、m_month的聲明,因此第1個標識下應添加“intm_year,m_month;”。(2)第2個標識下完成類成員構造函數(shù)變量的初始化,即將參數(shù)分別賦值給m_year和m_month,因此第2個標識下應添加“m_year=year;m_month=month;”。(3)第3個標識下準備輸出yearChar數(shù)組和monthChar數(shù)組,字符數(shù)組的最后一個字符應該為NULL(O),因此第3個標識下應添加“yearChar[2]=0;monthChar[2]=0;”。(4)mmonth和參數(shù)之和賦值給m_month,其和可能超過12,如果超過12表示下一年了,因此m_year應該加1,故先判斷m_month是否比12大,可取m_month/12和m_year相加,如果m_month沒有超過12則m_month/12=0,反之則為1,第4標識下應添加“m_year+=m_month/12;或m_year=m_year+m_month/12;”。國家二級C++機試(操作題)模擬試卷第2套一、基本操作題(本題共2題,每題1.0分,共2分。)1、請使用VC6或使用【答題】菜單打開考生文件夾pmjl下的工程projl,此工程中含有一個源程序文件pmjl.cpp。其中位于每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結果為:Constructorcalled.Thevaheis10Copyconstructorcalled.Thevalueis10Destructorcalled.Destructorcalled.注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMyClass{public://ERROR**********found**********MyClass(inti){value=i;cout<<”Constructorcalled.”<標準答案:(1)MyClass(inti=10)(2)MyClass(eonstMyClass&p)(3)一MyClass()知識點解析:(1)考查構造函數(shù)參數(shù)默認值,題目要求輸出語句:Thevalueis10,從主函數(shù)中可以看出,obj1并沒有初始化,但是obj1調(diào)用Print()函數(shù)時它的值為10,由此可知構造函數(shù)的形參有默認值,且值為10,因此得出語句MyClass(inti=10)。(2)主要考查考生對復制構造函數(shù)的掌握,復制構造函數(shù)的形參都為引用,同時為了不改變形參的值要加上const。因此得出語句MyClass(constMyClass&p)。(3)主要考查考生對析構函數(shù)的掌握,析構函數(shù)和構造函數(shù)一樣,前面不能添加任何類型,要把void去掉。2、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程pwj1,此工程中含有—個源程序文件projl.cpp。其中位于每個注釋“//ERROR**********found**********”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結果為:NUM=0Value=1注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;classMyClass{inti;friendvoidIncrement(MyClasS&f);public:constintNUM;//ERROR********found********MyClass(inti=0){NUM=0;i=i;}intGetValue()const{returni;)};//ERROR********found********VOidIncrement(){f.i++;)intmain(){MyClassobj;//ERROR********found********MyClass::Increment(obj);cout<<”NUM=”<標準答案:(1)MyClass(inti=0):NUM(0){(2)voidIncrement(MyClass&f){f.j++;}(3)Increment(obj);知識點解析:(1)主要考查考生對常量數(shù)據(jù)成員初始化方法的掌握,常量數(shù)據(jù)成員的初始化只能通過構造函數(shù)的成員初始化列表進行,并且要使用關鍵字const修飾。該題的前一條語句constintNUM;,說明NUM是常量數(shù)據(jù)成員。(2)主要考查考生對友元函數(shù)的掌握,友元函數(shù)的定義與聲明要一致,先看該友元函數(shù)的聲明部分:friendvoidIncrement(MyClass&f);,返回類型為void,函數(shù)參數(shù)為MyClass&f;再比較出錯的語句:voidIncrement(){f.-i++;},錯誤在于該函數(shù)沒有參數(shù),應把MyClass&f填在括號內(nèi)。(3)主要考查友元函數(shù)的調(diào)用,友元函數(shù)并不屬于類,因此調(diào)用友元函數(shù)時不需要添加類名及作用域,只需要像調(diào)用普通函數(shù)一樣即可。二、簡單應用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾pmj2下的工程pmj2。其中有向量基類VectorBase、向量類Vector和零向量類ZemVector的定義。請在橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。該程序正確輸出結果應為:(1,2,3,4,5)(0,0,0,0,0,0)注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#includeusingnamespacestd;classVectorBase{//向量基類,一個抽象類intlen;public:VectorBase(intlen):len(1en){)intlength()const{returnlen;)//向量長度,即向量中元素的個數(shù)virtualdoublegetElement(inti)const:0;//取第i個元素的值virtualdoublesum()const=0;//求所有元素的和voidshow()const{//顯示向量中所有元素cout<<”(”;for(inti=0;ishow();deleteV;v=newZeroVector(6);v一>show();deleteV;return0;}標準答案:(1)getElement(length()一1)(2)delete[]val(3)s+=val[i](4)return0.0:知識點解析:(1)主要考查考生對成員函數(shù)的掌握,題目要求顯示最后—個元素。前面有純虛函數(shù)virtualdoublegetElement(inti)const=0,因此可以直接調(diào)用getElement函數(shù)來取得最后一個元素,注意最后—個元素位置是Ungth()一1而不是Length()。(2)主要考查考生對析構函數(shù)的掌握,前面定義了類的私有成員*val,因此析構函數(shù)要釋放val,使用delete語句完成。(3)主要考查考生對for循環(huán)的掌握,由函數(shù)名doublesum()const可知,該函數(shù)要求元素之和,for循環(huán)語句的作用是遍歷整個數(shù)組,在此使用語句S+=val[i]完成程序。(4)主要考查考生對成員函數(shù)的掌握,由該類的注釋:零向量類,可以了解到該類的元素都為零,因此無論要取第幾個元素都返回0,由于數(shù)據(jù)類型為double,所以為return0.0。三、綜合應用題(本題共2題,每題1.0分,共2分。)4、請使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程proj3,其中聲明的是一個人員信息類,補充編制程序,使其功能完整。在main函數(shù)中給出了一組測試數(shù)據(jù),此種情況下程序的輸出應該是:Zhang20TsinghHa。注意:只能在函數(shù)address_change的“//********333*********”和“//**********666********”之間填入若干語句,不要改動程序中的其他內(nèi)容。程序最后將結果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//proj3.h#include#includeusingnamespacestd;classPerson{charname[20];intage;char*address;public:Person(){age=0;address=0;)voidname_change(char*_name);//名字修改函數(shù)voidage_change(int_age);//年齡修改函數(shù)voidaddress_change(char*_add);//地址修改函數(shù)voidinfo_display();//人員信息顯示一Person();//析構函數(shù)};voidwriteToFile(constchar*path);proj3.cpp#include#include#include”proj3.h”usingnamespacestd;voidPerson::namechange(char*_name){strcpy(name,_name);}voidPerson::age_change(int_age){age=_age;}voidPerson::address_change(char*_add){if(address!=NULL)delete[]ad-dress;//********333********//********666********}voidPerson::info_display(){cout<標準答案:address=newchar[strlen(add)+1];//給類成員變量動態(tài)分配空間strcpy(address,_add);//把字符串a(chǎn)dd復制給address知識點解析:函數(shù)address_change(char*_add)的功能是地址修改,也就是說通過該函數(shù)把類的地址修改為add字符串。類的私有成員address是字符指針,因此首先要給address分配空間,通過new語句來實現(xiàn):address=newchar[strlen(_add)+1];。接下來就是要復制字符串,使用系統(tǒng)函數(shù)strcpy,其用法為strcpy(參數(shù)1,參數(shù)2),將參數(shù)2的內(nèi)容復制到參數(shù)1中。5、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,此工程中包含一個源程序文件proj3.cpp,補充編制C++程序proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存放到doc類的對象myD0c中。然后將myDoc中的字符序列反轉,并輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。要求:補充編制的內(nèi)容寫在“//**************333*************”與“//*************66666***********”兩行之間。實現(xiàn)將myDoc中的字符序列反轉,并將反轉后的序列在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結果輸出到文件out.dat中,輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3,cpp#include#include#includeusingnamespacestd;classdoc{private:char/str;//文本字符串首地址intlength;//文本字符個數(shù)public://構造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字符串首地址doc(char*filename);voidreverse();//將字符序列反轉一doc();voidwriteToFile(char*filename);};doc::doc(char*filename){ifstreammyFile(filename);intlen=001,tmp;str=newchar[fen];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();}voiddoc::reverse(){//將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個//字符交換……//**********333**********//**********666**********}doc::一doc(){delete[]str;}voiddoc::writeToFile(char*filename){ofstreamoutFile(filename);outFile<標準答案:inti,j;//定義兩個整數(shù)臨時變量i.j.for(i=0,j=length一1;i知識點解析:題目要求將myDoc中的字符序列反轉,在main函數(shù)中我們看到myDoc是doc類,根據(jù)doc類的定義可以知道它是把讀取文件的字符串存到str動態(tài)數(shù)組中。reverse函數(shù)實現(xiàn)將數(shù)組str中的length個字符中的第一個字符與最后一個字符交換,第二個字符與倒數(shù)第二個字符交換,依次類推。使用變量i和j,分別表示第一個字符和最后一個字符的下標,定義temp作為中間變量進行交換。國家二級C++機試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序的主函數(shù)中,已給出由結構體構成的鏈表結點a、b、e,各結點的數(shù)據(jù)域中均存入字符,函數(shù)fun()的作用是:將a、b、c三個結點鏈接成一個單向鏈表,并輸出鏈表結點中的數(shù)據(jù)。請在程序的中括號處填入正確的內(nèi)容并把中括號刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#includetypedefstructlist{chardata;structlist*next;}Q;voidfun(Q*pa,Q*pb,Q*pc){Q*p;/*********found*********/pa一>next=【1】;pb一>next=pc;p=pa;while(p){/*********found*********/printf("%c",【2】);/*********found*********/p=【3】;}printf("\n");}main(){Qa,b,c;a.data=’E’;b.data=’F’;C.data=’G’;c.next=NULL;fun(&a,&b,&c);}標準答案:(1)pb(2)p一>data(3)p一>next知識點解析:填空1:將三個結點連接起來,即將pa的指針域指向pb,pb的指針域指向pc。填空2:輸出鏈表結點中的數(shù)據(jù),表示為p一>data。填空3:指針后移,指向下一個結點,即p=p一>next。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、假定整數(shù)數(shù)列中的數(shù)不重復,并存放在數(shù)組中。下列給定程序中函數(shù)fun的功能是:刪除數(shù)列中值為x的元素,變量n中存放數(shù)列中元素的個數(shù)。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/*********found*********/if(p==n)return一1;else{for(i=p;i標準答案:(1)if(p==n)return一1;(2)a[i]=a[i+1];知識點解析:(1)需要確定if條件語句的條件表達式,發(fā)現(xiàn)變量p大寫,C語言中變量是區(qū)別大小寫的。(2)刪除數(shù)列中的元素,刪除后,后面的元素依次前移一個位置,因此此處應為a[i]=a[i+1];。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的S。例如,若a數(shù)組中的值為:0127919745238314568259141則返回主程序后S的值應為3.375。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include#include#include#defineN5doublefun(intw[][N]){}voidmain(){FILE*wf;inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;doubles;system("CLS");printf("***Thearray***\n");for(i=0;i標準答案:doublefun(intw[][N]){inti,j,k=0;doublesum=0.0;for(i=0;i知識點解析:本題要求計算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過程,if條件語句根據(jù)數(shù)組元素的下標判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標中有一個是0或N—1,所以只要下標中有一個為0或N一1,那么它一定是周邊元素。計算周邊元素個數(shù)的方式是當給sum累加一個值時,k也加1。國家二級C++機試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中含有一個源程序文件proj1.cpp。其中位于每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結果為:Constructorcalled.Thevalueis10Copyconstructorcalled.Thevalueis10Destructorcalled.Destructorcalled.注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;classMyClass{public://ERROR********found********MyClass(inti){value=i;cout<<"Constructorcalled."<標準答案:(1)MyClass(inti=10)(2)MyClass(constMyClass&p)(3)~MyClass()知識點解析:(1)考查構造函數(shù)參數(shù)默認值,題目要求輸出語句:Thevalueis10,從主函數(shù)中可以看出,obj1并沒有初始化,但是obj1調(diào)用。Print()函數(shù)時它的值為10,由此可知構造函數(shù)的形參有默認值,且值為10,因此得出語句MyClass(inti=10)。(2)主要考查考生對復制構造函數(shù)的掌握,復制構造函數(shù)的形參都為引用,同時為了不改變形參的值要加上const,因此得出語句MyClass(constMyClass&p)。(3)主要考查考生對析構函數(shù)的掌握,析構函數(shù)和構造函數(shù)一樣,前面不能添加任何類型,要把void去掉。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該工程中包含一個程序文件main.cpp,其中有“書”類Book及其派生出的“教材”類TeachingMaterial的定義,還有主函數(shù)main的定義。請在程序中“//*******found*******”下的橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結果應為:教材名:C++語言程序設計頁數(shù):299作者:張三相關課程:面向對象的程序設計注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#includeusingnamespacestd;classBook{//“書”類char*title;//書名intnum_pages;//頁數(shù)char*writer;//作者筆名public:Book(constchar*the_title,intpages,constchar*the_writer):numpages(pages){title=newchar[strlen(thetitle)+1];strcpy(title,the_title);//***********found***********strcpy(writer,the_writer);}//***********found***********~Book(){________}intnumOfPages()const{returnnum_pages;}//返回書的頁數(shù)constchar*theTitle()const{returntitle;)//返回書名constchar*theWriter()const{returnwriter;}//返回作者名};classTeachingMaterial:publicBook{//“教材”類char*course;public:TeachingMaterial(constchar*thetitle,intpages,constchar*the_writer,constchar*the_course)//***********found***********:_________{:course=newchar[strlen(thecourse)+1];strcpy(course,the_course);}~TeachingMaterial(){delete[]course;)constchar*theCourse()const{returncourse;}//返回相關課程的名稱};intmain(){TeachingMateriala_book("C++語言程序設計”,299,"張三",“面向對象的程序設計”);cout<<"教材名:"<國家二級C++機試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中包含了類Pets(“寵物”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結果應為:Name:sonnyType:dogName:JohnType:dogName:DannyType:catName:JohnType:dog注意:只修改每個“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。1#iticlude2usingnamespacestd;34enumPets_type{dog,cat,bird,fish};5classPets{6private:7char*name;8Pets_typetype;9public:10Pets(constchar*name="sonny",Pets_typetype=dog);11Pets&operator=(constPets&s);12~PetS();13voidshow()const;14};15PetS::Pets(constchar*name,Pets_typetype)16//構造函數(shù)17{18this->name=newchar[strlen(name)+1];19strcpy(this->name,name);20//ERROR*********found*********21type=type;22}23Pets::~Pets()//析構函數(shù),釋放name所指向的字符串24{25//ERROR*********found*********26name=’/0’;27}28Pets&Pets::operator=(constPets&s)29{30if(&s==this)//確保不要向自身賦值31return*this;32delete[]name;33name=newchar[strlen(s.name)+1];34//ERROR*********found*********35strcpy(this->name,name);36type=s.type;37return*this;38}39voidPets::show()const40{41cout<<"Name:"<標準答案:(1)this->type=type;(2)delete[]name;(3)strcpy(this->name,s.name);知識點解析:(1)主要考查考生對構造函數(shù)的掌握情況,因為形參名和類的私有成員名稱都是type,為了避免混淆,所以規(guī)定類的私有成員使用this指針調(diào)用,即:this->type=type;。(2)主要考查考生對析構函數(shù)的掌握情況,題目中要求,釋放name所指向的字符串。要釋放name指針用delete語句,即delete[]name;。(3)主要考查考生對strcpy函數(shù)的掌握情況,strcpy函數(shù)的形參為兩個字符串,而name為指向字符串的指針,因此使用語句:strcpy(this->name,s.name);。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該工程中包含一個程序文件main.cpp,其中有“書”類Book及其派生出的“教材”類TeachingMaterial的定義,還有主函數(shù)main的定義。請在程序中“//********found********”下的橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結果應為:教材名:C++語言程序設計頁數(shù):299作者:張三相關課程:面向對象的程序設計注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。1#include2usingnamespacestd;3classBook{//“書”類4char*title;//書名5intnumpages;//頁數(shù)6char*writer;//作者姓名7public:8Book(conStchar*thetitle,intpages,constchar*thewriter):.num9pages(pages){10title=newchar[strlen(thetitle)+1];11Strcpy(title,thetitle);12//********found********13__________14Strcpy(writer,thewriter);15}16//********found********17~Book(){______}18intnumOfPages()const{returnnumpages;}//返回書的頁數(shù)19constchar*theTitle()const{re-turntitle;}//返回書名20constchar*theWriter()const{re-turnwriter;}返回作者名21};22classTeachingMaterial:publicBook{23//“教材”類24char*course;25public:26TeachingMaterial(constchar*the_title,intpages,constchar*the_writer,constchar*thecourse)27//********found********28:_____{29course=newchar[strlen(the_course)+1];30strcpy(course,thecourse);31}32~TeachingMaterial(){delete[]course;33}34constchar*theCourse()const{re-turncourse;)//返回相關課程的名稱35};36intmain(){37TeachingMaterialabook("C++語言程序設計",299,"張三","面向對象的程序設計");38cout<<"教材名:"<三、綜合應用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明IntSet是一個用于表示正整數(shù)集合的類。IntSet的成員函數(shù)Intersection的功能是求當前集合與另一個集合的交集。請完成成員函數(shù)Intersection。在main函數(shù)中給出了一組測試數(shù)據(jù),此時程序的輸出應該是:求交集前:123581028911305667求交集后:12358102891130566728要求:補充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。1//Intset.h2#include3usingnamespacestd;45constintMax=100;6ClassIntSet7{8publiC:9IntSet()10//構造一個空集合11{12end=-1;13}14IntSet(inta[],intsize)//構造一個包含數(shù)組a中size個元素的集合15{16if(Size>=Max)17end=Max-1;18else19end=size-1;20for(inti=0;i<=end;i++)21element[i]=a[i];22}23boolIsMemberOf(inta)24//判斷a是否為集合中的一個元素25{26for(inti=0;i<=end;i++)27if(element[i]==a)28returntrue;29returnfalse;30}31intGetEnd(){returnend;}32//返回最后一個元素的下標33intGetElement(inti)(returnele-ment[i];}34//返回下標為i的元素35IntSetIntersection(IntSet&set);36//求當前集合與集合set的交37voidPrint()38//輸出集合中的所有元素39{40for(inti=0;i<=end;i++)4lif((i+1)%20==0)42cout<國家二級C++機試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾proj1下的工程proj1,其中定義了一個CD類。程序中位于每個//ERROR***********found***********下的語句行有錯誤,請加以更正,不得修改程序的其他部分。更正后程序的輸出應該是:歌唱祖國30義勇軍進行曲95注意:只能修改每個//ERROR***********found***********下的那一行,不要改動程序中的其他內(nèi)容。#include#includeusingnamespacestd;classCD{charname[20];intnumber;public:voidinit(char*aa,intbb){//ERROR*****found*****name=aa;number=bb;}char*getName(){//ERROR*****found*****return*name;}intgetNumber(){returnnumber;}voidoutput(){//ERROR*****found*****cout<標準答案:(1)strcpy(name,aa);(2)returnname;(3)cout<知識點解析:程序定義CD類,它包含兩個數(shù)據(jù)成員:字符數(shù)組name和整型變量number;還包含四個公有成員函數(shù),init()函數(shù)接收兩個參數(shù),用參數(shù)對數(shù)據(jù)成員進行賦值;getName()函數(shù)返回數(shù)據(jù)成員name;getNum.ber()函數(shù)返回數(shù)據(jù)成員number;output()函數(shù)將數(shù)據(jù)成員name和number輸出。CD類的定義體中,有三個錯誤:(1)init()函數(shù)將形參aa賦給name,由于name是字符數(shù)組,所以不能通過簡單的賦值運算符進行賦值,應該使用strcpy()函數(shù)將形參aa指向的字符串拷貝到name中。(2)getName()函數(shù)的返回值為char*類型,所以函數(shù)體的return語句應該返回name,而不是name指向的字符串。(3)output()函數(shù)需要輸出兩個數(shù)據(jù)成員,輸出字符數(shù)組時,只需要給出數(shù)組名name即可。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾prog2下的工程prog2。此工程中包含一個程序文件main.cpp,其中有“部門”類Department和“職工”類Staff的定義,還有主函數(shù)main的定義。在主函數(shù)中定義了兩個“職工”對象,他們屬于同一部門。程序展示,當該部門改換辦公室后,這兩個人的辦公室也同時得到改變。請在程序中的橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結果應為:改換辦公室前:職工號:0789姓名:張三部門:人事處辦公室:521職工號:0513姓名:李四部門:人事處辦公室:521改換辦公室后:職工號:0789姓名:張三部門:人事處辦公室:311職工號:0513姓名:李四部門:人事處辦公室:311注意:只在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classDepartment{//“部門”類public:Department(constchar*strcpy(this->name,name);//**********found**********}constchar*getName()const{returnname;}//返回部門名稱//**********found**********constchar*getOffice()const{_________)//返回辦公室房號voidchangeOfficeTo(constchar*office){//改換為指定房號的另一個辦公室strcpy(this->office,office);}private:charname[20];//部門名稱charoffice[20];//部門所在辦公室房號};classStaff{//“職工”類public://**********found**********Staff(constchar*myid,constchar*my_name,Department&mydept):_________{strcpy(this->staff_id,myid);strcpy(this->name,my_name);}constchar*getID()const{returnstaffid;}constchar*getName()const{returnname;}DepartmentgetDepartment()const{returndept;}private:charstaffid[10];//職工號charname[20];//姓名Department&dept;//所在部門};voidshowStaff(Staff&staff){cout<<"職工號:"<標準答案:(1)strcpy(this->office,office);(2)returnoffice;(3)dept(my_dept)(4)dept.changeOfficeTo("311");知識點解析:(1)主要考查考生對strcpy函數(shù)的掌握情況,根據(jù)上一條語句:strcpy(this->name,name);可知,這條語句復制的是office,即strcpy(this->office,office);。(2)主要考查考生對成員函數(shù)的掌握情況,根據(jù)語句的注釋:返回辦公室房號可知,要填寫的是一條return語句。在私有成員里:charoffice[20];//部門所在辦公室房號,表明office即為辦公室房號。因此直接返回office即可。(3)主要考查考生對構造函數(shù)的掌握情況,根據(jù)函數(shù)體:strcpy(this->staffl_id,my_id);st.rcpy(this->name,my_name);可知,只有dept沒有初始化,而空格前有字符“:”,這是成員列表初始化的標識符,因此填寫dept(my_dept)即可。(4)主要考查考生對成員函數(shù)的調(diào)用的掌握情況,根據(jù)題目要求:人事處辦公室由521搬到311。在Department類中有函數(shù)voidchangeOfficeTo(constchar*office)可以修改辦公室的房間號,直接調(diào)用即可。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個類的賦值運算符成員函數(shù)operator,以實現(xiàn)深層復制。要求:補充編制的內(nèi)容寫在“//********333********”與“//********666********”之間。不得修改程序的其他部分。注意:程序最后將結果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//CDeepCopy.h#include#includeusingnamespacestd;classCDeepCopy{public:intn;//動態(tài)數(shù)組的元素個數(shù)int*p;//動態(tài)數(shù)組首地址CDeepCopy(int);~CDeepCopy();CDeepCopy&operator=(constCDeepCopy&r);//賦值運算符函數(shù)};voidwriteToFile(char*);//main.cpp#include"CDeepCopy.h"CDeepCopy::~CDeepCopy(){delete[]p;)CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}//構造函數(shù)實現(xiàn)CDeepCopy&CDeepCopy::operator=(constCDeepCopy&r)//賦值運算符函數(shù)實現(xiàn){//************333************//************666************}intmain(){CDeepCopya(2),d(3);a.p[0]=1;d.p[0]=666;//對象a,d數(shù)組元素的賦值{CDeepCopyb(3);a.p[0]=88;b=a;//調(diào)用賦值運算符函數(shù)cout<標準答案:n=r.n;//把對象r字符長度賦值給ndelete[]p;//刪除動態(tài)數(shù)組pp=newint[n];//給動態(tài)數(shù)組p分配空間為nfor(inti=0;i知識點解析:主要考查考生對運算符重載的掌握,由注釋可知此處要實現(xiàn)賦值運算符函數(shù)。要重載的運算符是“=”,該類的成員是動態(tài)數(shù)組p,數(shù)組元素個數(shù)為n,因此先釋放原來的動態(tài)數(shù)組,再分配空間,然后逐個復制元素即可。國家二級C++機試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1。該工程中包含程序文件main.cpp,其中有類CDate(“日期”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結果應為:原日期:2005—9—25更新后的日期:2006—4—1注意:只修改每個“//ERROR****found****”下的那一行.不要改動程序中的其他內(nèi)容。#include#includeUSingnamespacestd;classCDate//日期類{//ERROR*********found*********protected:CDaLe(){);CDate(intd,intm,inty){//ERROR*********found*********SefiDafie(intday=d,intmonth=m,intyear=y);};voidDisplay()://顯示日期voidSetDate(intday,intmonth,intyear)//設置日期{m_nDay=day;m_nNonfih=month;m_nYear=year;}private:intm_nDay;//日intmnNonth;//月intmnYear;//年},voidCDate::Display()//顯示日期{//ERROR*********found*********cout<標準答案:(1)public:(2)SetDate(d,m,y);(3)cout<知識點解析:(1)通過主函數(shù)中成員函數(shù)的調(diào)用可知這里應該為公有成員,而且構造函數(shù)必須為公有繼承。(2)主要考查考生對成員函數(shù)的掌握,程序在這里調(diào)用成員函數(shù)SetDate,直接把形參代入即可。(3)題目要求輸出原日期:2005—9—25??梢灾垒敵鲰樞驗椋合容敵瞿辏浯卧?,最后是日。二、簡單應用題(本題共2題,每題1.0分,共2分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。此工程中包含一個源程序文件main.cpp,其中有“房間”類Room及其派生出的“辦公室”類Office的定義,還有主函數(shù)main的定義。請在程序中“//****found****”下的橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結果應為:辦公室房間號:308辦公室長度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門:會計科注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#includeusingnamespacestd;classRoom{//“房間”類introomno;//房間號doublelength;//房間長度(m)doublewidth;//房間寬度(m)public:Room(inttheroom_no,doublethe_length,doublethe_width):room_no(the_room_no),length(the_length),width(the_width){)inttheRoomNo()const{returnroom_no;}//返回房間號doubletheLength()const{returnlength;)//返回房間長度doubletheWidth()const{returnwidth;}//返回房間寬度//**********found**********doubletheArea()const{______}//返回房間面積(矩形面積)};classOffice:publicRoom{//“辦公室”類char*depart;//所屬部門public:Office(inttheroomno,doublethelength,doublethewidth,constchar*thedepart)//**********found**********:_________{depart=newchar|strlen(thedepart)+1j;//**********found**********strcpy(________);}一Office(){delete[]depart;)constchar*theDepartment()const{returndepart;}//返回所屬部門};intmain(){//**********found**********Office__________;cout<<”辦公室房間號:"<標準答案:(1)returnlength*width:(2)Room(the_room_no,the_length,the_width)(3)depart,the_depart(4)an_office(308,5.6,4.8,”會計科”)知識點解析:(1)主要考查考生對成員函數(shù)的掌握,題目要求返回房間面積(矩形面積)。由此可知空格部分要填寫的是一個return語句,返回房間面積,也就是length*width,因此可以得出程序returnlength*width;。(2)主要考查考生對派生類的構造函數(shù)的掌握,派生類的構造函數(shù)要使用成員列表初始法先對基類進行初始化。(3)考查strcpy函數(shù),由前一條語句depart=newchar[strlen(the_depart)+1];可知,程序給depart分配了長度為the_depart串長加1的空間,因此要復制字符串the_depart串到depart,直接填寫strcpy(depart,the_depart)即可。(4)主要考查考生對類的掌握,題目要求輸出的結果為:辦公室房間號:308辦公室長度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門:會計科由Office類的構造函數(shù)可知要定義的一個Office類的對象為an_office(308,5.6,4.8,”會計科”)。3、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程包含有一個源程序文件proj2.cpp。其中定義了Basel類、Base2類和Derived類。Basel是一個抽象類,其類體中聲明了純虛函數(shù)Show。Base2類的構造函數(shù)負責動態(tài)分配一個字符數(shù)組,并將形參指向的字符串復制到該數(shù)組中,復制功能要求通過調(diào)用strcpy函數(shù)來實現(xiàn)。Derived類以公有繼承方式繼承Basel類,以私有繼承方式繼承Base2類。在Derived類的構造函數(shù)的成員初始化列表中調(diào)用Base類的構造函數(shù)。請在程序中的橫線處填寫適當?shù)拇a,然后刪除橫線,以完成Base1、Base2和Derived類的功能。此程序的正確輸出結果應為:I’maderivedclass.注意:只在指定位置編寫適當代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2,cpp#include#includeusingnamespacestd;classBasel{public://**********found**********下列語句需要聲明純虛函數(shù)Show_________;},clasSBase2{protected:char*p;Base2(constchar*s){_P=newchar[strlen(s)+1];//**********found********下列語句將形參指向的字符串常量復制到該類的字符數(shù)組中_____;}一Base2(){delete[]_P;}};//********found********Derived類公有繼承Base1,私有繼承Base2類classDerived:______{public://*******found********以下構造函數(shù)調(diào)用Base2類構造函數(shù)Derived(constchar*s):____{}voidShow(){cout<<_p<Show();deletepb;return0;}標準答案:(I)virtualvoidShow()=0(2)strcpy(_p,S)(3)publicBasel,privateBase2(4)Base2(S)知識點解析:(1)主要考查的是純虛函數(shù)的定義。題目要求聲明純虛函數(shù)Show,因此首先看Base1類的派生類Derived類中Show函數(shù)的定義:voidShow(){cout<<_p<三、綜合應用題(本題共1題,每題1.0分,共1分。)4、請使用VC6或使用【答題】菜單打開考生文件夾prog3下的工程prog3,其中包含了類TaxCalculator(“個稅計算器”)和主函數(shù)main的定義。創(chuàng)建“個稅計算器”需要接收稅率表信息和起征額信息。在main函數(shù)中,通過兩個數(shù)組創(chuàng)建了如下的稅率表:利用這個稅率表創(chuàng)建“個稅計算器”時,假定起征額為2000元(即不超過2000元的所得不征收個人所得稅)。請補充完成計算應納個人所得稅額的成員函數(shù)getTaxPayable,其中的參數(shù)income為月收入。此程序的正確輸出結果應為:月收入為800元時應繳納個人所得稅0元月收入為1800元時應繳納個人所得稅0元月收入為2800元時應繳納個人所得稅55元月收入為3800元時應繳納個人所得稅155元月收入為4800元時應繳納個人所得稅295元月收入為5800元時應繳納個人所得稅455元注意:只能在函數(shù)getTaxPayable中的“//**********333**********”和“//**********666**********”之間填入若干語句,不要改動程序中的其他內(nèi)容。//TaxCalculator.h#include#includeusingnamespacestd;clasSTaxCalculator{public:TaxCalculator(doublethe_limits[],doubletherates[],intthelength,doublethe_threshold):lowerlimits(newdouble[thelength]),rates(newdouble[the—length]),list_len(the_length),thresh-old(thethreshold){for(inti=0;i=0){//********333********//********666********一一i;}returntaxpayable;}voidTaxCalculator::showTaxPayable(doubleincome)const{cout<<”月收入為”<標準答案:it(1ncome<=2000)//如果收入小于2000returntax_payable;//直接tex_payable(初始代為零)if(taxable>lowerlimits[i]){//如果taxable(收入超出起征額的部分)大于lowerlimits[i]階段最低限額tax_payable+=(taxable—lowerlimits[i])*rates[i];//把起過階段最低限額的部分乘以該階段的稅率后,加到tax_payable(個人所得稅)taxable=lowerlimits[i];//把fowerlimits[i]賦值于taxable}知識點解析:主要考查考生對成員函數(shù)的掌握情況,根據(jù)題目要求可知,完成計算應納個人所得稅額的成員函數(shù)getTaxPayable,其中參數(shù)income為月收入。同時題目還表明:不超過2000元的所得不征收個人所得稅。因此先用if語句判斷是否要征收個人所得稅。然后根據(jù)題目所給表格,來判斷收入多少及應該收多少個人所得稅。國家二級C++機試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回給主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,并在主函數(shù)中輸出。例如,有10個正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。主函數(shù)中輸出m=30。請在程序的中括號處填入正確的內(nèi)容并把中括號刪除,使程序得出正確的結果。注意:部分源程序在文件BIANKl.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include#include#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i標準答案:(1)*av(2)i(3)x[j]知識點解析:填空1:從原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空應該填*av。填空2:if語句來判斷找最接近平均值的數(shù),因而此空應該填i。填空3:題目要求將小于平均值且最接近平均值的數(shù)作為函數(shù)返回,而j表達的是最接近平均值的數(shù)在數(shù)組中的下標,因而本空應該填寫x[j]。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:判斷一個整數(shù)是否為素數(shù),若是素數(shù)返回1,否則返回0。在main函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include#include#includeintfun(intm){intk=2;while(k<=m&&(m%k))/*********found*********/k++/*********found*********/if(m=k)return1;elsereturn0;}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scarlf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!\n");}標準答案:(1)k++;(2)if(m==k)知識點解析:函數(shù)fun的功能是判斷m是否為素數(shù):m從2開始作為除數(shù),并對m取余,若不存在一個數(shù)使得余數(shù)為0,則m為素數(shù),程序的錯誤在于if(m=k)語句中的邏輯表達式寫成了賦值語句。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。例如,當n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#include#includedoublefun(doublex,intn){}voidmain(){FILE水*f;system("CLS");printf("%f",fun(0.3,10));/**********************/

溫馨提示

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

評論

0/150

提交評論