計(jì)算機(jī)二級C上機(jī)題庫含答案_第1頁
計(jì)算機(jī)二級C上機(jī)題庫含答案_第2頁
計(jì)算機(jī)二級C上機(jī)題庫含答案_第3頁
計(jì)算機(jī)二級C上機(jī)題庫含答案_第4頁
計(jì)算機(jī)二級C上機(jī)題庫含答案_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)等級考試二級C+模擬試題上機(jī)部分1一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt6_1,此工程包含一個(gè)源程序文件kt6_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:Constructor2Constructor1i=0i=10Destructor源程序文件kt6_1.cpp清單如下:#includeclassCSampleinti;public:CSample()cout<<"Constructor1"<CSample(intval)cout<<"Constructor2"<CSam

2、ple()cout<<"Destructor"<voiddisp();*found*voiddisp()cout<<"i="<voidmain()CSample*a,b(10);*found*a->disp();*found*b->disp();【參考答案】(1) 將voiddisp()改為:voidCSample:disp()(2) 將a->disp();改為:a=newCSample;a->disp();將b->disp();改為:b.disp();【試題解析】(1) 主要考查類成員函

3、數(shù)定義格式的熟練掌握,對于類體外函數(shù)的實(shí)現(xiàn),應(yīng)該使用作用域符":",按照返回值類型類名:函數(shù)名(參數(shù)列表)的形式進(jìn)行說明;(2)主要考查對動(dòng)態(tài)存儲(chǔ)分配的掌握,根據(jù)前面的定義,a是一個(gè)指針類型的變量,指向一個(gè)對象,但是并沒有被初始化,此時(shí)a中的數(shù)據(jù)無任何意義,應(yīng)該使用動(dòng)態(tài)存儲(chǔ)分配new生成一個(gè)新的對象,并將返回的指針賦值給a;(3)主要考查對象指針與對象在調(diào)用成員函數(shù)時(shí)格式的不同,b是一個(gè)對象變量,使用b調(diào)用成員函數(shù)應(yīng)該用"."運(yùn)算符。二、簡單應(yīng)用題編寫函數(shù)fun(),它的功能是利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個(gè)實(shí)根。xn+1=co

4、s(xn)迭代步驟如下:(1)取x1初值為0.0。(2)x0=x1,把x1的值賦給x0。(3)x1=cos(x0),求出一個(gè)新的x1。(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟(5),否則執(zhí)行步驟(2)。(5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,做為函數(shù)值返回。程序輸出結(jié)果Root=0.739085。注意:部分源程序已存在文件kt6_2.cpp中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句文件kt6_2的內(nèi)容如下:#include#include#includefloatfun()voidmain()cout<&

5、lt;"Root="<【參考答案】floatfun()floatx1=0.0,x0;dox0=x1;x1=cos(x0);while(fabs(x0-x1)>=1e-6);returnx1;【試題解析】解答本題的關(guān)鍵之處在于看清題中所給的迭代步驟” ,同時(shí)要理解xn+1=cosxn通式的含義,要考慮到x1的初值為0.0三、綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt6_3,此工程包含一個(gè)源程序文件kt6_3.cpp,其中定義了用于表示考生的類Student,請按要求完成下列操作,將程序補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員code、english分別用于表示考生的編

6、號、英語成績、它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅?*1*之后添加適當(dāng)”的語句。(2) 完成成員函數(shù)voidStudent:inputinformation()的定義,該函數(shù)用于用戶輸入一個(gè)考生對象的信息,輸入格式如下所示:輸入編號:英語成績:計(jì)算機(jī)成績:請?jiān)谧⑨尅?*2*之后添加適當(dāng)?shù)恼Z句?!?3) 利用已實(shí)現(xiàn)的類Student的成員函數(shù),完成函數(shù)voidfirstname(Student*A,intnum)的定義,該函數(shù)根據(jù)考生信息A,輸出num個(gè)考生中總分最高者的編號及其相應(yīng)的總分,在此不考慮總分相同的情況。請?jiān)谧⑨尅?*3*之后添加適當(dāng)?shù)恼Z句?!弊⒁猓撼谥付ㄎ恢锰砑诱Z句之外,請不要改動(dòng)

