




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上 計算機等級考試二級C+模擬試題上機部分 1 一、改錯題 使用VC6打開考生文件夾下的工程kt6_1,此工程包含一個源程序文件kt6_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下: Constructor2 Constructor1 i=0 i=10 Destructor 源程序文件kt6_1.cpp清單如下: #include classCSample inti; public: CSample()cout<<"Constructor1"< CSample(intval)cout<<&qu
2、ot;Constructor2"< CSample()cout<<"Destructor"< voiddisp(); ; /*found*/ voiddisp() cout<<"i="< voidmain() CSample*a,b(10); /*found*/ a->disp(); /*found*/ b->disp(); 【參考答案】 (1)將void disp() 改為:void CSample:disp() (2)將a->disp(); 改為:a=new CSample; a-
3、>disp(); (3)將b->disp(); 改為:b.disp(); 【試題解析】(1)主要考查類成員函數定義格式的熟練掌握,對于類體外函數的實現,應該使用作用域符":",按照返回值類型類名:函數名(參數列表)的形式進行說明; (2)主要考查對動態(tài)存儲分配的掌握,根據前面的定義,a是一個指針類型的變量,指向一個對象,但是并沒有被初始化,此時a中的數據無任何意義,應該使用動態(tài)存儲分配new生成一個新的對象,并將返回的指針賦值給a; (3)主要考查對象指針與對象在調用成員函數時格式的不同,b是一個對象變量,使用b調用成員函數應該用"."運算符
4、。 二、簡單應用題 編寫函數fun(),它的功能是利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。 xn+1=cos(xn) 迭代步驟如下: (1)取x1初值為0.0。 (2)x0=x1,把x1的值賦給x0。 (3)x1=cos(x0),求出一個新的x1。 (4)若x0-x1的絕對值小于0.,則執(zhí)行步驟(5),否則執(zhí)行步驟(2)。 (5)所求x1就是方程cos(x)-x=0的一個實根,做為函數值返回。 程序輸出結果Root=0.。 注意:部分源程序已存在文件kt6_2.cpp中。 請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。 文件
5、kt6_2的內容如下: #include #include #include floatfun() voidmain() cout<<"Root="< 【參考答案】 float fun() float x1=0.0,x0; do x0=x1; x1=cos(x0); while(fabs(x0-x1)>=1e-6); return x1; 【試題解析】 解答本題的關鍵之處在于看清題中所給的“迭代步驟”,同時要理解xn+1=cosxn通式的含義,要考慮到x1的初值為0.0。 三、綜合應用題使用VC6打開考生文件夾下的工程kt6_3,此工程包含一個源程序
6、文件kt6_3.cpp,其中定義了用于表示考生的類Student,請按要求完成下列操作,將程序補充完整。 (1)定義私有數據成員code、english分別用于表示考生的編號、英語成績、它們都是int型的數據。請在注釋“/*1*”之后添加適當的語句。 (2)完成成員函數voidStudent:inputinformation()的定義,該函數用于用戶輸入一個考生對象的信息,輸入格式如下所示: 輸入編號: 英語成績: 計算機成績: 請在注釋“/*2*”之后添加適當的語句。 (3)利用已實現的類Student的成員函數,完成函數voidfirstname(Student*A,intnum)的定義,
7、該函數根據考生信息A,輸出num個考生中總分最高者的編號及其相應的總分,在此不考慮總分相同的情況。請在注釋“/*3*”之后添加適當的語句。 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序文件kt6_3.cpp清單如下: #include classStudent /*1* intcomputer; inttotal; public: voidgetinformation(); voidcomputesum(); intgetcode(); intgettotalscore(); Student(); voidStudent:getinformation() /*2* co
8、ut<<"英語成績:" cin>>english; cout<<"計算機成績:" cin>>computer; voidStudent:computesum() total=english+computer; cout<<"編號"< intStudent:getcode() returncode; intStudent:gettotalscore() returntotal; voidfirstname(Student*A,intnum) /*3* tempsum=(*
9、A0).gettotalscore(); for(inti=1;i if(*Ai).gettotalscore()>tempsum) tempcode=(*Ai).getcode(); tempsum=(*Ai).gettotalscore(); cout<<"總分最高者-"< voidmain() Student*A3; inti,n=3; for(i=0;i Ai=newStudent; Ai->getinformation(); for(i=0;i Ai->computesum(); firstname(A,3); 【參考答案】 (
10、1)int code; int english; (2)cout<<"輸入編號:" cin>>code; (3)int tempcode,tempsum; tempcode=(*A0).getcode(); 【試題解析】 本題是對C+程序設計的綜合考查,其設計類的成員及成員函數的定義與調用,數據的輸入輸出,for循環(huán)語句,if條件判斷語句等多個知識點,其中(3)中為指針數組的使用,指針數組是一組指針,每一個成員都按照指針的操作規(guī)則,但是整個訪問規(guī)則仍然使用數組下標方式,如A0指的是第一個指針,而* A0是取出第一個指針指向的內容。2 一、改錯題 使用
11、VC6打開考生文件夾下的工程kt7_1,此工程包含一個源程序文件kt7_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下: Constructor1 Constructor1 Constructor1 Destructor Constructor2 Destructor x=0 x=5 Destructor Destructor 源程序文件kt21_1.cpp清單如下: #include classB intx; public: B()x=0;cout<<"Constructor1"<<ENDL;< p> B(in
12、ti)x=i;cout<<"Constructor2"<<ENDL;< p> B()cout<<"Destructor"<<ENDL;< p> /*found*/ B(inti)cout<<I<<"BEDESTRUCTOR"<<ENDL;< p> voidprint()cout<<"x="<<X<<ENDL;< p> voidmain() B*ptr
13、; ptr=newB2; /*found*/ ptr0=B(0); ptr1=B(5); /*found*/ for(inti=0;i<2;) ptri.print(); deleteptr; 【參考答案】 (1)將B(int i)cout<<I<<" p be Destructor?<<endl;刪除<> (2)將ptr0=B(0);改為:ptr0=B(); (3)將for (int i=0;i<2;)改為:for(int i=0;i<2;i+) B(inti)x=i;cout<<"Constr
14、uctor2"<<ENDL;< p> B()cout<<"Destructor"<<ENDL;< p> /*found*/ B(inti)cout<<I<<"BEDESTRUCTOR"<<ENDL;< p> voidprint()cout<<"x="<<X<<ENDL;< p> voidmain() B*ptr; ptr=newB2; /*found*/ ptr0=B(0
15、); ptr1=B(5); /*found*/ for(inti=0;i<2;) ptri.print(); deleteptr; 【參考答案】(1)將B(int i)cout<<I<<" p be Destructor?<<endl;刪除<> (2)將ptr0=B(0);改為:ptr0=B(); (3)將for (int i=0;i<2;)改為:for(int i=0;i<2;i+) 【試題解析】 本題主要考查對文件相關操作的熟練程度。首先定義文件流類的變量,然后使用該對象的open方法打開一個文件,接著使用whil
16、e循環(huán)和getch方法每次讀入一個字符并統(tǒng)計字符個數,最后使用close方法關閉文件,返回i值。 二、簡單應用題 編寫一個函數intcharnum(charfn10),該函數以只讀方式打開文件fn,,通過統(tǒng)計,返回文件中字符的個數,請使用while循環(huán)實現計數功能。 注意:部分源程序已存在文件kt7_2.cpp中。 請勿修改主函數main和其他函數中的任何內容,僅在函數charnum的花括號中填寫若干語句。 文件kt7_2.cpp的內容如下: #include #include #include intcharnum(charfn10); voidmain() intnum; num=char
17、num("abc.txt"); cout<<"num="<<NUM<<ENDL;< p> intcharnum(charfn10) 【參考答案】 int charnum(char fn10) fstream file; file.open(fn,ios:in); if(!file) cout<<"abc.txt can't open"<<ENDL;< p> abort(); char ch; int i=0; while(!file.eof()
18、 file.get(ch); i+; file.close(); return i-1; 【試題解析】 本題主要考查對文件相關操作的熟練程度。首先定義文件流類的變量,然后使用該對象的open方法打開一個文件,接著使用while循環(huán)和getch方法每次讀入一個字符并統(tǒng)計字符個數,最后使用close方法關閉文件,返回i值。 三、綜合應用題使用VC6打開考生文件夾下的工程kt7_3,此工程包含一個源程序文件kt7_3.cpp,其中含有一個類Circle的定義,但該類的定義并不完整。請按要求完成下列操作,將類Circle的定義補充完整。 (1)為類Circle增加一個構造函數,該函數有一個參數,并在構
19、造時將該參數值賦給成員radius。將該函數實現為一個非內聯函數,并且使用參數列表的方式將類成員賦值。請在注釋“/*1*”之后添加適當的語句。 (2)為類Circle增加一個成員函數print(),使得可以輸出有關圓的信息,比如下列程序 Circlec; c.SetRadius(5); c.Print(); 將輸出:Thecirclehasradiusof5! 請在注釋“/*2*”之后添加適當的語句。 (3)完成友元函數voidCompareR(Circle*c1,Circle*c2)的定義,在屏幕中輸出c1與c2比較radius大小結果,要求使用if-else結構完成。請在注釋“/*3*”之
20、后添加適當的語句。 輸出結果如下: Thecirclehasradusof5! Thecirclehasradiusof10! c1<C2< p> 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序文件kt7_3.cpp清單如下: #include classCircle public: Circle():radius(5) /*1* voidSetRadius(intr)radius=r; intGetRadius()returnradius; /*2* friendvoidCompareR(Circle*c1,Circle*c2); private: i
21、ntradius; voidCompareR(Circle*c1,Circle*c2) /*3* cout<<"c1>c2"<<ENDL;< p> else if(c1->GetRadius()=(c2->GetRadius() cout<<"c1=c2"<<ENDL;< p> else if(c1->GetRadius()<(c2->GetRadius() cout<<"c1<C2"<<ENDL;
22、< p> voidmain() Circlec1; c1.SetRadius(5); c1.Print(); Circlec2(10); c2.Print(); CompareR(&c1,&c2); 【參考答案】 (1)Circle(int rad):radius(rad) (2)void Print()cout<<"The circle has radius of "<<RADIUS<<"!N"< p> (3)if (c1->GetRadius()>(c2->
23、GetRadius() 【試題解析】 本題考查成員函數的定義與實現,友元函數,if分支語句等知識點。友元函數的類體外的定義與一般函數一樣,其中if-else的使用,else總是與其最近的那個if配對使用的,書寫時最好使用縮進格式,將配對的if-else對齊,以免出錯。3 一、改錯題 使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個源程序文件kt8_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下: f1functionofderive f2functionofbase f4functionofbase 源程序文件kt8_1.cpp清單如下: #include
24、classbase public: /*found*/ voidf1()cout<<"f1functionofbase"<<ENDL;< p> virtualvoidf2()cout<<"f2functionofbase"<<ENDL;< p> virtualvoidf3()cout<<"f3functionofbase"<<ENDL;< p> voidf4()cout<<"f4functionofbase
25、"<<> /*found*/ classderive:publicbase voidf1()cout<<"f1functionofderive"<<ENDL;< p> voidf2(intx)cout<<"f2functionofderive"<<ENDL;< p> voidf4()cout<<"f4functionofderive"<<> voidmain() base*p; deriveobj2; /*
26、found*/ p=obj2; p->f1(); p->f2(); p->f4(); 【參考答案】 (1)將void f1() cout<<"f1 function of base"<<ENDL;< p> 改為:virtual void f1() cout<<"f1 function of base"<<ENDL;< p> (2)將class derive:public base 改為:class derive:public base (3)將p=obj2; 改為:
27、p=&obj2; 【試題解析】 (1)主要考查對虛函數的深刻理解,虛函數是動態(tài)聯編的基礎,也是實現多態(tài)性的重要方法,它可以根據不同的情況動態(tài)的選擇執(zhí)行哪一個函數。在派生類中實現虛函數應該滿足與基類的同名函數完全相同,并且使用關鍵字virtual修飾,本題中由輸出結果中的f1 function of derive可知,必須將基類base的成員函數f1()定義為虛函數; (2)主要考查對派生類定義格式的掌握,應該使用“:”后面是繼承列表,而“:”是作用域符; (3)主要考查類對象的定義與使用,p是一個指針類型的變量,給它的賦值應該是一個地址,即使用取地址操作符&。 二、簡單應用題
28、已知考生的記錄由學號和學習成績構成,N名考生的數據已存入a結構體數組中。請編寫函數fun,該函數的功能是:找出成績最低的考生記錄,通過形參返回主函數(規(guī)定只有一個最低分)。已給予出函數的首部,請完成該函數。 注意:部分源程序已存在文件kt8_2.cpp中。 請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。 文件kt8_2.cpp的內容如下: #include #include #include #defineN10 typedefstructss charnum10; ints; STU; voidfun(STUa,STU*s) voidmain()
29、 STU aN="A01",81,"A02",89,"A03",66,"A04",87,"A05",77,"A06",90,"A07",79,"A08",61,"A09",80,"A10",71,m; fun(a,&m); cout<<"*Theoriginaldate*"<<ENDL;< p> cout<<"T
30、helowest:"<<M.NUM<<M.S<<ENDL;< p> 【參考答案】fun(STU a,STU *s) int i, min; min=a0.s; for(i=0;i<N;I+)< p> if(ai.s<MIN)< p> min=ai.s; *s=ai; 【試題解析】 解題思路為:先假設第一個考生的成績最優(yōu),通過循環(huán)找到最低成績,并將最低成績的考生記錄傳給指針s,帶回主函數。 三、綜合應用題 使用VC6打開考生文件夾下的工程kt8_3,此工程包含一個源程序文件kt8_3.cpp,該文件設計
31、了用于輸出乘法九九表的類。請認真閱讀已有的代碼,按要求完成下列操作,將程序補充完整。 (1)定義類Table的私有數據成員x和y,分別用于表示九九表中的兩個乘數(x*y),它們都是int型的數據。請在注釋“/*1*”之后添加適當的語句; (2)完成類Table的成員函數print()的定義,該函數以"x*y=z"的格式打印出九九表中的一個乘法算式,請使用格式化輸出函數printf實現,在注釋“/*2*”之后添加適當的語句; (3)完成類Table9的成員函數print()的定義,該函數調用基類Table的print()函數,將九九表輸出到屏幕,請在注釋“/*3*”之后添加適
32、當的語句; (4)補充主函數,在屏幕上輸出九九表,以便測試所定義的類的正確性。請在注釋“/*4*”之后添加適當的語句。 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序文件kt8_3.cpp清單如下: #include #include classTable /*1* intz; public: voidprint(intx,inty,intz); voidTable:print(intx,inty,intz) /*2* classTable9:publicTable public: voidprint(); voidTable9:print() /*3* intx,y,z
33、; for(i=1;i<10;i+) for(j=1;j<I+1;J+)< p> x=i; y=j; z=i*j; Table:print(y,x,z); printf("n"); main() /*4* return0; 【參考答案】 (1)int x; int y; (2)printf( "%d*%d=%d ",x,y,z); if(z<10) printf(" "); (3)int i,j; (4)Table9 t_9; t_9.print(); 【試題解析】 主要考查將具體問題抽象為類,將類的定義
34、補充完整,并進行類定義測試的能力。4 一、改錯題 使用VC6打開考生文件夾下的工程kt9_1,此工程包含一個源程序文件kt9_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下: 4,5 20 源程序文件清單如下: #include<iostream.h> classA protected: intn,m; public: voidset(inta,intb)m=a;n=b; voidshow()cout<<m<<","<<n<<endl; /*found*/ classB:publicA i
35、nts; public: voidset()s=m*n; voidshows()cout<<s<<endl; ; voidmain() Bb; /*found*/ b.set(); b.show(); b.set(); /*found*/ b.show(); 【參考答案】 (1)在“”后添加分號 (2)將b.set();改為:b.A:set(4,5); (3)將b.show();改為:b.shows(); 【試題解析】 (1)主要考查對類定義格式的掌握,類的結尾應該使用""; (2)主要考查對基類與派生類函數調用關系的掌握,根據所要求的輸出結果,應該
36、調用的函數為類A的set,而不是類B自身的set函數,應該避免調用的二義性; (3)主要考查對繼承與派生的理解,由所要求輸出結果可知正確:b.shows()。 二、簡單應用題 請編寫一個函數intCalcDigital(char*str),該函數可返回字符串str中數字字符(即“0”-“9”這10個數字)的個數,如字符串"olympic2008"中數字字符的個數為4。請用if條件判斷語句與for循環(huán)語句來實現該函數。 注意:部分源程序已存在文件中。 請勿修改主函數main和其他函數中的任何內容,僅在函數find的花括號中填寫若干語句。 文件kt9_2.cpp的內容如下: #
37、include<iostream.h> #include<string.h> intCalcDigital(char*str); voidmain() char*str; str=newchar255; cout<<"輸入字符串:" cin>>str; intnum=CalcDigital(str); cout<<str<<":"<<num<<endl; intCalcDigital(char*str) 【參考答案】 int CalcDigital(char
38、*str) if(str=NULL) return 0; int num_of_digital=0; int len=strlen(str); for(int i=0;i<len;i+) if(stri<='9' && stri>='0') num_of_digital+; return num_of_digital; 【試題解析】 本題考查對于if條件判斷語句與for循環(huán)語句的熟練使用程度。注意判斷條件(判斷是否是數字是直接比較ASCII碼)的使用。 3綜合應用題 使用VC6打開考生文件夾下的工程kt9_3,此工程包含一個源程
39、序文件kt9_3.cpp,其中定義了Circle類與Money類,Circle類可對半徑為r的圓進行周長與面積的計算,而Money類用于計算一圓形游泳池的造價。游泳池四周有原形過道,過道外圍上柵欄,過道寬度為3米,根據鍵入的游泳池半徑,每米柵欄價格及每平方米過道價格,即可計算出游泳池的造價。請按要求完成下列操作,將程序補充完整。 (1)定義符號常量PI(值為3.14159f)與WIDTH(值為3.00f),分別用于表示圓周率與過道的固定寬度。請在注釋“/*1*”之后添加適當的語句。 (2)定義Circle類默認構造函數,把私有成員radius初始化為參數r的值。請在注釋“/*2*”之后添加適當
40、的語句; (3)完成Money類默認構造函數的定義,把私有成員FencePrice(每米柵欄的價格)、ConcretePrice(每平方米過道的價格)初始化為參數f,c的值。請在注釋“/*3*”之后添加適當的語句。 (4)完成Money類成員函數floatMoney:TotalMoney(floatfencelen,floatconarea)的定義,根據參數fencelen(柵欄的長度)和conarea(過道的面積),返回柵欄與過道的總造價。請在注釋“/*4*”之后添加適當的語句。 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序文件kt9_3.cpp清單如下: #incl
41、ude<iostream.h> /*1* classCircle private: floatradius; public: /*2* floatCircumference()return2*PI*radius; floatArea()returnPI*radius*radius; ; classMoney private: floatFencePrice; floatConcretePrice; public: Money(floatf,floatc); floatTotalMoney(floatfencelen,floatconarea); ; Money:Money(floa
42、tf,floatc) /*3* floatMoney:TotalMoney(floatfencelen,floatconarea) /*4* voidmain() floatradius,fence,concrete; cout.setf(ios:fixed); cout.setf(ios:showpoint); cout.precision(2); cout<<"Entertheradiusofthepool:" cin>>radius; cout<<"EntertheFencePrice:" cin>>
43、fence; cout<<"EntertheConcretePrice:" cin>>concrete; CirclePool(radius); CirclePoolRim(radius+WIDTH); Moneymon(fence,concrete); floattotalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area()-Pool.Area(); cout<<"ThetotalmoneyisRMB"<<totalmoney<&l
44、t;endl; 【參考答案】 (1)const float PI = 3.14159f; const float WIDTH =3.00f; (2)Circle(float r):radius(r); (3)FencePrice=f; ConcretePrice=c; (4)return FencePrice*fencelen+ConcretePrice*conarea; 【試題解析】 本題考查對符號常量的定義及類的定義與實現等方面的內容,其中常類型的定義應使用const關鍵字。5 一、改錯題 使用VC6打開考生文件夾下的工程kt10_1,此工程包含一個源程序文件kt10_1.cpp,但該程序
45、運行有問題,請改正程序中的錯誤,使程序的輸出結果為: classBase classD1 classD2 classD3 finBase 源程序文件kt10_1.cpp清單如下: #include<iostream.h> classBase public: Base()cout<<"classBase"<<endl; voidf()cout<<"finBase"<<endl; ; classD1:virtualpublicBase public: D1()cout<<"cl
46、assD1"<<endl; voidf()cout<<"finD1"<<endl; ; /*found*/ classD2:publicBase public: D2()cout<<"classD2"<<endl; ; /*found*/ classD3:publicD1,publicD2 public: D3()cout<<"classD3"<<endl; ; voidmain() D3d; /*found*/ d.f(); 【參考答案】
47、(1)將class D2:public Base 改為:class D2:virtual public Base (2)將class D3:public D1,public D2 改為:class D3:public D1,public D2 (3)將d.f();改為:d.Base:f(); 【試題解析】 (1)主要考查對虛基類的理解,虛基類可以解決二義性的問題,其定義方式是在繼承列表中使用virtual關鍵字,使用虛基類可以避免程序運行中對基類函數調用的不惟一; (2)主要考查對類的定義方法的掌握,“:”為作用域符,此處應該使用“:”,因為后面是繼承列表; (3)主要考查對虛基類函數調用過程
48、的理解,只有使用":"限定才能訪問基類函數,否則將會調用自身的函數,如果該類沒有該函數的定義,則會自動調用其父類的該函數,所以必須使用“:”符號。 二、簡單應用題 請編寫一個函數inlinelongsum(intn),用遞歸函數完成運算:sum(n)=1*1+2*2+?+n*n,遞歸表達式為sum(n)=sum(n-1)+n2。 注意:部分源程序已存在文件kt10_2.cpp中。 請勿修改主函數main和其他函數中的任何內容,僅在函數sum的花括號中填寫若干語句。 文件kt10_2.cpp的內容如下: #include<iostream.h> inlinelon
49、gsum(intn) voidmain() intn; cout<<"輸入n:" cin>>n; cout<<"結果為:"<<sum(n)<<endl; 【參考答案】 inline long sum(int n) if(n=1) return 1; else return n*n+sum(n-1); 【試題解析】 本題考查對遞歸函數掌握的熟練程度。遞歸的終止條件為n=1時,值為1。 三、綜合應用題 使用VC6打開考生文件夾下的工程kt10_3,此工程包含一個源程序文件kt10_3.cpp,其中定
50、義了用于表示雇員信息的CEmployee類與表示公司信息的Company類,但這兩個類的定義并不完整。請按要求完成下列操作。 (1)定義Cemployee類的私有數據成員name(大小為50的字符數組)和pay(double型數據),分別用于記錄雇員姓名和月薪。請在注釋“/*1*”之后添加適當的語句。 (2)完成Company類默認構造函數的定義,該構造函數將n值賦值給私有成員num,并完成指針emp所指的n個Cemployee對象空間的申請,請在注釋“/*2*”之后添加適當的語句。 (3)完成Company類成員函數voidCompany:add(intcode,charname50,dou
51、blepay)的定義,該函數將某一雇員的編號code、姓名name及月薪pay輸入到公司信息中。請在注釋“/*3*”之后添加適當的語句。 (4)完成Company類成員函數voidCompany:print()的定義,使其以"_ispaid_RMBforonemonth"的格式輸出公司內所有員工的月薪信息。請在注釋“/*4*”之后添加適當的語句。 注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。 源程序清單如下: #include<iostream.h> #include<string.h> classCEmployee public:
52、voidputname(charn50)strcpy(name,n); voidgetname(charn50)strcpy(n,name); voidputpay(doubled)pay=d; doublegetpay()returnpay; private: /*1* ; classCompany private: CEmployee*emp; intnum; public: Company(intn); voidadd(intcode,charname50,doublepay); voidprint(); ; Company:Company(intn) /*2* voidCompany:
53、add(intcode,charname50,doublepay) /*3* voidCompany:print() /*4* for(inti=0;i<num;i+) (emp+i)->getname(c); money=(emp+i)->getpay(); cout<<c<<"ispaid"<<money<< "RMBforonemonth"<<endl; voidmain() Companycom(2); com.add(0,"Jack",200);
54、com.add(1,"Lee",300); com.print(); 【參考答案】 (1)char name50; double pay; (2)num=n; emp=new CEmployeenum; (3)(emp+code)->putname(name); (emp+code)->putpay(pay); (4)char c50; double money; 【試題解析】 本題考查類成員的定義、類成員函數的定義與調用、對象數組的使用。注意指針和動態(tài)申請空間new的使用方法。使用指針調用成員應該用"->"符號,new的返回值是指針類
55、型的。6 一、改錯題 使用VC6打開考生文件夾下的工程kt11_1,此工程包含一個源程序文件kt11_1.cpp,但該程序運行有問題,請改正函數中的錯誤,使該程序的輸出結果為: Valuesare:1,2and3 Pressanykeytocontinue 源程序文件kt11_1.cpp清單如下: #include<iostream.h> classCommonBase public: intx; ; /*found*/ classDeriveCommonA:publicCommonBase public: inty; ; classDeriveCommonB:publicComm
56、onBase public: intz; ; /*found*/ classOverlapping:publicDeriveCommonA;publicDeriveCommonB public: voidDisplay() cout<<"Valuesare:"<<DeriveCommonA:x<<","<<y<<"and"<<z<<endl; ; intmain() Overlappingov; /*found*/ ov.x=1; ov.y=2; ov
57、.z=3; ov.Display(); return0; 【試題解析】 (1)主要考查對派生類定義的理解,C+規(guī)定的繼承格式是在類名的后面加冒號,之后是繼承方式和繼承類的名稱,題目中錯誤的使用了作用域運算符; (2)主要考查多繼承的定義,多繼承的格式基本上和單繼承相同,不過在多個基類之間應該使用逗號分開,題目中錯誤的使用了分號,分號在C+中是結束標志; (3)主要考查對派生類的對象訪問的掌握,x是類CommonBase的成員,如果不加限制的訪問就會產生二義性,編譯程序不知道這個x是A類的,還是B類的,所以必須使用作用域限制符“:”,為了解決這個問題可以使用虛基類。 二、簡單應用題 請編寫函數f
58、un(),該函數的功能是判斷字符串是否為回文,若是則函數返回1,主函數中輸出YES;否則返回0,主函數中輸出NO。回文是指順讀和倒讀都一樣的字符串。 例如:字符串LEVEL是回文,而字符串就不是回文。 注意:部分源程序已存在文件kt11_2.cpp中。 請勿修改主函數main和其他函數中的任何內容,僅在函數fun的花括號中填寫若干語句。 文件kt11_2.cpp的內容如下: #include<iostream.h> #include<stdio.h> #defineN80 intfun(char*str) voidmain() charsN; cout<<"Enterastring:"<<endl; gets(s); cout<<"nn" puts(s); if(fun(s) cout<<"YESn" else cout<<"NOn"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食堂用餐合同協議書范本
- 三方協議合同編號怎么弄
- 合格協議與合同協議
- 合同怎么代簽協議
- 個人供貨合同協議
- 技術合同協議書樣本圖
- 無合同框架協議
- 終端維修合同協議
- 減肥合同退款協議
- 合同保密協議內容
- 2024年湖北省中考地理·生物試卷(含答案解析)
- 2024年共青團入團積極分子考試題庫及答案
- 2024年《動漫藝術概論》自考復習題庫(附答案)
- 2024年職業(yè)技能“大數據考試”專業(yè)技術人員繼續(xù)教育考試題庫與答案
- 國家高新技術企業(yè)評定打分表
- 中醫(yī)藥治療支氣管哮喘的進展
- SYT 6680-2021 石油天然氣鉆采設備 鉆機和修井機出廠驗收規(guī)范-PDF解密
- 一例精神分裂癥患者的護理查房
- 安徽省安慶市懷寧縣2023-2024學年八年級下學期期中數學試卷
- 2024版醫(yī)療廢物分類目錄解讀
- 2024-2030年中國情趣用品行業(yè)市場全景分析及投資前景展望報告
評論
0/150
提交評論