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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷51(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:1003732注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#include∥********error********voidmain({∥********error********intm=0142;∥********error********intn=0X27;intq=32;cout<標(biāo)準(zhǔn)答案:(1)VOidmain()(2)intm=0144;(3)intn=0X25;或intn=0X25知識(shí)點(diǎn)解析:(1)本題主要考察了主函數(shù)定義及不同進(jìn)制之間的轉(zhuǎn)換,包括十進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對(duì)括號(hào),因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“voidmain()”。(2)cout輸出默認(rèn)是10進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,十進(jìn)制的37對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn:0X25;”或“intn=0x25;"。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(char*des.char*str,charc,char*str2)的功能是:如果s仃中包含字符“!”,則替換成“a;如果str中包含字符“&”,則替換成b;如果str中包含字符“*”則替換成str2。并用函數(shù)返回目標(biāo)轉(zhuǎn)換后的指針。注意:只能補(bǔ)充函數(shù)convert(char*des,char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char*str=”!&cefghi*!&”;char*str2=”Jklm”;convert(dest,str,str2);cout<標(biāo)準(zhǔn)答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++{if(str[i]==’!’){temp[0]=’a’;//替換成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=‘b’;strcat(des,temp);//替換成‘b’}elseif(str[i]==‘*’){strcat(des,str2);//替換成str2}else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}}知識(shí)點(diǎn)解析:(1)由審題分析可知,利用循環(huán)中不斷檢索s仃字符串每一個(gè)字符,循環(huán)變量i從0開(kāi)始,直到到了str字符結(jié)束,即srt[i]==NULL為循環(huán)判斷結(jié)束條件。(2)在循環(huán)體內(nèi),用ifelse語(yǔ)句判斷是不是“!”、“&”或“*”這些特定的字符,如果是這些特定的字符則進(jìn)行相應(yīng)的替換,如果不是則將該字符直接加在des后面。(3)字符串的連接可以使用字符串連接函數(shù)strcatO,將新字符連接在des后面,即strcat(des,temp)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)對(duì)文件以追加的方式打開(kāi)文件。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義m、n為類TestClass的公有int型數(shù)據(jù)成員,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義P為類TestClass的數(shù)據(jù)成員指針,并指向類TestClass數(shù)據(jù)成員m,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義P指向類TestClass數(shù)據(jù)成員n,請(qǐng)?jiān)谧⑨專狭狭狭?料料料料后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include#include#include#includeusingnamespacestd;voidWriteFile(intX){ofstreamoutl;∥********1********outl.open(”modi3.txt”,);outl<標(biāo)準(zhǔn)答案:(1)將“outl.open("modi3.txt",);”補(bǔ)充完整為:outl.open(”modi3.txt”,ios—base::app);(2)添加語(yǔ)句:intm,n;(3)添加語(yǔ)句:intTestClass::*p=&(TestClasS::m);(4)添加語(yǔ)句:P=&(TestClasS::n);知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的maha主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類TestClass和函數(shù)ClearFile0實(shí)現(xiàn)各種輸出操作。解題思路(1)題目1要求“對(duì)文件以追加的方式打開(kāi)文件”。文件輸出輸入方式的設(shè)置值,以ios::app方式是以輸出方式打開(kāi)文件,寫入的數(shù)據(jù)添加在文件末尾,即第1個(gè)標(biāo)識(shí)下語(yǔ)句補(bǔ)全為“outl.open(”modi3.txt”,ios_base::app);”。(2)題目2要求“定義m、n為類TestClass的公有int型數(shù)據(jù)成員”。只需在程序中的TestClass類中的public區(qū)域添加m、n的定義即可。即在第2個(gè)標(biāo)識(shí)下添加“intm,n;”。(3)題目3要求“定義P為類TestClass的數(shù)據(jù)成員指針,并指向類TestClass數(shù)據(jù)成員m”。程序中類TestClass數(shù)據(jù)成員m為:TestClass::m,定義P為類TestClass的數(shù)據(jù)成員指針語(yǔ)句為:TestClass::*p,將其指向前面的數(shù)據(jù)成員m,即為“intTestClass::p=&(TestClass::m);”。(4)題目4要求“定義P指向類TestClass數(shù)據(jù)成員n”。類TestClass數(shù)據(jù)成員n語(yǔ)句為TestClass::n,用P指向類TestClass數(shù)據(jù)成員n,添加的語(yǔ)句即“p=&(TestClass::n);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:TestClass1TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#include#includestruCtTestClass0{//********error********virtualvoidfun();};classTestClassl:publicTestClass0{voidfun(){cout<<"TestClass1"<fun();//********error********p=*obj2;p->fun();return;}標(biāo)準(zhǔn)答案:(1)virtualvoidfun()=0;(2)P=&obj1;(3)P=&obj2;知識(shí)點(diǎn)解析:(1)如果在基類中并不使用這個(gè)虛函數(shù),其返回值也是沒(méi)有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun()應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)的時(shí)候初始化為0的函數(shù)。即第1個(gè)標(biāo)識(shí)下的“virtualvoidfun0:0;”。(2)第2個(gè)標(biāo)識(shí)下的p為指針變量,將對(duì)象obj1賦值給p,實(shí)際上是p指向?qū)ο髈bj1的地址,所以“p=*obj1:”修改為“P=&obj1;”。(3)第3個(gè)標(biāo)識(shí)下的“p=*obj2;”語(yǔ)句同(2),修改為“p=&obj2;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(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’&&str[i]<=’z’)//比較是否是小寫字母{des[i]=str[i]-’a’+’A’;//替換成大寫字母}else{des[i]=str[i];//其他情況不變}des[i+1]=0;}知識(shí)點(diǎn)解析:(1)由審題分析可知,可利用循環(huán)來(lái)逐個(gè)檢索str中的字符,循環(huán)變量i從0開(kāi)始,直到str數(shù)組的結(jié)束,即str[i]==0為循環(huán)結(jié)束條件。(2)小寫字母的判別方式為:str[i]>=’a’&&str[i]<=’z’,即該字符比’z’小,而且比’a’大,如果滿足該條件則在該字符基礎(chǔ)上加上(’A’-’a’)值轉(zhuǎn)換為大寫字母;如果是其他字符的話,無(wú)需轉(zhuǎn)換,直接剛該字符放到des數(shù)組中。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有成員變量year、month、day,分別表示年、月、日,類型為int。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成構(gòu)造函數(shù),分別給year、month、day賦值,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成重載符號(hào)“+=”的定義,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成print()打印函數(shù),如2008年8月8日到屏幕和文件modi3.txt格式相同,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#include#include#includeusingnamespacestd;voidWriteFile(intc){ofstreamout1;out1.open("modi3.txt",iosbase::app);out1<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intyear,month,day;(2)添加語(yǔ)句:year=y;month=m;day=d;(3)添加語(yǔ)句:Date&operator+=(intm)(4)添加語(yǔ)句:cout<知識(shí)點(diǎn)解析:(1)題目l要求“定義私有成員變量year、month、day”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成構(gòu)造函數(shù),分別給year、month、day賦值”。在程序中“Date(inty,intm,intd)”的構(gòu)造函數(shù)中添加給year、month、day賦值的語(yǔ)句,即在第2個(gè)標(biāo)識(shí)下添加“year=y;month=m;day=d;”。(3)題目3要求“完成重載符號(hào)“+=”的定義”。在C++中,運(yùn)算符重載的定義方法是定義一個(gè)重載運(yùn)算符的函數(shù),格式為函數(shù)operator+重載運(yùn)算符號(hào)+,所以這里補(bǔ)全“Date&operator+=(intm)”。(4)題目4要求“完成函數(shù)print()打印函數(shù)”。在C++中的print()函數(shù)中補(bǔ)全其打印功能,即在第四個(gè)標(biāo)識(shí)下添加“cout<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:1121注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#include<iostream.h>classTestClass{//********error********//********error********constintj;public:TestClass(){//********error********Staticinti=0;cout<<++i<<endl;cout<<j<<endl;}};voidmain(){TestClassobj1;TestClassobj2;obj2:j+=obj1.j;return;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)intj;(3)添加語(yǔ)句:j=1;知識(shí)點(diǎn)解析:(1)打開(kāi)modi1.cpp,調(diào)試程序,顯示錯(cuò)誤提示為“modi1.cpp(22):errorC2248:’j’:cannotaccessprivatememberdeclaredinclass’TestClass’”,第1個(gè)標(biāo)識(shí)下的i變量由于被定義為私有的,其他函數(shù)不可獲得,這里應(yīng)該是public型,所以在第1個(gè)標(biāo)識(shí)下添加“public:”。(2)程序中對(duì)于j的調(diào)用,說(shuō)明j并不是常量,所以修改J的定義,將其定義為變量,而不是常變量,即修改第2個(gè)標(biāo)識(shí)下語(yǔ)句為“intj;”。(3)題目中要求調(diào)用對(duì)象,輸出i的值為1。原程序中j變量的使用并沒(méi)有賦初始化值,輸出值為亂碼,所以第三個(gè)標(biāo)識(shí)下添加“j=1;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(int*ar,intn)的功能是將指定的有序數(shù)組壓縮成各元素互不相同的有序數(shù)組,即相同數(shù)只保留一個(gè),多余的被刪除。并返回互不相同的元素的個(gè)數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#1nclude<10Stream>intfun(int*a,intn){}voidmain(){intA[]={6,6,5,4,4,3,3,2,1};intj=fun(A,sizeof(A)/sizeof(int));for(inti=0;i<j;i++){std::cout<<A[i]<<’’;}std::cout<<std::endl;return;}標(biāo)準(zhǔn)答案:intj;intk:0;//指向數(shù)組第一個(gè)元素j=1;//指向數(shù)組第二個(gè)元素while(j<n)//將本次循環(huán)k指向的元素依次與其他元素比較,如果不同,則存入數(shù)組{if(a[J]!=a[k]){a[++k]=a[j];//k指向下一個(gè)元素}j++;}returnk+1;//為新數(shù)組大小知識(shí)點(diǎn)解析:(1)首先指向數(shù)組第一個(gè)元素a[k],然后將第二元素a[j]與它比較,不同存入數(shù)組第二個(gè)元素(a[++k])。(2)同時(shí),將被比較的位置向后移動(dòng)一位(j++)。循環(huán)直到數(shù)組的最后一個(gè)元素比較完畢。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)重載運(yùn)算符int,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)重載運(yùn)算符“<<”請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)在主函數(shù)main()中定義變量i,并調(diào)用對(duì)象obj的int運(yùn)算符,給變量賦初值為10,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)調(diào)用obi的“<<”運(yùn)算符輸出:HelioTest注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include<iostream>usingnamespacestd;classTestClass{public://********1********{cout<<"int"<<endl;return10;}//********2********{cout<<str<<endl;}};intmain(){TestClassobj;//********3********//********4********return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:operator.int()(2)添加語(yǔ)句:operator<<(char*str)(3)添加語(yǔ)句:inti=int(obj);(4)添加語(yǔ)句:obj<<"HelloTest";知識(shí)點(diǎn)解析:(1)題目1要求“重載運(yùn)算符int”的定義。運(yùn)算符重載的方法是定義一個(gè)重載運(yùn)算符的函數(shù),其一般格式為:函數(shù)類型operator運(yùn)算符名稱(形參列表){對(duì)運(yùn)算符的重載處理}。所以第1個(gè)標(biāo)識(shí)下,重載運(yùn)算符int的語(yǔ)句為“operatorint()”。(2)題目2要求“重載運(yùn)算符‘<<’”。同(1),第2個(gè)標(biāo)識(shí)下“<<”的重載函數(shù)定義為“operator<<(char*str)”。(3)題目3要求“在主函數(shù)main()中定義變量i,并調(diào)用對(duì)象obi的int運(yùn)算符,給變量賦初值為10。”定義變量i,即inti?!皁peratorint()”中的返回值為10,所以調(diào)用對(duì)象obj的int運(yùn)算符,給變量賦初值為10,就是int(obj),即第三個(gè)標(biāo)識(shí)下添加“inti=int(obj);”。(4)題目4要求“調(diào)用obj的“<<”運(yùn)算符輸出“HelloTest””。重載運(yùn)算符“<<”后,不僅能輸出標(biāo)準(zhǔn)類型數(shù)據(jù),而且可以輸出用戶自己定義的類對(duì)象。所以直接添加要輸出的字符串即可,即“obj<<"HelloTest";”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:100注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#includeStatiCintx=50;intt=0;int*func(intX,intY,intz){t=t+x+y+Z;∥********error********returnt;};voidmain(){inty=30;intx=10;intz=20;∥********error********x=x;∥********error********cout<標(biāo)準(zhǔn)答案:(1)return&t;(2)x=::x;(3)cout<<*func(x,y,z)<知識(shí)點(diǎn)解析:程序當(dāng)中定義了全局靜態(tài)變量x,主函數(shù)內(nèi)又定義了一個(gè)和靜態(tài)變量x重名的變量x,在使用時(shí)需要注意區(qū)分這兩個(gè)變量。函數(shù)func(intx,inly,intz)返回一個(gè)整型數(shù)據(jù)指針,功能是將參數(shù)x,y,z三者求和,通過(guò)指針?lè)祷剡\(yùn)算結(jié)果。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)sum(intn)計(jì)算在n范圍內(nèi),能被7和1l整除的所有整數(shù)的和(包括n在內(nèi))。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。#includedoublesum(intn){}voidmsin(){cout<標(biāo)準(zhǔn)答案:intresult=0;for(inti=11;i<=n;i++){if((i%7==0)&&(i%1]==0)){result+:i;}}returnresult;知識(shí)點(diǎn)解析:函數(shù)sum(intn)的功能是實(shí)現(xiàn)計(jì)算在n范圍內(nèi),能被7和11整除的所有整數(shù)的和(包括n在內(nèi)),可采用循環(huán)的方式從11開(kāi)始到n逐個(gè)尋找能被7和11整除的數(shù),如果能同時(shí)被7和11整除則加到累加變量中。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成CMyClass的構(gòu)造函數(shù),請(qǐng)改正注釋∥********1********后的錯(cuò)誤。(2)完成mnc0函數(shù)定義,請(qǐng)改正注釋∥********2********后的錯(cuò)誤。(3)初始化CmyClass的成員變量Number3為4,請(qǐng)改正注釋∥********3********后的錯(cuò)誤。(4)完成func()函數(shù),請(qǐng)改正注釋∥********4********后的錯(cuò)誤。輸出的結(jié)果為:Number1=12Number2=18Number3=16Number1=4Number2=2Number3=19注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#includeclassCMyClass{public:∥********1********CMyClass(inti,intj){Number1=i;Number3+=i;}voiddisplay(){cout<<“Number1=”<標(biāo)準(zhǔn)答案:(1)將“CMyClass(inti,intj)”補(bǔ)充完整為:CMyClass(inti,intj):Number2(j)(2)添加語(yǔ)句:friendvoidfunc();(3)添加語(yǔ)句:intCMyClass::Number3=4;(4)將“obj.AddNum()”補(bǔ)充完整為:obj.AddNum(2);知識(shí)點(diǎn)解析:程序中定義了CMyClass類,其含有3個(gè)成員變量和多個(gè)成員函數(shù),成員變量Number2為常成員,Number3為靜態(tài)成員。display()函數(shù)輸出3個(gè)成員變量的值,AddNum(inti)函數(shù)改變靜態(tài)成員變量Number3的值,在函數(shù)func()內(nèi)部,訪問(wèn)了類的私有成員,而且rune0不屬于類的成員函數(shù),故函數(shù)func()為類cmyclass的友元函數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正錯(cuò)誤,使得程序正確執(zhí)行,并且輸出以下語(yǔ)句:TestClass1:0TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#includestructTestClass1{TestClass1(inti=0){mi=i;}voidprint(){cout<<“TestClassl:”<標(biāo)準(zhǔn)答案:(1)public:(2)TeStClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;知識(shí)點(diǎn)解析:程序要求輸出TestClass1:0和TestClass2。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先定義TestClass1和TestClass2類型的變量,然后通過(guò)調(diào)用其中的print成員函數(shù)實(shí)現(xiàn)輸出結(jié)果。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。完成fun()函數(shù),其功能是:將兩個(gè)從小到大有序數(shù)組a和b,復(fù)制合并出一個(gè)有序整數(shù)序列c,其中形參n和m分別是數(shù)組a和b的元素個(gè)數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。{}includevoidfun(inta[],intn,intb[],intm,int*c){}voidmain(){intA[]={3,5,7,9,11,18,21);intB[]={6,15,19,21,39);intC[25],i;for(i=0;i<25;i++)C[i]=0;cout<<“A[]=”;for(i=0;i<7;i++)cout<標(biāo)準(zhǔn)答案:Inti,j];for(i=j=0;i知識(shí)點(diǎn)解析:(1)該程序功能是將兩個(gè)從小到大有序數(shù)組a和b,復(fù)制合并出一個(gè)有序整數(shù)序列c。它的解題思路,因?yàn)橐喜⒌臄?shù)組是有序數(shù)組,所以在循環(huán)中依次比較兩個(gè)數(shù)組中的元素大小,如果它比另一個(gè)數(shù)組的元素小,那么將其拷貝到c,并將其向后移動(dòng),直到數(shù)組結(jié)尾。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(inta[],intn,intb[],intm,int*c)中的a,b參數(shù)為要合并的數(shù)組,n和m為兩個(gè)數(shù)組的大小,c為合并的結(jié)果。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成類Rect的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)變量left、right、top、bottom的初始化,缺省值都為0,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類Rectangle的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成計(jì)算矩形對(duì)角線長(zhǎng)度函數(shù)Diagonal(),請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成計(jì)算周長(zhǎng)函數(shù)Girth(),請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。程序輸出:50140注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include#includeclassRectangle{public:intleft,rightttop,bottom;∥********1********{left=i;right=r;top=t;bottom=b;}∥********2********{left=rc.left;right=rc.right;top=rc.top;bottom=rc.bottom;}floatDiagonal(){∥********3********return}intGirth(){∥********4********return}};intmain(){Rectanglerect(20,50,40,80);Rectanglerect2(rect);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:Rectangle(int1,intr,intt,intb)(2)添加語(yǔ)句:Rectangle(Rectangle&rc)(3)將“return”補(bǔ)充完整為:returnsqrt((right—left)*(right—left)+(bottom—top)*(bottom—top));(4)將“return”補(bǔ)充完整為:return2*((right—left)+(bottom—top));知識(shí)點(diǎn)解析:類Rectangle是描述了一個(gè)矩形,私有成員分別描述矩形的坐標(biāo)值,構(gòu)造函數(shù)給私有數(shù)據(jù)成員賦初值。Rectangle類的Diagonal()和Girth()分別計(jì)算矩形的對(duì)角線長(zhǎng)度和周長(zhǎng),可通過(guò)矩形的長(zhǎng)和寬計(jì)算得到。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾proj1下的工程proj1,其中定義了一個(gè)CD類。程序中位于每個(gè)//ERROR**********found**********下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以更正,不得修改程序的其他部分。更正后程序的輸出應(yīng)該是:歌唱祖國(guó)30義勇軍進(jìn)行曲95注意:只能修改每個(gè)//ERROR**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>#include<cstring>usingnamespacestd;C1assCD{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<<name[20]<<’’<<number<<end1;}};voidmain(){CDdx,dy;dx.init("歌唱祖國(guó)",30);dy.init("義勇軍進(jìn)行曲",3*dx.getNumber()+5);dx.output();dy.output();}標(biāo)準(zhǔn)答案:(1)strcpy(name,aa);(2)returnname;(3)cout<<name<<’’<<number<<end1;知識(shí)點(diǎn)解析:程序定義CD類,它包含兩個(gè)數(shù)據(jù)成員:字符數(shù)組name和整型變量number;還包含四個(gè)公有成員函數(shù),init()函數(shù)接收兩個(gè)參數(shù),用參數(shù)對(duì)數(shù)據(jù)成員進(jìn)行賦值;getName()函數(shù)返回?cái)?shù)據(jù)成員name;getNumber()函數(shù)返回?cái)?shù)據(jù)成員number;output()函數(shù)將數(shù)據(jù)成員name和number輸出。CD類的定義體中,有三個(gè)錯(cuò)誤:(1)init()函數(shù)將形參aa賦給name,由于name是字符數(shù)組,所以不能通過(guò)簡(jiǎn)單的賦值運(yùn)算符進(jìn)行賦值,應(yīng)該使用strcpy()函數(shù)將形參aa指向的字符串拷貝到name中。(2)getName()函數(shù)的返回值為char*類型,所以函數(shù)體的return語(yǔ)句應(yīng)該返回name,而不是name指向的字符串。(3)output()函數(shù)需要輸出兩個(gè)數(shù)據(jù)成員,輸出字符數(shù)組時(shí),只需要給出數(shù)組名name即可。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾proj2下的工程proj2,其中有兩個(gè)類:一是銷售類(sale),用于表示按照一件商品的基本價(jià)格進(jìn)行銷售;另一個(gè)是打折銷售類(DiscountSale),用于表示在基本價(jià)格基礎(chǔ)上按一個(gè)折扣比例進(jìn)行銷售。DiscountSale類繼承了sale類。類的主要數(shù)據(jù)成員的含義和成員函數(shù)的功能要求在程序注釋中有說(shuō)明。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,完成程序的功能。此程序的正確輸出結(jié)果應(yīng)為:Discountitemischeaper.Savingis0.1注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classSale{public:Sale();//默認(rèn)構(gòu)造函數(shù),將price初始化為0Sale(doublethe_price);//構(gòu)造函數(shù),用the_price初始化pricevirtualdoublebill()const;//返回當(dāng)前商品的價(jià)格(基本價(jià))doublesavings(constSale&other)const;//返回參數(shù)other所引用的對(duì)象比當(dāng)前對(duì)象便宜的差價(jià)protected:doubleprice;//商品的基本價(jià)格(不打折的價(jià)格)};Sale∷Sale():priceC0){}Sale∷Sale(doublethe_price):price(the_price){}doubleSale∷bill()const{returnprice;}doubleSale∷savings(constSale&other)const{//ERROR******found******_______//返回當(dāng)前對(duì)象價(jià)格比other貴多少的差價(jià)}classDiscountSale:publicSale//打折銷售類繼承銷售類{public:DiscountSale();//默認(rèn)構(gòu)造函數(shù),將discount初始化為0DiScountSale(doublethe_price,doublethe_discount);//構(gòu)造函數(shù),the_price是基本價(jià)格;the_discount是折扣百分比virtualdoublebill()const;//返回本商品銷售價(jià)格(即打折以后的實(shí)際售價(jià),覆蓋了基類的bill函數(shù))protected:doublediscount;//折扣百分比。例如降價(jià)至原價(jià)的70%,此成員值應(yīng)為70},DiscountSale∷DiscountSale():discount(0{}DiScountSale∷DiscountSale(doublethe_price,doublethe_diScount):Sale(the_price),discount(the_discount){}doubleDiscOuntSale∷bill()const{doublefraction=discount/100;//******found******_______;//返回本對(duì)象打折以后的實(shí)際售價(jià)}booloperator<(constSale&first,constSale&Second){//******found******_______;//判斷是否first價(jià)格低于second價(jià)格}intmain(){SaleSimple(10.00);DiscountSalediScount(11.00,90);if(discount<simple){cout<<"DiScountitemischeaper.\n";//******found******//這里輸出購(gòu)買discount比購(gòu)買simple節(jié)省多少錢cout<<"Savingis"<<_______<<end1;}elsecout<<"Discountitemisnotcheaper.\n";return0;}標(biāo)準(zhǔn)答案:(1)returnthis->bill()-other.bill()(2)returnfraction*price(3)returnfirst.bill()<second.bill()//bill()是返回商品的實(shí)際價(jià)格(4)simple.savings(discount)知識(shí)點(diǎn)解析:暫無(wú)解析三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾proj3下的工程proj3,其中定義了一個(gè)字符串變量類StringVar。類成員的說(shuō)明在程序注釋中。請(qǐng)?jiān)冢?*******333********和********666********之間填寫StringVar成員函數(shù)和友元函數(shù)的實(shí)現(xiàn)代碼。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),運(yùn)行時(shí)輸入:HelloKitty此情況下程序的輸出應(yīng)該是:HelloKittyBorgBorg注意:只需在//********333********和//********666********之間填入所編寫的若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//StringVar.h#include<iostream>#include<cstdlib>#include<cstddef>#include<cstring>usingnamespacestd;voidwriteToFile(constchar*path);classStringVar{public:StringVar(intsize);//構(gòu)造函數(shù),size為字符串長(zhǎng)度(字符個(gè)數(shù))初始值;字符串內(nèi)容初始化為空串StringVar(constchara[]);//構(gòu)造函數(shù),用參數(shù)數(shù)組a的內(nèi)容初始化當(dāng)前對(duì)象StringVar(constStringVar&strobj);//復(fù)制構(gòu)造函數(shù)~StringVar(){delete[]value;};//析構(gòu)函數(shù)intlength()const{returnstrlen(value);}//從輸入流ins輸入一個(gè)字符串,其中可以包括空格voidinput_line(istream&ins);//返回字符串首地址char*getValue()const{returnvalue;}private:char*value;//字符串首地址intmax_length;//字符串最大長(zhǎng)度(字符個(gè)數(shù)最大值)};//將the_string通過(guò)輸出流outs輸出ostream&operator<<(ostream&outs,constStringVarthe_string);//main.cpp#include<iostream>#include<string>#include"StringVar.h"//*********333*********//*********666*********intmain(){StringVarnamel(30),name2("Borg");name1.inputline(cin);StringVarname3(name2);cout<<name1<<end1;cout<<name2<<end1;cout<<name3<<end1;writeToFile(".、\\");return0;}//writeToFile.cpp#include<iostream>#include<fstream>#include<sstream>#include<string>usingnamespacestd;#include"StringVar.h"voidwriteToFile(constchar*path){charfilename[30];strcpy(filename,path);strcat(filename,"out.dat");ofstreamfout(filename);istringstreamis(string("JennyZheng"));StringVarnamel(40),name2("John");name1.input_line(is);StringVarname3(name2);fout<<name1<<name2<<name3;fout.close();}標(biāo)準(zhǔn)答案:StringVar∷StringVar(intsize):max_length(size)//使用成員初始化列表初始化max_length{value=newchar[size];value[0]=’\0’;}StringVar∷StringVar(constchara[]){max_length=strlen(a)+1;value=newchar[max_length];strcpy(value,a);}StringVar∷StringVar(constStringVar&strobj){max_length=strobj.max_length;value=newchar[strlen(strobj.value)+1];strcpy(value,strobj.value);}voidStringVar∷input_line(istream&ins){inti=0;charch;while(i<maxlength-1&&(ch=ins.get())!=’\n’){value[i++]=ch;}value[i]=’\O’;}ostream&operator<<(ostream&outs,constStringVarthe_string){outs<<thestring.getValue()<<end1;returnouts;}知識(shí)點(diǎn)解析:暫無(wú)解析國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和三門課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號(hào)從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來(lái)的文件內(nèi)容。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/*********found*********/fp=fopen(filename,【1】);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i標(biāo)準(zhǔn)答案:(1)"rb"(2)>(3)fwrite知識(shí)點(diǎn)解析:填空1:題目中要求從形參filename所指的文件中讀入學(xué)生的數(shù)據(jù),以此可以看出本空應(yīng)該填寫”rb”。填空2:此處的if語(yǔ)句是比較學(xué)號(hào)的大小,如果學(xué)號(hào)大就和學(xué)號(hào)小的換位,以此本空填寫>。填空3:題目要求所有的學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中,因此本空填寫fwrite。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)整型參數(shù)m,計(jì)算如下公式的值。例如,若m=2000,則應(yīng)輸出0.000160。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODIl.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include/*********found*********/fun(intm){doubley=0,d;inti;/*********found*********/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}voidmain(){intn=2000;system("CLS");printf("\nTheresultis%1f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(intm)(2)for(i=100;i<=m;i+=100)知識(shí)點(diǎn)解析:(1)題目要求在函數(shù)fun中求級(jí)數(shù)前m項(xiàng)和??捎醚h(huán)語(yǔ)句,每次計(jì)算級(jí)數(shù)中的一項(xiàng),然后累加。第一處錯(cuò)誤在于定義fun(intm),由函數(shù)的返回值y可知此處應(yīng)該定義為double。fun(intm)。(2)for(i=100,i<=m,i+=100)中是一個(gè)簡(jiǎn)單的語(yǔ)法錯(cuò)誤。for循環(huán)語(yǔ)句的形式為for(表達(dá)式l;表達(dá)式2;表達(dá)式3),其表達(dá)式之間應(yīng)以”;”相隔。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫一個(gè)函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出19、23、29、31、37。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include#include#includevoidfun(intm,intk,intxx[]){}voidmain(){FTLE*wf;intm,n,zz[1000];system("CLS");printf("\nPleaseentertwointegers:");scanf("%d%d",&m,&n);fun(m,n,zz);for(m=0;m標(biāo)準(zhǔn)答案:voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;n=i)/*如果是素?cái)?shù),放入數(shù)組xx中*/xx[n++]=i;}}知識(shí)點(diǎn)解析:本題主要考查素?cái)?shù)的判定方法,如果一個(gè)數(shù)不能被除了1和其自身以外的數(shù)整除,則這個(gè)數(shù)為素?cái)?shù)。本程序使用循環(huán)語(yǔ)句控制需要判斷的數(shù),在循環(huán)體中判斷該數(shù)是否為素?cái)?shù),若是則存入數(shù)組xx中。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,使它能得出正確的結(jié)果。本程序要求屏幕輸出:n=99注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#include∥********error********classTestClasS(){public:∥********error********void~TestClass(){);TestClass(intn){cout<<’n’<<’:’<標(biāo)準(zhǔn)答案:(1)ClasSTestClasS(2)~TestClass(){);(3)};知識(shí)點(diǎn)解析:程序要求輸出n=99。從已給定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先通過(guò)類TestClass中的TestClass構(gòu)造函數(shù)實(shí)現(xiàn)題目要求的輸出。解題思路(1)第1個(gè)標(biāo)識(shí)下的“classTestClass0”類的定義,根據(jù)C++中類的定義格式,類名后面是沒(méi)有括號(hào)的,所以第1個(gè)標(biāo)識(shí)下應(yīng)為“classTestClass”。(2)第2個(gè)標(biāo)識(shí)下的“void~TestClass0{};”是析構(gòu)函數(shù),根據(jù)C++中析構(gòu)函數(shù)的格式中是沒(méi)有函數(shù)類型說(shuō)明的,所以修改為“~TestClass(){};”。(3)根據(jù)C++中類的定義,第三個(gè)標(biāo)識(shí)下類結(jié)束的“}”缺少分號(hào),即修改為“};”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(cha*des,char*str)實(shí)現(xiàn)的功能是:(1)如果字符串最后面有空格,則全部刪除;(2)轉(zhuǎn)換后的數(shù)據(jù)放到des,并且指針作為返回值返回。注意:不能修改程序的其他部分,只能補(bǔ)充convert()函數(shù)。#include#inciude#defineNAXLEN1024char*convert.(char*des,char*sir){}voidmain(){chardest;[NAXI,EN];char*string=“abcdef”;cout;<<string<<“<一一”<<endl;cout<標(biāo)準(zhǔn)答案:intlength=0;inti;for(1ength=0;str[1ength]!=NULL,length++),//求數(shù)組長(zhǎng)度length—-;//下標(biāo)從0一len一1,下標(biāo)減1表示最后一個(gè)字符的下標(biāo)值for(i=1ength,i>=0;i一一){if(str[i]!=--)//判斷結(jié)尾是否有空格,從后往前判斷直到不是不是空格了跳出循環(huán)break;}for(1ength=0;length<=i;length++){des[1ength]=str[length];//從前面開(kāi)始,逐個(gè)將str中的字符拷貝到des數(shù)組中,不含最后面的空格}des[1ength]=NULL;//最后一個(gè)字符為NULLreturndes;知識(shí)點(diǎn)解析:(1)利用循環(huán)將字符串str的長(zhǎng)度求出,然后從字符串的尾部開(kāi)始檢索,用循環(huán)從字符串的最后一個(gè)字符往前面逐個(gè)檢查,如果該字符不是空格則退出循環(huán),這個(gè)時(shí)候就找到了最后一個(gè)非空格字符所在的下標(biāo)位置,然后從下標(biāo)0開(kāi)始到該位置,逐個(gè)將s仃里面字符拷貝到des中。(2)程序當(dāng)中使用了3次循環(huán):計(jì)算長(zhǎng)度、尋找最后一個(gè)非空格字符和拷貝三個(gè)過(guò)程。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了多個(gè)類,但類不能達(dá)到輸出要求,按照定義的輸出修改函數(shù),使得輸出如下:TestClass3TestClass2TestClass1其中定義的類并不完整,按照要求完成下列操作,將類的定義補(bǔ)充完整。(1)類TestClass2公共繼承于TestClassI,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)print函數(shù)為虛函數(shù),請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)修改語(yǔ)句,使得P指定對(duì)象obj3,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)修改語(yǔ)句,利用P調(diào)用print()函數(shù),完成輸出信息,注釋∥********4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<10Stream>usingnamespacestd;classTestClassl{public:voidprint(){cout<<“TestClasSl”<標(biāo)準(zhǔn)答案:(1)將“classTestClass2”補(bǔ)充完整為:classTestClass2:publicTestClassl(2)將“voidprint()”補(bǔ)充完整為:virtualvoidprint()(3)將“p=obj3;”修改為:p=&obj3;(4)將“P.print();”修改為:P一>print();知識(shí)點(diǎn)解析:本題的功能是通過(guò)print虛函數(shù)將字符串輸出。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類和成員函數(shù)實(shí)現(xiàn)各種輸出操作。解題思路(1)題目1要求“類TestClass2公共繼承于TestClassl”。從已有的類產(chǎn)生一個(gè)新的子類,成為類的派生。聲明派生類的一般形式為:class派生類名:[繼承方式]基類名。根據(jù)題目中的要求以及派生類的一般形式,第1個(gè)標(biāo)識(shí)下添加語(yǔ)句“classTestClass2:publicTestClass1”。(2)題目2要求“print函數(shù)為虛函數(shù)”。在C++中,用virtual聲明的函數(shù)為虛函數(shù),因此第2個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“vimlalvoidprint()”。(3)題目3要求“使得P指定對(duì)象obj3”。P為指針變量,obj3為類的對(duì)象,將一個(gè)指針變量指向另一個(gè)變量,只要把被指向的變量的地址賦給指針變量即可。取對(duì)象obj3地址的語(yǔ)句為&obj3,所以這里補(bǔ)全“p=&obj3;”。(4)題目4要求“利用P調(diào)用print()函數(shù)”。C++中用”-’>’運(yùn)算符實(shí)現(xiàn)成員訪問(wèn),因此調(diào)用print()函數(shù),應(yīng)將第4個(gè)標(biāo)識(shí)下修改為“p->print0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程proj1。該工程中包含程序文件mmn.cpp,其中有類CDate(“日期”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:原日期:2005—9—25更新后的日期:2006—4—1注意:只修改每個(gè)“//ERROR****fould****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include#includeusingnamespacestd;classCDate//日期類{//ERROR**********found***********protected:CDate(){};CDate(intd,intm,inty){//ERROR**********found***********SetDate(intday=d,intmonth=m,intyear=y);};voidDisplay();//顯示日期voidSetDate(intday,intmonth,intyear)//設(shè)置日期{m_nDay=day;mnNonth=month;mnYear=year;)private:intm_nDay;//日intmnNonth;//月intmnYear;//年};voidCDate::Display()//顯示日期{//ERROR**********found***********cout<標(biāo)準(zhǔn)答案:(1)public:(2)SetDate(d,m,y);(3)cout<知識(shí)點(diǎn)解析:本題考查CDate類,其中涉及構(gòu)造函數(shù)和成員函數(shù)。判斷函數(shù)是公有成員還是保護(hù)成員,主要通過(guò)在主函數(shù)中函數(shù)的調(diào)用來(lái)確定,如果函數(shù)在主函數(shù)中被調(diào)用則說(shuō)明是公有成員,否則為私有成員或者保護(hù)成員?!窘忸}思路】(1)通過(guò)主函數(shù)中成員函數(shù)的調(diào)用可知這里應(yīng)該為公有成員,而且構(gòu)造函數(shù)必須為公有繼承。(2)主要考查考生對(duì)成員函數(shù)的掌握,程序在這里調(diào)用成員函數(shù)SetDate,直接把形參代入即可。(3)題目要求輸出原日期:2005—9—25??梢灾垒敵鲰樞?yàn)椋合容敵瞿?,其次月,最后是日。【解題寶典】主要考查考生對(duì)公有成員,成員函數(shù)的掌握,構(gòu)造函數(shù)一般情況下肯定是公有成員,當(dāng)涉及派生類時(shí)才會(huì)使用保護(hù)成員。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾pmj2下的工程pmj2,其中定義了Employee類和Manager類。Em-ployee用于表示某公司的雇員,其屬性包括姓名(name)和工作部分(dept)。Msxmger是Employee的公有派生類,用于表示雇員中的經(jīng)理。除了姓名和工作部分之外,Manager的屬性還包括級(jí)別(1evel)。Employee類的成員函數(shù)print用于輸出雇員的信息Manager類的成員函數(shù)print負(fù)責(zé)輸出經(jīng)理的信息。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:Name:SallySnlithDept:SaLlesLevel:2注意

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論