7、程序中的其他內(nèi)容。源程序文件kt6_3.cpp清單如下:#includeclassStudent/*1*intcomputer;inttotal;public:voidgetinformation();voidcomputesum();intgetcode();intgettotalscore();Student();voidStudent:getinformation()/*2*cout<<"英語成績:”cin>>english;cout<<"計(jì)算機(jī)成績:"cin>>computer;voidStudent:com

8、putesum()total=english+computer;cout<<" 編 號 "<intStudent:getcode()returncode;intStudent:gettotalscore()returntotal;voidfirstname(Student*A,intnum)/*3*tempsum=(*A0).gettotalscore();for(inti=1;iif(*Ai).gettotalscore()>tempsum)tempcode=(*Ai).getcode();tempsum=(*Ai).gettotalscore()

9、;cout<<"總分最高者-"<voidmain()Student*A3;inti,n=3;for(i=0;iAi=newStudent;Ai->getinformation();for(i=0;iAi->computesum();firstname(A,3);【參考答案】(1)intcode;intenglish;(2)cout<<”輸入編號:";cin>>code;(3)inttempcode,tempsum;tempcode=(*A0).getcode();【試題解析】本題是對C+程序設(shè)計(jì)的綜合考查,其設(shè)

10、計(jì)類的成員及成員函數(shù)的定義與調(diào)用,數(shù)據(jù)的輸入輸出,for循環(huán)語句,if條件判斷語句等多個(gè)知識點(diǎn),其中(3)中為指針數(shù)組的使用,指針數(shù)組是一組指針,每一個(gè)成員都按照指針的操作規(guī)則,但是整個(gè)訪問規(guī)則仍然使用數(shù)組下標(biāo)方式,如A0指的是第一個(gè)指針,而*A0是取出第一個(gè)指針指向的內(nèi)容。一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt7_1,此工程包含一個(gè)源程序文件kt7_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:Constructor1Constructor1Constructor1DestructorConstructor2Destructorx=0x=5Destruct

11、orDestructor源程序文件kt21_1.cpp清單如下:#includeclassBintx;public:B()x=0;cout<<"Constructor1"<<ENDL;<p>B(inti)x=i;cout<<"Constructor2"<<ENDL;<p>B()cout<<"Destructor"<<ENDL;<p>*found*B(inti)cout<<I<<"BEDESTRU

12、CTOR"<<ENDL;< p>voidprint()cout<<"x="<<X<<ENDL;< p>voidmain()B*ptr;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=

13、B(0); 改為: ptr0=B();(3)將 for (int i=0;i<2;) 改為: for(int i=0;i<2;i+)B(inti)x=i;cout<<"Constructor2"<<ENDL;< p>B()cout<<"Destructor"<<ENDL;< p>*found*B(inti)cout<<I<<"BEDESTRUCTOR"<<ENDL;<p>voidprint()cout&l

14、t;<"x="<<X<<ENDL;<p>voidmain()B*ptr;ptr=newB2;/*found*/ptr0=B(0);ptr1=B(5);*found*for(inti=0;i<2;)ptri.print();deleteptr;【參考答案】(1)#B(inti)cout<<I<<"pbeDestructor?<<endl;刪除<>(2)將ptr0=B(0);改為:ptr0=B();(3)將for(inti=0;i<2;)改為:for(inti=0;i

