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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷17(共9套)(共26題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的proj1工程目錄內(nèi)的proj1.dsw文件,其中在編輯窗口內(nèi)顯示的主程序文件中定義有Xabc類(lèi)和主函數(shù)main。在程序文本中位于每行”//ERROR*********found*********下面的一行有錯(cuò)誤,請(qǐng)加以更正。更正后程序的輸出為:57注意:只允許修改每個(gè)"//ERROR*********found*********下面的一行語(yǔ)句,不允許改動(dòng)程序中的其他任何內(nèi)容。#includeusngnamespacestd;classXabc{int*a;intn;public:Xabc(intaa[],intnn):n(nn){a=newint[n];for(inti=0;i標(biāo)準(zhǔn)答案:(1)a[i]=aa[i];(2)d+=x.GetA(i);(3)intf=x.SumA(5);知識(shí)點(diǎn)解析:(1)Xabc的構(gòu)造函數(shù)需要使用形參aa為成員指針a賦值,函數(shù)體中,首先動(dòng)態(tài)分配n個(gè)連續(xù)的整型變量的內(nèi)存空間,并將內(nèi)存空間的首地址賦給a,然后通過(guò)for循環(huán),使用數(shù)組aa為a的n個(gè)元素的賦值。(2)x是類(lèi)Xabc的對(duì)象,成員a在定義時(shí)沒(méi)有指定訪(fǎng)問(wèn)標(biāo)號(hào),默認(rèn)為private成員,所以這里不能通過(guò)x對(duì)象直接訪(fǎng)問(wèn)a,應(yīng)該通過(guò)公有成員函數(shù)GetA()來(lái)訪(fǎng)問(wèn)。(3)SumA()函數(shù)是類(lèi)Xabc的公有成員函數(shù),需要通過(guò)對(duì)象來(lái)引用,而不能直接引用。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp,請(qǐng)將堆棧類(lèi)的定義補(bǔ)充完整。使程序的輸出結(jié)果為:Theelementofstackare:4321注意:請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,只在橫線(xiàn)處編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#includeusingnamespacestd;constintSize=5;classStack;classItem{public://********found********Item(constint&val):________{}//構(gòu)造函數(shù)對(duì)item進(jìn)行初始化private:intitem;Item*next;friendclassStack;};classStack{public:Stack():top(NULL){}~Stack();intPop();voidPush(constint&);private:Item*top;};Stack::~Stack(){Item*p=top,*q;while(p!=NULL){q=p->next;//********found********_________;//釋放p所指向的節(jié)點(diǎn)p=q;}}intStack::Pop(){Item*temp;intret;//********found********_________;//使temp指向棧頂節(jié)點(diǎn)ret=top->item;top=top->next;deletetemp;returnret;}voidStack::Push(constint&val){Item*temp=newItem(val);//********found********___________;//使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù)top=temp;}intmain(){Stacks;for(inti=1;i標(biāo)準(zhǔn)答案:(1)item(val)(2)delete[]p(3)temp=top(4)temp->next=top知識(shí)點(diǎn)解析:(1)主要考查構(gòu)造函數(shù),對(duì)私有成員進(jìn)行初始化,即item(val)。(2)主要考查使用delete語(yǔ)句釋放指針,一般格式為:delete[]+指針。(3)指向棧頂節(jié)點(diǎn)的是top指針,要使temp指向棧頂節(jié)點(diǎn),故使用語(yǔ)句temp=top;。(4)指向棧頂節(jié)點(diǎn)的是top指針,要使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù),故使用語(yǔ)句temp->next=top;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中定義了MyString類(lèi),一個(gè)用于表示字符串的類(lèi)。成員函數(shù)reverse的功能是將字符串進(jìn)行“反轉(zhuǎn)”。例如,將字符串ABCDEF“反轉(zhuǎn)”后,得到字符串FEDCBA;將字符串ABCDEFG“反轉(zhuǎn)”后,得到字符串GFEDCBA。請(qǐng)編寫(xiě)成員函數(shù)reverse。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此時(shí)程序運(yùn)行中應(yīng)顯示:讀取輸入文件…---反轉(zhuǎn)前---STR1=ABCDEFSTR2=ABCDEFG---反轉(zhuǎn)后---STR1=FEDCBASTR2=GFEDCBA要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//***********333***********”與“//***********666***********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中,輸出函數(shù)WriteToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//mgsering.h#include#includeusingnamespacestd;classMyString{public:MyString(constchar*s){str=newchar[strlen(S)+1];strcpy(str,s);}~MyString(){delete[]str;)voidreverse();friendostream&operator<<(ostream&os,constMyString&mystr){os<voidMyString::reverse(){//***********333***********//***********666***********}intmain(){charinname[128],pathname[80];strcpy(pathname,"");sprintf(inname,"in.dat",pathname);cout<<"讀取輸入文件…\n\n";ifstreaminfile(inname);if(infile.fail()){cerr<<"打開(kāi)輸入文件失敗!";exit(1);}charbuf[4096];infile.getline(buf,4096);MyStringstrl("ABCDEF"),str2("ABCDEFG"),str3(buf);cout<<"---反轉(zhuǎn)前---"\n";cout<<"STR1="<標(biāo)準(zhǔn)答案:Intlength=str上en(Str);//把字符串str的長(zhǎng)度賦值給lenthfor(inti=0,j=length-1;i知識(shí)點(diǎn)解析:主要考查考生對(duì)動(dòng)態(tài)數(shù)組的掌握,先看題目要求:成員函數(shù)reverse的功能是將字符串進(jìn)行“反轉(zhuǎn)”。再由類(lèi)的定義可知,字符串存放在動(dòng)態(tài)數(shù)組str中,由strlen函數(shù)得出字符串的長(zhǎng)度,最后一個(gè)字符的下標(biāo)為length-1,第一個(gè)字符的下標(biāo)為0,將這兩個(gè)字符交換,然后j依次減1同時(shí)i依次加1,繼續(xù)交換,直到i大于j時(shí)停止循環(huá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)行,并使程序的執(zhí)行結(jié)果為:1234543211234321123211211注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。#include#includeVoidmain(){inti,j,k;for(i=5;i>=1;i--){//********error********for(j=1;j<=i;j++)cout<<"";//********error********for(k=1;k>=i;k++)cout<0;k++)cout<標(biāo)準(zhǔn)答案:(1)for(j=1;j<=5-i;j++)(2)for(k=1;k<=i;k++)(3)for(k=i-1;k>0;k--)知識(shí)點(diǎn)解析:(1)分析可知,兩個(gè)循環(huán)負(fù)責(zé)輸出兩半數(shù)值,剛開(kāi)始還有空格,而且空格書(shū)逐行增加,因此也必須用循環(huán)來(lái)實(shí)現(xiàn)輸出空格,即內(nèi)層第一個(gè)小循環(huán)負(fù)責(zé)輸出空格,因此for(j=1;j<=i;j++)應(yīng)改為for(j=1;j<=5-i;j++)。(2)第二個(gè)小循環(huán)負(fù)責(zé)輸出左半部分?jǐn)?shù)值,外層大循環(huán)i從5變到1,而每行前半部分?jǐn)?shù)值的最大值在減小,因此第二個(gè)循環(huán)的循環(huán)變量j與i之和滿(mǎn)足一定關(guān)系,即j<=i,第2個(gè)標(biāo)識(shí)處for(k=1;k>=i;k++)應(yīng)改為for(k=1:k<=i;k++)。(3)第三個(gè)小循環(huán)負(fù)責(zé)輸出右半部分?jǐn)?shù)值,數(shù)值從大變到小,因此循環(huán)變量k的初值為i-1,k逐次變小,即第3標(biāo)識(shí)處for(k=i-1;k>0;k++)應(yīng)改為for(k=i-1;k>0;k--)。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和C代碼,完成空出部分的程序,實(shí)現(xiàn)函數(shù)fun(char*s1,char*s2)將字符串s2連接在字符串s1之后,構(gòu)成一個(gè)首指針為s1的字符串。注意:不能修改函數(shù)的其他部分。#include#defineMAXLINE1000Voidfun(char*s1,char*s2){}Voidmain(){chars1[MAXLINE];chars2[256];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:inti=0;for(i=0;s1[i]!=0;i++);//指向第一個(gè)串尾for(intj=0;s2[j]!=0;j++)//利用循環(huán)將第二個(gè)串拷貝到第一個(gè)串尾{s1[i++]=s2[j];}s1[i]=0;//加尾符知識(shí)點(diǎn)解析:(1)首先利用循環(huán)指向第一個(gè)串尾。(2)然后利用for循環(huán)將第二個(gè)串連接到第一個(gè)串尾。(3)最后在新生成的串尾加尾符號(hào)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,要求編寫(xiě)一個(gè)CMyShape類(lèi),含有求面積求周長(zhǎng)等純虛函數(shù)。然后編寫(xiě)一個(gè)CMyRectangle類(lèi)和CMyCircle類(lèi)繼承CMyShape,并實(shí)現(xiàn)求面積、求周長(zhǎng)的兩個(gè)函數(shù)。在main()函數(shù)中測(cè)試得到下面的結(jié)果:在CMyShape類(lèi)構(gòu)函數(shù)造內(nèi)在CMyCircle類(lèi)構(gòu)造函數(shù)內(nèi)在CMyShape類(lèi)構(gòu)造函數(shù)內(nèi)在CMyRectangle類(lèi)構(gòu)造函數(shù)內(nèi)myCircle:Area=314.159Girth=62.8319myRectangle:Area=900Girth=120具體要求如下:(1)定義求面積純虛函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之處添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義求周長(zhǎng)純虛函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之處添加適當(dāng)?shù)恼Z(yǔ)句。(3)請(qǐng)?jiān)谧⑨專(zhuān)?*******3********和//********4********之處添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#include#definePI3.1415926classCMyPoint{public:intx,y;CMyPoint(inttx,intty):x(tx),y(ty){));classCMyShape{public:CMyShape(){cout<<"在CMyShape類(lèi)構(gòu)造函數(shù)內(nèi)"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualdoubleGetArea()=0;(2)添加語(yǔ)句:virtualdoubleGetGirth()=0;(3)添加語(yǔ)句:myShape=mycircle;(4)添加語(yǔ)句:myshape=myRectangle;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下聲明純虛函數(shù),純虛函數(shù)的定義格式為:virtual<函數(shù)類(lèi)型><函數(shù)名>(<參數(shù)表>)=0,由程序后面的函數(shù)體實(shí)現(xiàn)可知求面積純虛函數(shù)的函數(shù)名為GetArea0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“virtualdoubleGetArea0=0;”。(2)聲明格式和(1)相同,由求周長(zhǎng)的函數(shù)具體實(shí)現(xiàn)可知該函數(shù)的名為GetGirth0,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“virtualdoubleGetGirth()=0;”(3)主函數(shù)中定義了CMyShape類(lèi)對(duì)象指針myShape,CMyCircle類(lèi)對(duì)象指針myCircle,CMyRectangle類(lèi)對(duì)象指針myRectangle,由類(lèi)繼承關(guān)系知,在調(diào)用子類(lèi)的構(gòu)造函數(shù)的時(shí)候,編譯器會(huì)自動(dòng)調(diào)用父類(lèi)的默認(rèn)構(gòu)造函數(shù)來(lái)初始化父類(lèi),因此在實(shí)例化類(lèi)CMyRectangle和類(lèi)CMyCircle的實(shí)例的時(shí)候,抽象父類(lèi)CMyShape的默認(rèn)構(gòu)造函數(shù)會(huì)先被調(diào)用,因此在屏幕上先輸出“在CMyShape類(lèi)構(gòu)函數(shù)造內(nèi)”,然后輸出“在CMyCircle類(lèi)構(gòu)造函數(shù)內(nèi)”,實(shí)例化CMyRectangle對(duì)象的過(guò)程也是如此。同時(shí)由純虛函數(shù)的性質(zhì)知,抽象基類(lèi)不需要實(shí)現(xiàn)純虛函數(shù),它的實(shí)現(xiàn)是在子類(lèi)中完成的,但是通過(guò)用子類(lèi)實(shí)例隱式轉(zhuǎn)換成基類(lèi)實(shí)例,可以使得基類(lèi)實(shí)例具有子類(lèi)實(shí)例的特性,因此可以訪(fǎng)問(wèn)子類(lèi)的成員函數(shù),myShape是基類(lèi)指針,其虛函數(shù)GetArea0和GetGirth()沒(méi)有實(shí)現(xiàn),要求程序輸出面積值和周長(zhǎng)值,只可能是myShape指向子類(lèi)對(duì)象,調(diào)用子類(lèi)的函數(shù)GetArea()和GetGirth()打印輸出,顯然第3個(gè)標(biāo)識(shí)下是myShape指向子類(lèi)CM:yCircle對(duì)象,即myShape=myCircle;。(4)同理第4個(gè)標(biāo)識(shí)下myShape指向子類(lèi)CMyRectangle對(duì)象,即第4個(gè)標(biāo)識(shí)下應(yīng)添加“myShape=myRectangle;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:151注意:.錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。1#include2//********error********3enum4{5Sun,6Mon,7Tue,8Wed,9Thu,i0Fri,11Sat,12//********error********13}MyEnum;14StructStruct15{16//********error********17intFri,18intSun;19};20voidmain()21{22inti=Mon;23MyEnumt=Fri;24Structstrl;25strl.Fri=Mon;26cout<標(biāo)準(zhǔn)答案:(1)enumMyEnum(2)};(3)intFri;知識(shí)點(diǎn)解析:程序當(dāng)中定義了一個(gè)結(jié)構(gòu)體和枚舉類(lèi)型,結(jié)構(gòu)體含有兩個(gè)整型變量,枚舉類(lèi)型含有7個(gè)枚舉元素,7個(gè)枚舉元素的值從0變化至6,即Sun=0,Mon=1,Tue=2,Wed=3,Thu=4,F(xiàn)ri=5,Sat=6。[解題思路](1)第一標(biāo)識(shí)下聲明枚舉類(lèi)型,聲明枚舉類(lèi)型的一般形式為:“enum<枚舉類(lèi)型名>{<枚舉常量列表>};”,程序當(dāng)中把枚舉類(lèi)型名MyEnum放到枚舉聲明后面,顯然不符合枚舉類(lèi)型聲明格式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成“enumMyEnum”。(2)由(1)的分析可知,第2個(gè)標(biāo)識(shí)下也不符合枚舉類(lèi)型聲明格式,應(yīng)以“;”結(jié)束,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“};”。(3)第3標(biāo)識(shí)處聲明結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>;結(jié)構(gòu)體中成員列表中各個(gè)元素是不同的變量,變量之間應(yīng)以分號(hào)隔開(kāi),而不是以逗號(hào)隔開(kāi),因此第3個(gè)標(biāo)識(shí)下應(yīng)改為為“intFri;”0二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)func(intd[],intn)的功能是將長(zhǎng)度為num的數(shù)組d的每一個(gè)數(shù)字是奇數(shù)的擴(kuò)大1倍,并存儲(chǔ)到數(shù)組d中。例如:123456789返回:226410614818將func(intd[],intnum)補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。1#include2voidfunc(intd[],intnum)3{45}6intmain()7{8intData[]=(1,2,3,4,5,6,7,8,9);9func(Data,9);10for(inti=0,i標(biāo)準(zhǔn)答案:1for(inti=0;i知識(shí)點(diǎn)解析:函數(shù)func(intd[],intn)功能是將長(zhǎng)度為num的數(shù)組d的每一個(gè)數(shù)字是奇數(shù)的擴(kuò)大1倍,并存儲(chǔ)到數(shù)組d中,因此可利用循環(huán)來(lái)查找該數(shù)組,如果該元素為奇數(shù)則變?yōu)樵瓉?lái)的兩倍。[解題思路](1)由審題分析可知,利用循環(huán)來(lái)逐個(gè)判斷d[]中的元素,d[]中元素個(gè)數(shù)為hum,因此循環(huán)變量從0變化至num。(2)在循環(huán)內(nèi),用if判斷該元素是不是奇數(shù),即if(d[i]%2!=0),將滿(mǎn)足條件的d[i]擴(kuò)大一倍。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù),請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear()的定義,返回?cái)?shù)據(jù)成員date2是否是閏年的值,是則返回1,否則返回0。請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)設(shè)置SetData()的默認(rèn)時(shí)間為:2004-12-1,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成主函數(shù)main(),完成輸出date2isaleapyear,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。提示:公元紀(jì)年的年數(shù)可以被四整除,即為閏年;被100整除而不能被400整除為平年:被100整除也可被400整除的為閏年。注意:增加或修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。1#include2usingnamespacestd;3classDate4{5public:6//********3********7voidSetDate(intY,intm,intn);8intIsLeapYear();9voidPrint()10{cout<標(biāo)準(zhǔn)答案:(1)intyear,month,day;(2)將“return”補(bǔ)充完整為:return(year%400==0)||(year%4==0&&year%100!=0);(3)將“voidSetDate(inty,intm,intn);”補(bǔ)充完整為:voidSetDate(inty=2004,intm=12,intn=1);(4)將“cout<<"date2is"<<("":"not")<<"aleapyear."<知識(shí)點(diǎn)解析:本題中程序的功能是判斷2004年是否為閏年。其中成員函數(shù)SetDate設(shè)置日期,IsLeapYear函數(shù)判斷是否為閏年。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)Date和和其成員函數(shù)實(shí)現(xiàn)各種功能。[解題思路](1)題目1要求“定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù)”。在程序中的Date類(lèi)中的priate區(qū)域添加數(shù)據(jù)成員year、month、day的定義即可,其中它們的類(lèi)型根據(jù)題目要求定義為int型。即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear0的定義”。公元紀(jì)年的年數(shù)可以被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。用程序語(yǔ)言表達(dá)為“(year%400==0)||(year%4==0&&year%100!=0)”,即在第2個(gè)標(biāo)識(shí)補(bǔ)充的返回值語(yǔ)句為“return(year%400==0)||(year%4==0&&year%100!=0);”。(3)題目3要求“設(shè)置SetData()的默認(rèn)時(shí)間為:2004-12-1”。程序中類(lèi)Date的成員函數(shù)定義為“voidSetDate(inty,intm,intn);”,設(shè)置默認(rèn)時(shí)間為:2004-12-1,就是設(shè)置SetDate函數(shù)中的變量值分別為2004,12,1。即成員函數(shù)的定義語(yǔ)句修改為“voidSetDate(inty=2004,intm=12,intn=1);”。(4)題目4要求“完成主函數(shù)main(),完成輸出date2isaleapyear”。標(biāo)識(shí)4下的語(yǔ)句“cout<<"date2is"<<("":"not")<<"aleapyear."<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Number=7Number=12注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>classCMyClass{public://******error******CMyClass(inti):Number=i{//******error******returnNumber;}voidset(inti){Number=i;}voiddisplay(){cout<<"Number="<<Number<<endl;}private:intNumber;};voidmain(){//******error******CMyClass*p=newCMyClass;p->display();p->set(12);p->display();return;}標(biāo)準(zhǔn)答案:(1)CMyClass(inti):Number(i)(2)應(yīng)刪除:returnNumber;(3)CMyClass*p=newCMyClass(7);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下是聲明構(gòu)造函數(shù),并使用初始化列表完成成員變量的初始化,可知第1標(biāo)識(shí)下的初始化列表錯(cuò)誤,正確的應(yīng)該是“CMyClass(inti:Number(i)”。(2)構(gòu)造函數(shù)不能有返回值,不能用return來(lái)返回值,故第2個(gè)標(biāo)識(shí)下應(yīng)將“returnNumber;”刪除。(3)類(lèi)實(shí)例在不指定構(gòu)造函數(shù)的情況下,調(diào)用的是默認(rèn)無(wú)參數(shù)的構(gòu)造函數(shù),此時(shí)成員變量Number是不確定的,在定義對(duì)象時(shí)應(yīng)使用己定義的構(gòu)造函數(shù),,根據(jù)輸出結(jié)果可知p指向的對(duì)象的Number初始化值為7,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“CMyClass*p=newCMyClass(7);”。二、簡(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和11整除的所有整數(shù)的和(包括n在內(nèi))。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。#include<iostream.h>doublesum(intn){}voidmain(){cout<<sum(80)<<endl;cout<<sum(200)<<endl;cout<<sum(300)<<endl;return;}標(biāo)準(zhǔn)答案:intresult=0;for(inti=11;i<=n;i++){if((i%7==0)&&(i%11==0)){result+=i;}}returnresult;知識(shí)點(diǎn)解析:(1)利用循環(huán)查找能所有小于等于n的能被7和11整除的數(shù),循環(huán)變量i從最小值11開(kāi)始,到n結(jié)束,即11<=i<=n。(2)在函數(shù)中定義累加變量result用來(lái)保存求和結(jié)果,在循環(huán)體內(nèi),逐個(gè)判斷每個(gè)i是否能被7和11整除,即(i%7==0)和(i%11==0)都滿(mǎn)足的話(huà),說(shuō)明i能同時(shí)被7和11整除,將該值加到result上,循環(huán)結(jié)束返回result。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,要求編寫(xiě)一個(gè)CMyShape類(lèi),含有求面積求周長(zhǎng)等純虛函數(shù)。然后編寫(xiě)一個(gè)CMyRectangle類(lèi)和CMyCircle類(lèi)繼承CMyShape,并實(shí)現(xiàn)求面積、求周長(zhǎng)的兩個(gè)函數(shù)。在main()函數(shù)中測(cè)試得到下面的結(jié)果:在CMyShape類(lèi)構(gòu)函數(shù)造內(nèi)在CMyCircle類(lèi)構(gòu)造函數(shù)內(nèi)在CMyShape類(lèi)構(gòu)造函數(shù)內(nèi)在CMyRectangle類(lèi)構(gòu)造函數(shù)內(nèi)myCircle:Area=314.159Girth=62.8319myRectangle:Area=900Girth=120具體要求如下:(1)定義求面積純虛函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之處添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義求周長(zhǎng)純虛函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之處添加適當(dāng)?shù)恼Z(yǔ)句。(3)請(qǐng)?jiān)谧⑨專(zhuān)?*******3********和//********4********之處添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>#include<math.h>#definePI3.1415926classCMyPoint{public:intX,y;CMyPoint(inttx,intty):X(tx),y(ty){}};classCMyShape{public:CMyShape(){cout<<"在CMyShape類(lèi)構(gòu)造函數(shù)內(nèi)"<<endl;}//********1********//********2********protected:};classCMyCircle:publicCmyShape{public:CMyCircle(CMyPointi,doublej):CMyShape(),arcCenter(i),radius(j){cout<<"在CMyCircle類(lèi)構(gòu)造函數(shù)內(nèi)"<<endl;}doubleGetArea(){returnPI*radius*radius;}doubleGetGirth(){return2*PI*radius;}private:CMyPointarcCenter;doubleradius;};classCMyRectangle:publicCmyShape{public:CMyRectangle(CMyPointlt,CMyPointrb):letdTop(it),rightBottom(rb),CMyShape()(cout<<"在CMyRectangle類(lèi)構(gòu)造函數(shù)內(nèi)"<<endl;}DoubleGetArea(){intwidth=abs(rightBottom.x-leftTop.x);intheight=abs(rightBottom.y-leftTop.y);Returnwidth*height;}doubleGetGirth(){intwidth=abs(rightBottom.x-leftTop.x);intheight=abs(rightBottom.y-leftTop.y);return2*(width+height);}private:CMyPointleftTop,rightBottom;};voidmain(){CMyShape*myShape=NULL;CMyCircle*myCircle=newCMyCircle(CMyPoint(5,5),10);CMyRectangld*myRectangle=newCMyRectangle(CMyPoint(0,0),CMyPoint(30,30));//********3********cout<<"myCircle:"<<"Area="<<myShape->GetArea()<<"\t"<<"Girth="<<myShape->GetGirth()<<endl;//********4********cout<<"myRectangle:"<<"Area="<<myShape->GetArea()<<"\t"<<"Girth="<<myShape->GetGirth()<<endl;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualdoubleGetArea()=0;(2)添加語(yǔ)句:virtualdoubieGetGirth()=0;(3)添加語(yǔ)句:myShape=myCircle;(4)添加語(yǔ)句:myShape=myRectangle;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下聲明純虛函數(shù),純虛函數(shù)的定義格式為:virtual<函數(shù)類(lèi)型><函數(shù)名>(<參數(shù)表>)=0,由程序后面的函數(shù)體實(shí)現(xiàn)可知求面積純虛函數(shù)的函數(shù)名為GetArea(),因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“virtualdoubleGetArea()=0;”。(2)聲明格式和(1)相同,由求周長(zhǎng)的函數(shù)具體實(shí)現(xiàn)可知該函數(shù)的名為GetGirth0,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“virtualdoubleGetGirth0=0;”(3)主函數(shù)中定義了CMyShape類(lèi)對(duì)象指針myShape,CMyCircle類(lèi)對(duì)象指針myCircle,CMyRectangle類(lèi)對(duì)象指針myRectangle,由類(lèi)繼承關(guān)系知,在調(diào)用子類(lèi)的構(gòu)造函數(shù)的時(shí)候,編譯器會(huì)自動(dòng)調(diào)用父類(lèi)的默認(rèn)構(gòu)造函數(shù)來(lái)初始化父類(lèi),因此在實(shí)例化類(lèi)CMyRectangle和類(lèi)CMyCircle的實(shí)例的時(shí)候,抽象父類(lèi)CMyShape的默認(rèn)構(gòu)造函數(shù)會(huì)先被調(diào)用,因此在屏幕上先輸出“在CMyShape類(lèi)構(gòu)函數(shù)造內(nèi)”,然后輸出“在CMyCircle類(lèi)構(gòu)造函數(shù)內(nèi)”,實(shí)例化CMyRectangle對(duì)象的過(guò)程也是如此。同時(shí)由純虛函數(shù)的性質(zhì)知,抽象基類(lèi)不需要實(shí)現(xiàn)純虛函數(shù),它的實(shí)現(xiàn)是在子類(lèi)中完成的,但是通過(guò)用子類(lèi)實(shí)例隱式轉(zhuǎn)換成基類(lèi)實(shí)例,可以使得基類(lèi)實(shí)例具有子類(lèi)實(shí)例的特性,因此可以訪(fǎng)問(wèn)子類(lèi)的成員函數(shù),myShape是基類(lèi)指針,其虛函數(shù)GetArea()和GetGirth()沒(méi)有實(shí)現(xiàn),要求程序輸出面積值和周長(zhǎng)值,只可能是myShape指向子類(lèi)對(duì)象,調(diào)用子類(lèi)的函數(shù)GetArea()和GetGirth()打印輸出,顯然第3個(gè)標(biāo)識(shí)下是myShape指向子類(lèi)CMyCircle對(duì)象,即myShape=myCircle;。(4)同理第4個(gè)標(biāo)識(shí)下myShape指向子類(lèi)CMyRectangle對(duì)象,即第4個(gè)標(biāo)識(shí)下應(yīng)添加“myShape=myRectangle;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正main()函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果如下:Constructor.DefaultconstructorAreais12Areais0Areais12注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>classCRectangle{private:doublelength,width;public:CRectangle(){cout<<"Defaultconstructor.\n";}CRectangle(double1,doublew){length=1;width=w;cout<<"Constructor.\n";}voidSet(double1,doublew){this->length=1;this->width=w;}voidGetArea(){cout<<"Areais"<<length*width<<endl;}};voidmain(){CRectangleRectl(3.0,4.0);//******error******CRectangleRect2(1);//******error******CRectangleRect3;Rect1.GetArea();//******error******Rect2.Set(0);Rect2.GetArea();Rect3.GetArea();}標(biāo)準(zhǔn)答案:(1)CRectangleRect2;(2)CRectangleRect3(Rect1);(3)Rect2.Set(0,0);知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)CRectangle()不帶有參數(shù),CRectangle(double1,doublew)帶有2個(gè)參數(shù),在創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù),但是參數(shù)必須匹配,第1個(gè)標(biāo)識(shí)下定義Rect2對(duì)象時(shí),有一個(gè)參數(shù),而類(lèi)CRectangleoe()中并沒(méi)有重載一個(gè)參數(shù)的構(gòu)造函數(shù),編譯后出錯(cuò),因此第1標(biāo)識(shí)下應(yīng)改為“CRectangleRect2;”。(2)Rect3.GetArea()輸出的結(jié)果和Rect1.GetArea()輸出結(jié)果一致,因此對(duì)象Rect3和對(duì)象Rect1兩者具有相同的length和width值,除定義Rect3對(duì)象之外沒(méi)有改變Rect31的length和width值,因此Rect3成員變量的初始化是通過(guò)拷貝構(gòu)造函數(shù)類(lèi)實(shí)現(xiàn)的,即用Rect1對(duì)象去初始化Rect3,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“CRectangleRect3(Rect1):”。(3)Rect2.GetArea()的輸出結(jié)果為0,說(shuō)明Rect2的成員變量length和width值至少一個(gè)為0,而Set()函數(shù)必須有兩個(gè)參數(shù),這里Rect2.Set(0)參數(shù)不匹配,應(yīng)改為“Rect2.Set(0,0);”或者“Rect2.Set(0,5)”,兩個(gè)參數(shù)當(dāng)中至少一個(gè)為0即可。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。補(bǔ)充函數(shù)convert(longs,long*str),使之從低位開(kāi)始取出長(zhǎng)整型變量S中奇數(shù)位上的數(shù),依次存放在數(shù)str中。例如,當(dāng)S中的數(shù)為:7654321時(shí),str中的數(shù)為:7531。注意:請(qǐng)勿改動(dòng)主函數(shù)。#include<iostream.h>voidconvert(longs,long*str){}voidmain(){longs,res;cout<<"pleaseenters:"<<endl;cin>>s;convert(s,&res);cout<<"Theresultis:"<<res<<endl:return;}標(biāo)準(zhǔn)答案:longs1=10;*str=s%10;//先取個(gè)位數(shù)while(s>0)(s=s/100;//每次除以100,*str=s%10*s1+*str;//取除以100后的個(gè)位數(shù),str增加1位s1=s1*10;}知識(shí)點(diǎn)解析:(1)由審題分析可知,奇數(shù)位即為個(gè)位數(shù)、百位數(shù)、萬(wàn)位數(shù)……,取個(gè)位數(shù)比較簡(jiǎn)單,S%10便得到了個(gè)位數(shù)。獲取百位數(shù)可由s/100后,再和10取余得到,同樣萬(wàn)位數(shù)可由s/10000,再和10取余得到,從百位數(shù)開(kāi)始后面的奇數(shù)位都是在上次的基礎(chǔ)上再除以100后再取余數(shù),因此可利用循環(huán)。(2)在循環(huán)外先取S的個(gè)位數(shù),然后進(jìn)入循環(huán),s=s/100,獲取除以100的個(gè)位數(shù)方法為s%10,這個(gè)數(shù)是*str的高一位,乘以它所在*str中的位置的權(quán)值,然后和以前的值相加便得到這次*str值,如此循環(huán),直到s為0為止。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù)的定義,使得數(shù)據(jù)成員變量filename和contex為空,內(nèi)容長(zhǎng)度FileLength為0。請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成析構(gòu)函數(shù),對(duì)contex內(nèi)存的釋放。請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成WriteFile()函數(shù),用來(lái)對(duì)contex內(nèi)容進(jìn)行設(shè)置填充內(nèi)容,如果以前有內(nèi)容,則刪除以前的內(nèi)容,重新填寫(xiě)。請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成CopyFileO函數(shù),完成將參數(shù)對(duì)象的contex的內(nèi)容拷貝到當(dāng)前的文件內(nèi)容中,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classMyFileClass{private:charfilename[64];char*contex;intFileLength;public:MyFileClass(){//********1********contex=NULL;FileLength=0;}~MyFileClass(){if(FileLength)//********2********}voidOpenFile(char*str,intlen){for(inti=0;i<len;i++){filename[i]=str[i];}fiiename[len]=0;FileLength=0;if(contex){delete[]contex;contex=NULL;}}voidWriteFlie(char*str,intlen){if(contex!=NULL)//********3********contex=newchar[len+1];for(inti=0;i<len;i++)contex[i]=str[i];contex[len]=0;FiieLength=len;}voidCopyFile(MyFileClass&file){//********4********}voiddisplay(){cout<<contex<<endl;}};intmain(){MyFileClassfile1,file2;file1.OpenFile("txt1",4);file2.OpenFile("txt2",4);file1.WriteFlie("hello!",6);file2.CopyFile(filel);file1.display();file2.display();return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:filename[0]=0;或filename[0]=NULL;(2)添加語(yǔ)句:delete[]contex;(3)添加語(yǔ)句:deletecontex;(4)添加語(yǔ)句:WriteFlie(file.contex,file.FileLength);知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)MyFileClass()完類(lèi)成員變量的初始化,將數(shù)據(jù)成員變量filename和contex為空,內(nèi)容長(zhǎng)度FileLength為0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“filename[0]=0;”或“filename[0]=NULL;”。(2)析構(gòu)函數(shù)用來(lái)釋放一個(gè)對(duì)象,在對(duì)象刪除前,用它來(lái)做一些清理工作,WriteFlie()函數(shù)會(huì)申請(qǐng)內(nèi)存空間,因此在對(duì)象刪除的時(shí)候必須將這些內(nèi)存空間釋放,這個(gè)工作可以放在析構(gòu)函數(shù)中來(lái)處理,第2個(gè)標(biāo)識(shí)下是釋放由new申請(qǐng)的內(nèi)存空間,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“delete[]contex;”。(3)WriteFile()函數(shù)首先對(duì)contex內(nèi)容清空,第3個(gè)標(biāo)識(shí)下應(yīng)添加“deletecontex;”。(4)CopyFile(MyFileClass&file)函數(shù)完成將參數(shù)file對(duì)象的contex的內(nèi)容拷貝到當(dāng)前的文件內(nèi)容中,可直接調(diào)用WriteFlie()函數(shù),因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“WriteFlie(file.contex,file.FileLength);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(intn)的功能是實(shí)現(xiàn)對(duì)一個(gè)整數(shù)的加密,具體的加密方法是:一個(gè)四位長(zhǎng)的整數(shù),每位數(shù)字加上3然后除以9的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換,然后返回得到的密碼。程序輸出:76542108注意:不能修改其他部分的代碼。#include#includeintfun(intn){}intmain(){inti=1234;cout<標(biāo)準(zhǔn)答案:inti,a[4],t;a[0]=n%10;//取整型n的第一位數(shù)字a[1]=n%100/10;//取整型n的第2位數(shù)字a[2]=n%1000/100;//取整型n的第3位數(shù)字a[3]=n/1000;//取整型n的第4位數(shù)字for(i=0;i<=3;i++)//每位數(shù)字加3,取余{a[i]+=3;a[i]%=9;}t=a[0];//根據(jù)加密算法交換a[0]=a[3];a[3]=t;t=a[1];a[1]=a[2];a[2]=t;returna[3]*1000+a[2]*100+a[1]*10+a[0];//重組,返回加密數(shù)字知識(shí)點(diǎn)解析:(1)首先取得要加密整數(shù)的每一位數(shù)字,并存入數(shù)組。(2)根據(jù)加密算法,首先利用循環(huán)實(shí)現(xiàn)每位數(shù)字加3,除以9取余。(3)然后根據(jù)加密算法進(jìn)行數(shù)字交換,最后重組,返回密碼。二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)完成CMyClass的構(gòu)造函數(shù),請(qǐng)改正注釋?zhuān)?*******1********后的錯(cuò)誤。(2)完成fun()函數(shù)定義,請(qǐng)改正注釋?zhuān)?*******2********后的錯(cuò)誤。(3)初始化CMyClass的成員變量Number3為4,請(qǐng)改正注釋?zhuān)?*******3********后的錯(cuò)誤。(4)完成fun()函數(shù),請(qǐng)改正注釋?zhuān)?*******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<<"Numberl="<標(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)解析:(1)第1個(gè)標(biāo)識(shí)下完成類(lèi)的構(gòu)造函數(shù)初始化類(lèi)的成員變量,常成員也必須初始化,并且不能被更新,常數(shù)據(jù)成員的初始化只能通過(guò)構(gòu)造函數(shù)的成員初始化類(lèi)表進(jìn)行,因此第1個(gè)標(biāo)識(shí)下應(yīng)為“CMyClass(inti,intj):Number2(j)”,i用來(lái)初始化Numberl和Number3,i初始化Number2。(2)第2個(gè)標(biāo)識(shí)下完成func()函數(shù)定義,由審題分析可知,函數(shù)func()為類(lèi)的友元,故第2個(gè)標(biāo)識(shí)下應(yīng)為“friendvoidfunc();”。(3)第3個(gè)標(biāo)識(shí)下是靜態(tài)成員的初始化,靜態(tài)數(shù)據(jù)成員的初始化格式為:<數(shù)據(jù)類(lèi)型><類(lèi)名>::<靜態(tài)數(shù)據(jù)成員>=<初始值>,因此第3個(gè)標(biāo)識(shí)下應(yīng)為“intCMyClass::Number3=4;”。(4)成員函數(shù)AddNum()帶有一個(gè)整型參數(shù),因此調(diào)用此函數(shù)時(shí)必須有參數(shù)傳入,可由程序運(yùn)行結(jié)果分析得知傳入的參數(shù)值的大小。在fun()函數(shù)內(nèi),定義CMyClassobj(1,2)后,obj.Numberl=1,obj.Number2=2,Number3=16+1=17,obj.Numberl=4,Number1為4,obj.Number2為常成員其值不會(huì)改變,調(diào)用AddNum()函數(shù)后調(diào)用顯示函數(shù)顯示成員變量值,可知Number3為19,因此AddNum()的參數(shù)為19.17=2,即第4個(gè)標(biāo)識(shí)下應(yīng)為“obj.AddNum(2);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和三門(mén)課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是重寫(xiě)形參filename所指文件中最后一個(gè)學(xué)生的數(shù)據(jù),即用新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來(lái)的數(shù)據(jù)。其他學(xué)生的數(shù)據(jù)不變。請(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,STUn){FILE*fp;/*********found*********/fp=fopen(【1】,"rb+");/*********found*********/fseek(【2】,一(long)sizeof(STU),SEEKEND);/*********found*********/fwrite(&n,sizeof(STU),1,【3】);fclose(fp);}main(){STUt[N]=({10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68),ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j標(biāo)準(zhǔn)答案:(1)filename(2)fp(3)fp知識(shí)點(diǎn)解析:填空1:本空是對(duì)文本文件的打開(kāi),filename所指的文件中的最后數(shù)據(jù)要進(jìn)行重寫(xiě),因此首先是要打開(kāi),因而本空填寫(xiě)filename。填空2:fseek功能是重定位流上的文件指針。用法:intfseek(FILE*stream,longoffset,intfromwhere);本空應(yīng)該填寫(xiě)fp。填空3:因?yàn)轭}目中要對(duì)所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中,因此本空填寫(xiě)fp。知識(shí)點(diǎn)講解:函數(shù)名:fseek功能:重定位流上的文件指針。用法:intfseek(FlLE*stream,longoffset,intfromwhere)。描述:函數(shù)設(shè)置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(zhǔn)(從文件的哪里開(kāi)始偏移)、偏移offset個(gè)字節(jié)的位置。正數(shù)表示正向偏移,負(fù)數(shù)表示負(fù)向偏移。如果執(zhí)行失敗(比如offset超過(guò)文件自身大小),則不改變stream指向的位置。返回值:成功,返回0;否則返回非0值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中規(guī)定輸入的字符串全部為字母,fun函數(shù)的功能是:統(tǒng)計(jì)a所指字符串中每個(gè)字母在字符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫(xiě)),并將出現(xiàn)次數(shù)最高的字母輸出(如果有多個(gè)相同,輸出一個(gè)即可)。例如對(duì)于字符串:dadbcdbabdb,對(duì)應(yīng)的輸出應(yīng)為:b或d。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include#include#includevoidfun(chara[]){intb[26],i,n,max;for(i=0;i<26;i++)/*********found*********/a[i]=0;n=strlen(a);for(i=0;i=’a’&&a[i]<=’z’)/*********found*********/b[a[i]-’A’]++;elseif(a[i]>=’A’&&a[i]<=’Z’)b[a[i]-’A’]++;max=0;for(i=1;i<26;i++)/*********found*********/if(b[max]>b[i])max=i;printf("出現(xiàn)次數(shù)最多的字符是:%c\n",max+’a’);}main(){chara[200];printf("請(qǐng)輸入一個(gè)待統(tǒng)計(jì)的字符串:");scanf("%s",a);fun(a);}標(biāo)準(zhǔn)答案:(1)b[i]=0;(2)b[a[i]一’a’]++;(3)if(b[max]知識(shí)點(diǎn)解析:要統(tǒng)計(jì)字符串中每個(gè)字符在這個(gè)字符串中出現(xiàn)的次數(shù),可以設(shè)數(shù)組b中存放每個(gè)字符出現(xiàn)的次數(shù)b[0]存放字符a的次數(shù),b[1]存放字符b的次數(shù)……。統(tǒng)計(jì)之前為數(shù)組b各元素賦初值為0。然后依次取出字符串的每個(gè)字符進(jìn)行判斷,使對(duì)應(yīng)數(shù)組b加1。max初始值為0,與數(shù)組b中的每個(gè)元素進(jìn)行比較,如果小于,就把下標(biāo)進(jìn)行交換。(1)數(shù)組a存放的是字符串,數(shù)組b為整型數(shù)組存放的是每個(gè)字符的個(gè)數(shù),應(yīng)將數(shù)組b每個(gè)元素初始化為0。(2)小寫(xiě)字母的ASCII碼減去’a’的ASCII即為相應(yīng)字母的下標(biāo)值,相應(yīng)下標(biāo)值的數(shù)組元素的值增加1。(3)最大值小于被比較數(shù)時(shí),把被比較數(shù)的下標(biāo)值賦給max,max中存放的總是當(dāng)前最大值。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(inta[][N],intm),該函數(shù)的功能是使數(shù)組右上半三角元素中的值乘以m。例如,若m的值為2,a數(shù)組中的值為:則返回主程序后a數(shù)組中的值應(yīng)為:注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include#include#include#include#defineN5voidfun(inta[][N],intm){}main(){inta[N][N],m,i,j;FILE*out;;print;f("***Thearray***\n"),for(i=0;i標(biāo)準(zhǔn)答案:voidfun(inta[][N],intm){inti,j;for(j=0;j知識(shí)點(diǎn)解析:本程序?qū)崿F(xiàn)將矩陣中右上半三角元素中的值乘以m,使用循環(huán)語(yǔ)句遍歷數(shù)組元素,第1個(gè)循環(huán)用于控制行坐標(biāo),第2個(gè)循環(huán)用于控制列下標(biāo)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:CMyObject,intheconstrutorCMyObject,inthedestrutor注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#includeclassCMyObject{∥********error********∥********error********CMyObject{cout<<“CMyObject,intheconstrutor”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)CMyObject(){cout<<“CMyObject,intheconstrutor”<知識(shí)點(diǎn)解析:程序中定義了類(lèi)CMyObject,含有一個(gè)構(gòu)造函數(shù)和一個(gè)析構(gòu)函數(shù),在構(gòu)造函數(shù)和析構(gòu)函數(shù)中分別輸出一段字符。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。完成fun()函數(shù),其功能是:求出M行N列二維數(shù)組每行元素中的最小值,并計(jì)算它們的和值。和值通過(guò)形參傳回主函數(shù)輸出。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#iRClude#defimeM2#defimeN4voidfun(inta[M][N],int*sum){}voidmsin(){intx[M][N]={7,6,5,2,4,2,8,3);ints;fun(x,&s);cout<標(biāo)準(zhǔn)答案:inti,j,k,s=0;for(i=0;ia[i][j])k=:;//求得每一行的最小值s+=a[i][k];//最小值求和}*sum=s;//返回求和值知識(shí)點(diǎn)解析:(1)該程序功能是求二維數(shù)組每行元素中的最小值,并計(jì)算它們的和值。本題解題思路基本可以分為兩重循環(huán),外重循環(huán)為對(duì)二維數(shù)組的所有行進(jìn)行循環(huán),內(nèi)重循環(huán)為對(duì)每一行內(nèi)進(jìn)行列循環(huán),求出每一行中的最小值。最后求出這些最小值的和。(2)從己給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(inta[M][N],int*sum)中的a參數(shù)為二維數(shù)組,sum為要求得的和。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。程序通過(guò)繼承關(guān)系,實(shí)現(xiàn)對(duì)姓名的控制。類(lèi)TestClass1實(shí)現(xiàn)對(duì)名字訪(fǎng)問(wèn)的接口,TestClass2實(shí)現(xiàn)對(duì)名字的設(shè)置和輸出。程序輸出為:TestClass2NameMay其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)在類(lèi)TestClassl中定義接口函數(shù)GetName,為純虛函數(shù)。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)函數(shù)GetName20實(shí)現(xiàn)獲得名字的緩存,但是只獲得讀允許操作這個(gè)緩存,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)實(shí)現(xiàn)TestClass2的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成TestClass2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理。請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeclassTestClass1{public:∥********1********};classTestClass2:publicTestClass1{public:voidGetName(){Cout<<“TestClass2Name”<GetName();cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualvoidGetName()=0;(2)添加語(yǔ)句:constchar*GetName2()(3)添加語(yǔ)句:TestClass2(char*str)(4)添加語(yǔ)句:mstr[i]=0;知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)TestClass和接口函數(shù)Gemame實(shí)現(xiàn)各種輸出操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類(lèi)AAA和主函數(shù)main。程序文本中位于每行“//ERROR****found****”下面的一行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:sum=60注意:只修改每個(gè)“//ERROR****found****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#includeusingnamespacestd;classAAA{inta[10];intn;//ERROR********found********private:AAA(intaa[],intnn):n(nn){//ERROR********found********for(inti=0;i標(biāo)準(zhǔn)答案:(1)public:(2)for(inti=0;i知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)肯定是公有成員,所以應(yīng)使用public。(2)主要考查考生對(duì)賦值語(yǔ)句的掌握,因?yàn)閿?shù)組a是私有成員,因此a應(yīng)該在左邊,而數(shù)組aa是形參,要賦值

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論