15、<2;i+)【試題解析】本題主要考查對文件相關(guān)操作的熟練程度。首先定義文件流類的變量,然后使用該對象的open方法打開一個(gè)文件,接著使用while循環(huán)和getch方法每次讀入一個(gè)字符并統(tǒng)計(jì)字符個(gè)數(shù),最后使用close方法關(guān)閉文件,返回i值。二、簡單應(yīng)用題編寫一個(gè)函數(shù)intcharnum(charfn10),該函數(shù)以只讀方式打開文件fn,通過統(tǒng)計(jì),返回文件中字符的個(gè)數(shù),請使用while循環(huán)實(shí)現(xiàn)計(jì)數(shù)功能。注意:部分源程序已存在文件kt7_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)charnum的花括號中填寫若干語句。文件kt7_2.cpp的內(nèi)容如下:#include

16、#include#includeintcharnum(charfn10);voidmain()intnum;num=charnum("abc.txt");cout<<"num="<<NUM<<ENDL;<p>intcharnum(charfn10)【參考答案】intcharnum(charfn10)fstreamfile;file.open(fn,ios:in);if(!file)cout<<"abc.txtcan'topen"<<ENDL;<p&g

17、t;abort();charch;inti=0;while(!file.eof()file.get(ch);i+;file.close();returni-1;【試題解析】本題主要考查對文件相關(guān)操作的熟練程度。首先定義文件流類的變量,然后使用該對象的open方法打開一個(gè)文件,接著使用while循環(huán)和getch方法每次讀入一個(gè)字符并統(tǒng)計(jì)字符個(gè)數(shù),最后使用close方法關(guān)閉文件,返回i值。三、綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt7_3,此工程包含一個(gè)源程序文件kt7_3.cpp,其中含有一個(gè)類Circle的定義,但該類的定義并不完整。請按要求完成下列操作,將類Circle的定義補(bǔ)充完整。

18、(1)為類Circle增加一個(gè)構(gòu)造函數(shù),該函數(shù)有一個(gè)參數(shù),并在構(gòu)造時(shí)將該參數(shù)值賦給成員radius。將該函數(shù)實(shí)現(xiàn)為一個(gè)非內(nèi)聯(lián)函數(shù),并且使用參數(shù)列表的方式將類成員賦值。請?jiān)谧⑨尅?*1*之后添加適”當(dāng)?shù)恼Z句。(2)為類Circle增加一個(gè)成員函數(shù)print(),使得可以輸出有關(guān)圓的信息,比如下列程序Circlec;c.SetRadius(5);c.Print();將輸出:Thecirclehasradiusof5!請?jiān)谧⑨尅?*2*之后添加適當(dāng)?shù)恼Z句。”(3)完成友元函數(shù)voidCompareR(Circle*c1,Circle*c2)的定義,在屏幕中輸出cl與c2比較radius大小結(jié)果,要求

19、使用if-else結(jié)構(gòu)完成。請?jiān)谧⑨尅?*3*之后添加適當(dāng)?shù)恼Z句?!陛敵鼋Y(jié)果如下:Thecirclehasradusof5!Thecirclehasradiusof10!c1<C2<p>注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。源程序文件kt7_3.cpp清單如下:#includeclassCirclepublic:Circle():radius(5)/*1*voidSetRadius(intr)radius=r;intGetRadius()returnradius;/*2*friendvoidCompareR(Circle*c1,Circle*c2);pr

20、ivate:intradius;voidCompareR(Circle*c1,Circle*c2)/*3*cout<<"c1>c2"<<ENDL;<p>elseif(c1->GetRadius()=(c2->GetRadius()cout<<"c1=c2"<<ENDL;<p>elseif(c1->GetRadius()<(c2->GetRadius()cout<<"c1<C2"<<ENDL;<

21、p>voidmain()Circlec1;c1.SetRadius(5);c1.Print();Circlec2(10);c2.Print();CompareR(&c1,&c2);【參考答案】of(1) Circle(intrad):radius(rad)(2) voidPrint()cout<<"Thecirclehasradius"<<RADIUS<<"!N"<p>(3) if(c1->GetRadius()>(c2->GetRadius()if 分支語句等知識【

22、試題解析】本題考查成員函數(shù)的定義與實(shí)現(xiàn),友元函數(shù),點(diǎn)。友元函數(shù)的類體外的定義與一般函數(shù)一樣,其中if-else的使用,else總是與其最近的那個(gè)if配對使用的,書寫時(shí)最好使用縮進(jìn)格式,將配對的if-else對齊,以免出錯(cuò)。一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個(gè)源程序文件kt8_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:f1functionofderivef2functionofbasef4functionofbase源程序文件kt8_1.cpp清單如下:#includeclassbasepublic:*found*voidf1()c

23、out<<"f1functionofbase"<<ENDL;<p>virtualvoidf2()cout<<"f2functionofbase"<<ENDL;<p>virtualvoidf3()cout<<"f3functionofbase"<<ENDL;<p>voidf4()cout<<"f4functionofbase"<<>/*found*/classderive:publ

24、icbasevoidf1()cout<<"f1functionofderive"<<ENDL;<p>voidf2(intx)cout<<"f2functionofderive"<<ENDL;<p>voidf4()cout<<"f4functionofderive"<<>voidmain()base*p;deriveobj2;/*found*/p=obj2;p->f1();p->f2();p->f4();【參考答案】(

25、1) 將voidf1()cout<<"f1functionofbase"<<ENDL;<p>改為:virtualvoidf1()cout<<"f1functionofbase"<<ENDL;<p>(2) 將classderive:publicbase改為:classderive:publicbase(3) 將p=obj2;改為:p=&obj2;【試題解析】(1)主要考查對虛函數(shù)的深刻理解,虛函數(shù)是動(dòng)態(tài)聯(lián)編的基礎(chǔ),也是實(shí)現(xiàn)多態(tài)性的重要方法,它可以根據(jù)不同的情況動(dòng)態(tài)的選擇執(zhí)行哪一

26、個(gè)函數(shù)。在派生類中實(shí)現(xiàn)虛函數(shù)應(yīng)該滿足與基類的同名函數(shù)完全相同,并且使用關(guān)鍵字virtual修飾,本題中由輸出結(jié)果中的f1functionofderive可知,必須將基類base的成員函數(shù)f1()定義為虛函數(shù);(2) 主要考查對派生類定義格式的掌握,應(yīng)該使用“:后面是繼承”列表,而“:是作用域符”;主要考查類對象的定義與使用,p是一個(gè)指針類型的變量,給它的賦值應(yīng)該是一個(gè)地址,即使用取地址操作符&。二、簡單應(yīng)用題已知考生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名考生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,該函數(shù)的功能是:找出成績最低的考生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給予出

27、函數(shù)的首部,請完成該函數(shù)。注意:部分源程序已存在文件kt8_2.cpp中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。文件kt8_2.cpp的內(nèi)容如下:#include#include#include#defineN10typedefstructsscharnum10;ints;STU;voidfun(STUa,STU*s)voidmain()STUaN="A01",81,"A02",89,"A03",66,"A04",87,"A05",77,&q

28、uot;A06",90,"A07",79,"A08",61,"A09",80,"A10",71,m;fun(a,&m);cout<<"*Theoriginaldate*"<<ENDL;<p>cout<<"Thelowest:"<<M.NUM<<M.S<<ENDL;<p>【參考答案】fun(STUa,STU*s)inti,min;min=a0.s;for(i=0;i

29、<N;I+)<p>if(ai.s<MIN)<p>min=ai.s;*s=ai;【試題解析】解題思路為:先假設(shè)第一個(gè)考生的成績最優(yōu),通過循環(huán)找到最低成績,并將最低成績的考生記錄傳給指針s,帶回主函數(shù)。三、綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt8_3,此工程包含一個(gè)源程序文件kt8_3.cpp,該文件設(shè)計(jì)了用于輸出乘法九九表的類。請認(rèn)真閱讀已有的代碼,按要求完成下列操作,將程序補(bǔ)充完整。定義類Table的私有數(shù)據(jù)成員x和y,分別用于表示九九表中的兩個(gè)乘數(shù)(x*y),它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅?*1*之后添”加適當(dāng)?shù)恼Z句;(2)完成類Table的成

30、員函數(shù)print()的定義,該函數(shù)以"x*y=z"的格式打印出九九表中的一個(gè)乘法算式,請使用格式化輸出函數(shù)printf實(shí)現(xiàn),在注釋“/*2*之后添加適當(dāng)?shù)恼Z句”;(3)完成類Table9的成員函數(shù)print()的定義,該函數(shù)調(diào)用基類Table的print()函數(shù),將九九表輸出到屏幕,請?jiān)谧⑨尅?*3*之后添加適”當(dāng)?shù)恼Z句;(4) 補(bǔ)充主函數(shù),在屏幕上輸出九九表,以便測試所定義的類的正確性。請?jiān)谧⑨尅?*4*之后添加適當(dāng)?shù)恼Z句。”注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。源程序文件kt8_3.cpp清單如下:#include#includeclassTabl

31、e/*1*intz;public:voidprint(intx,inty,intz);voidTable:print(intx,inty,intz)/*2*classTable9:publicTablepublic:voidprint();voidTable9:print()/*3*intx,y,z;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)intx;inty;(2)printf

32、("%d*%d=%d",x,y,z);if(z<10)printf("");(3)inti,j;(4)Table9t_9;t_9.print();【試題解析】主要考查將具體問題抽象為類,將類的定義補(bǔ)充完整,并進(jìn)行類定義測試的能力。一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt9_1,此工程包含一個(gè)源程序文件kt9_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:4,520源程序文件清單如下:#include<iostream.h>classAprotected:intn,m;public:voidset(int

33、a,intb)m=a;n=b;voidshow()cout<<m<<","<<n<<endl;/*found*/classB:publicAints;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

34、();【試題解析】( 1) 主要考查對類定義格式的掌握,類的結(jié)尾應(yīng)該使用"";( 2) 主要考查對基類與派生類函數(shù)調(diào)用關(guān)系的掌握,根據(jù)所要求的輸出結(jié)果,應(yīng)該調(diào)用的函數(shù)為類A的set而不是類B自身的set函數(shù),應(yīng)該避免調(diào)用的二義性;( 3) 主要考查對繼承與派生的理解,由所要求輸出結(jié)果可知正確:b.shows()。二、簡單應(yīng)用題請編寫一個(gè)函數(shù)intCalcDigital(char*str)該函數(shù)可返回字符串str中數(shù)字字符(即“0-”“9這”10個(gè)數(shù)字)的個(gè)數(shù),如字符串"olympic2008"中數(shù)字字符的個(gè)數(shù)為4。請用if條件判斷語句與for循環(huán)語句來實(shí)

35、現(xiàn)該函數(shù)。注意:部分源程序已存在文件中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號中填寫若干語句。文件kt9_2.cpp的內(nèi)容如下:#include<iostream.h>#include<string.h>intCalcDigital(char*str);voidmain()char*str;str=newchar255;cout<<"輸入字符串:"cin>>str;intnum=CalcDigital(str);cout<<str<<":"<&l

36、t;num<<endl;intCalcDigital(char*str)【參考答案】intCalcDigital(char*str)if(str=NULL)return0;intnum_of_digital=0;intlen=strlen(str);for(inti=0;i<len;i+)if(stri<='9'&&stri>='0')num_of_digital+;returnnum_of_digital;【試題解析】本題考查對于if條件判斷語句與for循環(huán)語句的熟練使用程度。注意判斷條件(判斷是否是數(shù)字是直接比較

37、ASCII碼)的使用。3綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt9_3,此工程包含一個(gè)源程序文件kt9_3.cpp,其中定義了Circle類與Money類,Circle類可對半徑為r的圓進(jìn)行周長與面積的計(jì)算,而Money類用于計(jì)算一圓形游泳池的造價(jià)。游泳池四周有原形過道,過道外圍上柵欄,過道寬度為3米,根據(jù)鍵入的游泳池半徑,每米柵欄價(jià)格及每平方米過道價(jià)格,即可計(jì)算出游泳池的造價(jià)。請按要求完成下列操作,將程序補(bǔ)充完整。(1)定義符號常量PI(值為3.14159f)與WIDTH(值為3.00f),分別用于表示圓周率與過道的固定寬度。請?jiān)谧⑨尅?*1*之后添加”適當(dāng)?shù)恼Z句。(2)定義Circl

38、e類默認(rèn)構(gòu)造函數(shù),把私有成員radius初始化為參數(shù)r的值。請?jiān)谧⑨尅?*2*之后添加適當(dāng)?shù)恼Z句;”(每米柵欄的價(jià)格)、ConcretePrice(每平方米過道的價(jià)格)初始化為參數(shù)f,c的值。請?jiān)谧⑨尅?3*之后添加適當(dāng)?shù)恼Z句。(4)完成Money類成員函數(shù)floatMoney:TotalMoney(floatfencelen,floatconarea)的定義,根據(jù)參數(shù)fencelen(柵欄的長度)和conarea(過道的面積),返回柵欄與過道的總造價(jià)。請?jiān)谧⑨尅?*4*之后添加適當(dāng)?shù)恼Z句?!弊⒁猓撼谥付ㄎ恢锰砑诱Z句之外,請不要改動(dòng)程序中的其他內(nèi)容。源程序文件kt9_3.cpp清單如下:#i

39、nclude<iostream.h>/*1*classCircleprivate:floatradius;public:floatCircumference()return2*PI*radius;/*2*floatArea()returnPI*radius*radius;classMoneyprivate:floatFencePrice;floatConcretePrice;public:Money(floatf,floatc);floatTotalMoney(floatfencelen,floatconarea);Money:Money(floatf,floatc)/*3*flo

40、atMoney: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>>fence;cout<<"Enter

41、theConcretePrice:"cin>>concrete;CirclePool(radius);CirclePoolRim(radius+WIDTH);Moneymon(fence,concrete);floattotalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area()-Pool.Area();cout<<"ThetotalmoneyisRMB"<<totalmoney<<endl;【參考答案】( 1) constfloatPI=3.141

42、59f;constfloatWIDTH=3.00f;( 2) Circle(floatr):radius(r);( 3) FencePrice=f;ConcretePrice=c;( 4) returnFencePrice*fencelen+ConcretePrice*conarea;【試題解析】本題考查對符號常量的定義及類的定義與實(shí)現(xiàn)等方面的內(nèi)容,其中常類型的定義應(yīng)使用const關(guān)鍵字。一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt10_1,此工程包含一個(gè)源程序文件kt10_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯(cuò)誤,使程序的輸出結(jié)果為:classBaseclassD1classD2

43、classD3finBase源程序文件kt10_1.cpp清單如下:#include<iostream.h>classBasepublic:Base()cout<<"classBase"<<endl;voidf()cout<<"finBase"<<endl;classD1:virtualpublicBasepublic:D1()cout<<"classD1"<<endl;voidf()cout<<"finD1"<&

44、lt;endl;*found*classD2:publicBase public:D2()cout<<"classD2"<<endl; ;*found*classD3:publicD1,publicD2public:D3()cout<<"classD3"<<endl;voidmain()D3d;/*found*d.f();【參考答案】 1) 1)將classD2:publicBase改為:classD2:virtualpublicBase 2) 將classD3:publicD1,publicD2改為:cl

45、assD3:publicD1,publicD2(3)將d.f();改為:d.Base:f();【試題解析】(1) 主要考查對虛基類的理解,虛基類可以解決二義性的問題其定義方式是在繼承列表中使用virtual關(guān)鍵字,使用虛基類可以避免程序運(yùn)行中對基類函數(shù)調(diào)用的不惟一;(2) 主要考查對類的定義方法的掌握,“:為作用域符,此處”應(yīng)該使用“:,因?yàn)楹竺媸抢^承列表;”(3) 主要考查對虛基類函數(shù)調(diào)用過程的理解,只有使用":"限定才能訪問基類函數(shù),否則將會(huì)調(diào)用自身的函數(shù),如果該類沒有該函數(shù)的定義,則會(huì)自動(dòng)調(diào)用其父類的該函數(shù),所以必須使用“:符號。”二、簡單應(yīng)用題請編寫一個(gè)函數(shù)inli

46、nelongsum(intn),用遞歸函數(shù)完成運(yùn)算:sum(n)=1*1+2*2+?+n*n,遞歸表達(dá)式為sum(n)=sum(n-1)+n2。注意:部分源程序已存在文件kt10_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)sum的花括號中填寫若干語句。文件kt10_2.cpp的內(nèi)容如下:#include<iostream.h>inlinelongsum(intn)voidmain()intn;cout<<"輸入n:"cin>>n;cout<<"結(jié)果為:"<<sum(n)

47、<<endl;【參考答案】inlinelongsum(intn)if(n=1)return1;elsereturnn*n+sum(n-1);【試題解析】本題考查對遞歸函數(shù)掌握的熟練程度。遞歸的終止條件為n=1時(shí),值為1。三、綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt10_3,此工程包含一個(gè)源程序文件kt10_3.cpp其中定義了用于表示雇員信息的CEmployee類與表示公司信息的Company類,但這兩個(gè)類的定義并不完整。請按要求完成下列操作。(1)定義Cemployee類的私有數(shù)據(jù)成員name(大小為50的字符數(shù)組)和pay(double型數(shù)據(jù)),分別用于記錄雇員姓名和月薪

48、。請?jiān)谧⑨尅?*1*之后添加適當(dāng)?shù)恼Z句?!保?2) 完成Company類默認(rèn)構(gòu)造函數(shù)的定義,該構(gòu)造函數(shù)將n值賦值給私有成員num,并完成指針emp所指的n個(gè)Cemployee對象空間的申請,請?jiān)谧⑨尅?*2*之后添加適當(dāng)?shù)恼Z句?!保?)完成Company類成員函數(shù)voidCompany:add(intcode,charname50,doublepay的定義,該函數(shù)將某一雇員的編號code姓名name及月薪pay輸入到公司信息中。請?jiān)谧⑨尅?*3*之后添加適當(dāng)?shù)恼Z句?!保?)完成Company類成員函數(shù)voidCompany:print()的定義,使其以"_ispaid_RMBforo

49、nemonth的格式輸出公司內(nèi)所有員工的月薪信息。請?jiān)谧⑨尅?*4*之后添加適當(dāng)?shù)恼Z句?!弊⒁猓撼谥付ㄎ恢锰砑诱Z句之外,請不要改動(dòng)程序中的其他內(nèi)容。源程序清單如下:#include<iostream.h>#include<string.h>classCEmployeepublic:voidputname(charn50)strcpy(name,n);voidgetname(charn50)strcpy(n,name);voidputpay(doubled)pay=d;doublegetpay()returnpay;private:/*1*;classCompany p

50、rivate:CEmployee*emp;intnum;public:Company(intn);voidadd(intcode,charname50,doublepay);voidprint(); ;Company:Company(intn) /*2* voidCompany:add(intcode,charname50,doublepay)*voidCompany:print() /*4*for(inti=0;i<num;i+)(emp+i)->getname(c);money=(emp+i)->getpay();cout<<c<<"is

51、paid"<<money<<RMBforonemonth"<<endl;voidmain()Companycom(2);com.add(0,"Jack",200);com.add(1,"Lee",300);com.print();【參考答案】( 1) charname50;doublepay;( 2) num=n;emp=newCEmployeenum;( 3) (emp+code)->putname(name);(emp+code)->putpay(pay);( 4) charc50;

52、doublemoney;【試題解析】本題考查類成員的定義、類成員函數(shù)的定義與調(diào)用、對象數(shù)組的使用。注意指針和動(dòng)態(tài)申請空間new的使用方法。使用指針調(diào)用成員應(yīng)該用"->"符號,new的返回值是指針類型的。一、改錯(cuò)題使用VC6打開考生文件夾下的工程kt11_1,此工程包含一個(gè)源程序文件kt11_1.cpp,但該程序運(yùn)行有問題,請改正函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果為:Valuesare:1,2and3Pressanykeytocontinue源程序文件kt11_1.cpp清單如下:#include<iostream.h>classCommonBasepubli

53、c:intx;*found*classDeriveCommonA:publicCommonBasepublic:inty;classDeriveCommonB:publicCommonBasepublic:intz;/*found*/classOverlapping:publicDeriveCommonA;publicDeriveCommonBpublic:voidDisplay()cout<<"Valuesare:"<<DeriveCommonA:x<<","<<y<<"and&qu

54、ot;<<z<<endl;intmain()Overlappingov;/*found*/ov.x=1;ov.y=2;ov.z=3;ov.Display();return0;【試題解析】(1)主要考查對派生類定義的理解,C+規(guī)定的繼承格式是在類名的后面加冒號,之后是繼承方式和繼承類的名稱,題目中錯(cuò)誤的使用了作用域運(yùn)算符;( 2) 主要考查多繼承的定義,多繼承的格式基本上和單繼承相同,不過在多個(gè)基類之間應(yīng)該使用逗號分開,題目中錯(cuò)誤的使用了分號,分號在C+中是結(jié)束標(biāo)志;( 3) 主要考查對派生類的對象訪問的掌握,x是類CommonBase的成員,如果不加限制的訪問就會(huì)產(chǎn)生二

55、義性,編譯程序不知道這個(gè)x是A類的,還是B類的,所以必須使用作用域限制符“:,為了解”決這個(gè)問題可以使用虛基類。二、簡單應(yīng)用題請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是則函數(shù)返回1,主函數(shù)中輸出YEG否則返回0,主函數(shù)中輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。例如:字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序已存在文件kt11_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填寫若干語句。文件kt11_2.cpp的內(nèi)容如下:#include<iostream.h>#include<stdi

56、o.h>#defineN80intfun(char*str)voidmain()charsN;cout<<"Enterastring:"<<endl;gets(s);cout<<"nn"puts(s);if(fun(s)cout<<"YESn"elsecout<<"NOn"【參考答案】intfun(char*str)inti,n=0,fg=1;char*p=str;while(*p)n+;p+;for(i=0;i<n/2;i+)if(stri=

57、strn-1-i);elsefg=0;break;returnfg;【試題解析】本題的解題思路是:先利用循環(huán)中指針的移動(dòng)來求得字符串的長度n,然后用一個(gè)for循環(huán)依次取得數(shù)組中的前半部分元素,用取得的前半部分內(nèi)的元素逐個(gè)與后半部分內(nèi)的對應(yīng)位置的元素進(jìn)行比較,如果相同,不做任何工作,接著取下一個(gè)元素,繼續(xù)比較;如果不相同,可以判斷該字符串肯定不是回文,就給標(biāo)志變量fg賦值0(fg的初始值為1)。最終把fg作為函數(shù)的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。三、綜合應(yīng)用題使用VC6打開考生文件夾下的工程kt11_3。此工程包含一個(gè)kt11_3.cpp其中定義了類queue但該類的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。 1) 1)完成類queue的無參數(shù)的構(gòu)造函數(shù)的定義,要求把數(shù)據(jù)成員bl和el都初始化為0,同時(shí)輸出queueinitialized。請?jiān)谧⑨?*、*»之后添加適當(dāng)?shù)恼Z句。 2) 完成類queu

溫馨提示

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

評論

0/150

提交評論