國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷14(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷14(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷14(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷14(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷14(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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ī)試(操作題)模擬試卷14(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“電風(fēng)扇”)類和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0品牌:清風(fēng)牌,電源:開,風(fēng)速:3品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classElectricFan{//“電扇”類Char*brand;intintensity;//風(fēng)速:0一關(guān)機(jī),1一弱,2一中,3一強(qiáng)public:ElectricFan(constchar*the_brand):intensity(0){brand=newchar[strlen(the_brand)+1];strcpy(brand,thebrand);}~ElectricFan(){delete[]brand;}//ERROR*******found*******constchar*theBrand()const{return*brand;}//返回電扇品牌inttheIntensity()const{returnintensity;}//返回風(fēng)速boolisOn()const{returnintensity>0;}//返回電源開關(guān)狀態(tài)//ERROR*******found*******voidturnOff(){intensity=1;}//關(guān)電扇voidsetIntensity(intinten){//開電扇并設(shè)置風(fēng)速//ERROR*******found*******if(intensity>=1&&intensity<=3)intensity=inten;}voidshow(){cout<<"品牌:"<<theBrand()<<"牌"<<",電源:"<<(isOn()?"開":"關(guān)")<<",風(fēng)速:"<<theIntensity()<<endl;}};intmain(){ElectricFanfan("清風(fēng)");fan.show();fan.setIntensity(3);fan.show();fan.turnOff();fan.show();return0;}標(biāo)準(zhǔn)答案:(1)const.char*theBrand()const{returnbrand;}//返回電扇品牌(2)voidturnOff(){intensity=0;}//關(guān)電扇(3)if(inten>=1&&inten<=3)intensity=inten;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)指針的掌握情況,因?yàn)閎rand是一個(gè)動(dòng)態(tài)指針,*brand表示字符串的首個(gè)字符,brand表示動(dòng)態(tài)數(shù)組,這里要返回動(dòng)態(tài)數(shù)組存儲(chǔ)的品牌名稱。(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目中類的定義中私有成員的定義:intintensity;//風(fēng)速:0一關(guān)機(jī),1一弱,2一中,3一強(qiáng),可知本函數(shù)要關(guān)電扇,因此在這里intensity=0;。(3)主要考查考生對(duì)成員函數(shù)的掌握,根據(jù)題目中函數(shù)的注釋:開電扇并設(shè)置風(fēng)速,可知if語(yǔ)句里要判斷的應(yīng)該是形參inten而不是intensity。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proi2,此工程包含有一個(gè)源程序文件proj2.cpp,其中定義了Stack類和ArrayStack類。Stack是一個(gè)用于表示數(shù)據(jù)結(jié)構(gòu)“?!钡念悾瑮V械脑厥亲址蛿?shù)據(jù)。Stack為抽象類,它只定義了棧的用戶接口,如下所示:公有成員函數(shù)功能push入棧:在棧頂位置添加一個(gè)元素pop退棧:取出并返回棧頂元素ArrayStack是Stack的派生類,它實(shí)現(xiàn)了Stack定義的接口。ArrayStack內(nèi)部使用動(dòng)態(tài)分配的字符數(shù)組作為棧元素的存儲(chǔ)空間。數(shù)據(jù)成員maxSize表示的是棧的最大容量,top用于記錄棧頂?shù)奈恢谩3蓡T函數(shù)push和pop分別實(shí)現(xiàn)具體的入棧和退棧操作。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述功能。此程序的正確輸出結(jié)果應(yīng)為:a,b,cc,b,a注意:只在指定位置編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include<iostream>usingnamespacestd;classStack{public:virtualvoidpush(charc)=0;virtualcharpop()=0;};classArrayStack:publicStack{char*p;intmaxSize;inttop;public:ArrayStack(ints){top=0;maxSize=s;//********found********p=__________;}~ArrayStack(){//********found********______;}voidpush(charc){if(top==maxSize){cerr<<"Overflow!\n";return;}//********found********___________;top++;}charpop(){if(top==0){cerr<<"Underflow!\n";return’\0’;}top--;//********found********___________;}};voidf(Stack&sRef){charch[]={’a’,’b’,’c’};cout<<ch[0]<<","<<ch[1]<<","<<ch[2]<<endl;sRef.push(ch[0]);sRef.push(ch[1]);sRef.push(ch[2]);cout<<sRef.pop()<<",";cout<<sRef.pop()<<",";cout<<sRef.pop()<<endl;}intmain(){ArrayStackas(10);f(as);return0;}標(biāo)準(zhǔn)答案:(1)newchar[s](2)delete[]p(3)p[top]=c(4)retump[top]知識(shí)點(diǎn)解析:(1)主要考查的是ArrayStack類的構(gòu)造函數(shù),在函數(shù)中要為p申請(qǐng)s個(gè)char型空間,應(yīng)使用語(yǔ)句p=newchar[s];。(2)主要考查析構(gòu)函數(shù),使用delete語(yǔ)句釋放指針,即delete[]p;。(3)主要考查push函數(shù),top表示棧頂元素下標(biāo),添加的數(shù)據(jù)放到棧頂,因此使用語(yǔ)句p[top]=c;。(4)主要考查pop函數(shù),輸出棧頂數(shù)據(jù),top表示棧頂元素下標(biāo),因此使用語(yǔ)句returnp[top];。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayvl={1,2,3,4,5}ValArrayv2={2,2,2,2,2}要求:補(bǔ)充編制的內(nèi)容寫在“//*******333*******”與“//********666********”之間。不要修改程序的其他部分。注意:相關(guān)文件包括:main.cpp、ValArray.h。程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測(cè)試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//ValArray.h#include<iostream>usingnamespacestd;classValArray{int*v;intsize;public:ValArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i<size;i++)v[i]=P[i];}ValArray(constValArray&other);~ValArray(){delete[]v;}voidsetElement(inti,intval){v[i]=val;}voidprint(ostream&out)const{out<<’{’;for(inti=0;i<size-1;i++)out<<v[i]<<",";out<<v[size-1]<<’)’;}};voidwriteToFile(constchar*);//main.cpp#include"ValArray.h"ValArray::ValArray(constValArray&other){//********333********//********666********}intmain(){constinta[]={1,2,3,4,5};ValArrayv1(a,5);ValArrayv2(v1);for(inti=0;i<5;i++)v2.setElement(i,2);cout<<"ValArrayv1=";v1.print(cout);cout<<endl;cout<<"ValArrayv2=";v2.print(cout);cout<<endl;writeToFile("");return0;}標(biāo)準(zhǔn)答案:size=other.size;//把對(duì)象數(shù)組的大小賦值給sizev=newint[other.size];//根據(jù)對(duì)象數(shù)組的大小動(dòng)態(tài)分配數(shù)組Vfor(inti=0;i<size;++i)v[i]=other.v[i];//遍歷整爪對(duì)霖的數(shù)組把值other.v[i]放到數(shù)組V中知識(shí)點(diǎn)解析:主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握。由函數(shù)名:ValArray::ValArray(constValArray&other),知道要復(fù)制的對(duì)象是other,對(duì)由ValArray類的成員:int*v;intsize;知道要復(fù)制的內(nèi)容是動(dòng)態(tài)數(shù)組v及整型變量size。動(dòng)態(tài)數(shù)組要使用new語(yǔ)句分配內(nèi)存,最后利用for循環(huán)語(yǔ)句來(lái)完成復(fù)制過(guò)程。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中每個(gè)注釋"//ERROR****found****"之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Theperimeteris62.8Theareais314注意:只修改注釋"//ERROR****found****"的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;constdoublePI=3.14;classCircle{public://ERROR**********found**********Circle(intr){radius=r;}voidDisplay();private:constintradius;};//ERROR**********found**********voidDisplay(){cout<<"Theperimeteris"<<2*PI*radius<<endl;cout<<"Theareais"<<PI*radius*radius<<endl;}intmain(){Circlec(10);//ERROR**********found**********c::Display();return0;}標(biāo)準(zhǔn)答案:(1)Circle(intr):radius(r){}(2)voidCircle::Display()(3)c.Display);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,常變量私有成員只能通過(guò)成員列表進(jìn)行初始化。(2)主要考查考生對(duì)成員函數(shù)的掌握,在定義類的成員函數(shù)時(shí)要加上類名和作用域符。(3)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,調(diào)用成員函數(shù)時(shí)應(yīng)使用標(biāo)識(shí)符’.’。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,此工程中含有一個(gè)源程序文件proj2.cpp,其中定義了Sort類和InsertSort類。Sort是一個(gè)表示排序算法的抽象類,成員函數(shù)mySort為各種排序算法定義了統(tǒng)一的接口,成員函數(shù)swap實(shí)現(xiàn)了兩個(gè)整數(shù)的交換操作。InsertSort是Sort的派生類,它重新定義了基類中的成員函數(shù)mySort,具體實(shí)現(xiàn)了簡(jiǎn)單插入排序法。本程序的正確輸出結(jié)果應(yīng)為:Beforesortinga[]=5,1,7,3,1,6,9,4,2,8,6,Aftersortinga[]=1.1.2.3.4.5.6.6.7.8.9,請(qǐng)首先閱讀程序,分析輸出結(jié)果,然后根據(jù)以下要求在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述功能。(1)將Sort類的成員函數(shù)swap補(bǔ)充完整,實(shí)現(xiàn)兩個(gè)整數(shù)的交換操作;(2)將InsertSort類的構(gòu)造函數(shù)補(bǔ)充完整;(3)將InsertSort類的成員函數(shù)mySort補(bǔ)充完整,實(shí)現(xiàn)簡(jiǎn)單插入排序法(在交換數(shù)據(jù)時(shí),請(qǐng)使用基類的成員函數(shù)swap)。注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)"//****found****"。//proj2.cpp#include<iostream>usingnamespacestd;classSort{public:Sort(int*a0,intn0):a(a0),n(n0){}virtualvoidmySort()=0;staticvoidswap(int&x,int&y){inttmp=x;//**********found**********__________;y=tmp;}protected:int*a;intn;};classInsertSort:publicSort{public:InsertSort(int*a0,intn0)//**********found**********:__________{}virtualvoidmySort(){for(inti=1;i<n;++i)for(intj=i;j>0;--j)if(a[j]<a[j-1])//**********found**********__________;else//**********found**********__________;}};voidfun(Sort&s){s.mySort();}voidprint(int*a,intn){for(inti=0;i<n;++i)cout<<a[i]<<",";cout<<endl;}intmain(intargc,char*argv[]){inta[]={5,1,7,3,1,6,9,4,2,8,6};cout<<"Beforesortinga[]=\n";print(a,11);InsertSortbs(a,11);fun(bs);cout<<"Aftersortinga[]=\n";print(a,11);return0;}標(biāo)準(zhǔn)答案:(1)x=y(2)Sort(a0,n0)(3)swap(a[j],a[j-1])(4)break知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)成員函數(shù)的掌握,題目要求將Sort類的成員函數(shù)swap補(bǔ)充完整,實(shí)現(xiàn)兩個(gè)整數(shù)的交換操作,因此這里是一個(gè)交換操作,程序利用中間值tmp交換x和y的值。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,派生類的構(gòu)造函數(shù)使用成員列表初始化基類。(3)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,題目提示:在交換數(shù)據(jù)時(shí),請(qǐng)使用基類的成員函數(shù)swap。因此這里可以直接調(diào)用swap函數(shù)交換a[j]和a[j-1]的值。(4)主要考查考生對(duì)成員函數(shù)的掌握,當(dāng)條件a[j]<a[j-1]不滿足時(shí),說(shuō)明順序沒問(wèn)題不需要交換,使用break語(yǔ)句跳出本次循環(huán)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3。本題創(chuàng)建一個(gè)小型字符串類,字符串長(zhǎng)度不超過(guò)100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。補(bǔ)充完成proj3.h,重載復(fù)合賦值運(yùn)算符+=。要求:補(bǔ)充編制的內(nèi)容寫在//**********333**********與//**********666**********之間,不得修改程序的基他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。//proj3.h#include<iostream>#include<iomanip>usingnamespacestd;classMiniString{public:friendostream&operator<<(ostream&output,constMiniString&s)//重載流插入運(yùn)算符{output<<s.sPtr;returnoutput;}friendistream&operator>>(istream&input,MiniString&s)//重載流提取運(yùn)算符{chartemp[100];//用于輸入的臨時(shí)數(shù)組temp[0]=’\0’;input>>setw(100)>>temp;intinLen=strlen(temp);//輸入字符串長(zhǎng)度if(inLen!=0){s.length=inLen;//賦長(zhǎng)度if(s.sPtr!=0)delete[]s.sPtr;//避免內(nèi)存泄漏s.sPtr=newchar[s.length+1];strcpy(s.sPtr,temp);//如果s不是空指針,則拷貝內(nèi)容}elses.sPtr[0]=’\0’;//如果s是空指針,則為空字符串returninput;}MiniString(constchar*s=""):length((s!=0)?strlen(s):0){setString(s);}~MiniString(){delete[]sPtr;}//析構(gòu)函數(shù)//*************333***********//+=運(yùn)算符重載MiniString&operator+=(constMiniString&s){}//*************666***********private:intlength;//字符串長(zhǎng)度char*sPtr;//指向字符串起始位置voidsetString(constchar*string2)//輔助函數(shù){sPtr=newchar[length+1];//分配內(nèi)存if(string2!=0)strcpy(sPtr,string2);//如果string2不是空指針,則拷貝內(nèi)容elsesPtr[0]=’\0’;//如果string2是空指針,則為空字符串}};//proj3.cpp#include<iostream>#include<iomanip>#include<fstream>usingnamespacestd;#include"proj3.h"intmain(){MiniStringstr1("World"),str2("Hello");str2+=str1;//使用重載的+=運(yùn)算符cout<<str2<<"\n";writeToFile("");return0;}標(biāo)準(zhǔn)答案:MiniString&operator+=(constMiniString&s){char*pt=newchar[length+1];strcpy(pt,sPtr);intblength=length;length+=s.length;delete[]sPtr;sPtr=newchar[length+1];strcpy(sPtr,pt);delete[]pt;for(inti=0;i<s.length;++i)sPtr[blength+i]=s.sPtr[i];sPtr[length]=’\0’;//添加字符串結(jié)束符return*this;}知識(shí)點(diǎn)解析:主要考查考生對(duì)運(yùn)算符重載的掌握,因?yàn)橛袆?dòng)態(tài)數(shù)組,所以要使用new語(yǔ)句來(lái)重新分配空間。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:CMyObject,intheconstmtor~CMyObject,inthedestrutor注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。1#include<iostream.h>2classCMyObject3{4//******error******56//******error******7CMyObject{cout<<’’CMyObject,intheconstrutor’’<<end1;}8~CMyObject(){cout<<’’~CMyObject,inthedestrutor’’<<end1;}9};10voidmain()11{12CMyObjectobj1;13}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)CMyObject(){cout<<’’CMyObject,intheconstrutor”<<end1;}知識(shí)點(diǎn)解析:程序中定義了類CMyObject,含有一個(gè)構(gòu)造函數(shù)和一個(gè)析構(gòu)函數(shù),在構(gòu)造函數(shù)和析構(gòu)函數(shù)中分別輸出一段字符。(1)構(gòu)造函數(shù)和析構(gòu)函數(shù)均為公有函數(shù),而在C++中默認(rèn)的訪問(wèn)屬性為私有(private),因此構(gòu)造函數(shù)和析構(gòu)函數(shù)必須說(shuō)明為public,即第1個(gè)標(biāo)識(shí)下應(yīng)添加“public:”。(2)函數(shù)定義中在函數(shù)名后均有一對(duì)括號(hào)表示函數(shù)聲明,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“CMyObjectO{cout<<’’CMyObject,intheconstrutor’’<<endl;}”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序,使輸入某年某月某日,可判斷這一天是這一年的第幾天。程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的天數(shù)加起來(lái),然后再加上5天即本年的第幾天(特殊情況:閏年輸入月份大于3時(shí)需考慮多加一天)。注意:只能補(bǔ)充函數(shù)func(intyear,intmonth,intday),請(qǐng)勿改動(dòng)其他部分的內(nèi)容。1#include<iostream.h>2intfunc(intyear,intmonth,intday)3{45}6voidmain()7{8cout<<func(2007,2,1)<<end1;9cout<<func(2007,i0,i0)<<end1;10cout<<func(2008,8,12)<<end1;11return;12}標(biāo)準(zhǔn)答案:1intsum;2intleapyear;3switch(month)/*先計(jì)算某月以前月份的總天數(shù)*/4{5case1:6sum=0;7break;8case2:9sum=31;10break;11case3:12sum=59;13break;14case4:15sum=90;16break;17case5:18sum=120;19break;20case6:21sum=151;22break;23case7:24sum=181;25break;26case8:27sum=212;28break;29case9:30sum=243;31break;32case10:33sum=273;34break;35case11:36sum=304;37break;38case12:39sum=334;40break;41default:42cout<<’’dataerror’’<<end1;43break;44}45sum=sum+day;46if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/47leapyear=1;48else49leapyear=0;50if(1eapyear==1&&month>2)51sum++;52returnsum;知識(shí)點(diǎn)解析:函數(shù)函數(shù)func(intyear,intmonm,intday返回某一天屬于這一年的第幾天,可以把該月之前的所有天數(shù)加起來(lái)再加上本月的第幾天得到返回值,一種特殊情況需要注意,閏年時(shí)2月會(huì)多一天,這個(gè)時(shí)候可以先判斷是否是閏年,如果是再看是不是二月以后,如果是則加在前面結(jié)果的基礎(chǔ)上在加一天。(1)為方便起見,先統(tǒng)計(jì)正常年份下,每個(gè)月的前面有多少天,可以用switch方式查詢,然后再加上本月的日子,很快便得到了這一天是屬于這一年的第幾天。(2)閏年的判斷方法為:if(year%400==0||(year%4==0&&year%100!=0)),if語(yǔ)句為真則為閏年,二月之后的日期后需要加一天。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成類MyArrayClass的構(gòu)造函數(shù),申請(qǐng)數(shù)組的大小,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類MyArrayClass的析構(gòu)函數(shù),釋放數(shù)組,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成重載運(yùn)算符“[]”,用來(lái)獲得指定下標(biāo)的數(shù)據(jù),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成函數(shù)SetElement(),用來(lái)設(shè)置指定下標(biāo)的數(shù)據(jù)。如果數(shù)據(jù)沒有超出范圍,則設(shè)置數(shù)據(jù),并返回1,否則返回0,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定的位置添加語(yǔ)句外,并不要更改程序中的其他語(yǔ)句。1#include<iostream.h>2template<classT>3classMyArrayClass4{5private:6T*data;7intlength;8public:9MyArrayClass(intlen)10{11length=len;12//********1********1314}15~MyArrayClass()16{17//********2********1819}20T&operator[](inti)21{22//********3********2324}25boolSetElement(inti,Tt)26{27//********4********28if()29{30data[i]=t;31returntrue;32}33returnfalse;34}35};36intmain()37{38MyArrayClass<int>obj(5);39obj[3]=1;40cout<<o(jì)bj.SetElement(5,2)<<end1;41cout<<o(jì)bj.SetElement(4,2)<<end1;42return0;43}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:data=newT[len];(2)添加語(yǔ)句:delete[]data;(3)添加語(yǔ)句:returndata[i];(4)將“if()”補(bǔ)充完整為:if(i<length)知識(shí)點(diǎn)解析:程序中定義了類模板MyArrayClass,含有成員變量length和data指針,構(gòu)造函數(shù)、析構(gòu)函數(shù)、重載運(yùn)算符“[]”和SetElement()函數(shù)。構(gòu)造函數(shù)中申請(qǐng)內(nèi)存空間給data指針,析構(gòu)函數(shù)中釋放內(nèi)存資源,重載運(yùn)算符“[]”用來(lái)獲得指定下標(biāo)的數(shù)據(jù),SetElement()用來(lái)設(shè)置指定下標(biāo)的數(shù)據(jù)。(1)構(gòu)造函數(shù)完成成員變量的初始化,在MyArrayClass(intlen)函數(shù)中申請(qǐng)數(shù)組的大小的內(nèi)存空間,應(yīng)該用new申請(qǐng)動(dòng)態(tài)存儲(chǔ)空間,new返回一個(gè)指向其操作數(shù)類型變量的指針,第1個(gè)標(biāo)識(shí)下即將new返回的指針賦值給data指針,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“data=newT[len];”。(2)析構(gòu)函數(shù)完成資源的釋放,刪除由new申請(qǐng)的內(nèi)存資源,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“delete[]data;”。(3)T&operator[](inti)函數(shù)重載運(yùn)算符“[]”,返回指定下標(biāo)的數(shù)據(jù),因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“returndata[i];”。(4)SetElement(inti,Tt)是設(shè)置指定下標(biāo)的數(shù)據(jù),數(shù)組下標(biāo)不能超限,函數(shù)體中的if()用來(lái)判斷下標(biāo)位置是否超限,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“if(i<length)”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使得程序正常運(yùn)行。并使程序輸出結(jié)果為:ABCDEFABCDEFABCDEF注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream.h>2voidmain()3{4//********error********5chars1[]=’’ABC6’’DEF’’;7//********error********9chars2[]=’’ABC9DEF’’;10//********error********11chars3[]=’’ABC’’+12’’DEF’’;13cout<<s1<<end1;14cout<<s2<<end1;15cout<<s3<<end1;16return;17}標(biāo)準(zhǔn)答案:(1)chars1[]=’’ABC’’(2)chars2[]=’’ABC\(3)chars3[]=’’ABC’’知識(shí)點(diǎn)解析:程序要求輸出字符串?dāng)?shù)組的值。從已定源程序的main主函數(shù)開始入手,可以看出程序通過(guò)輸出函數(shù)cout實(shí)現(xiàn)三個(gè)字符串?dāng)?shù)組值的輸出。(1)字符串?dāng)?shù)組以“;”結(jié)束賦值語(yǔ)句,所以“ABC“DEF”應(yīng)該是字符串?dāng)?shù)組s1的賦值語(yǔ)句,它的錯(cuò)誤提示“modi1.cpp(5):error.C2001:newlineinconstant”,說(shuō)明“DEF”被認(rèn)為是新的值,根據(jù)題目要求它其實(shí)應(yīng)該是與ABC是一個(gè)數(shù)組串的,所以應(yīng)該在”ABC后面添加“*”,即第1個(gè)標(biāo)識(shí)下修改為“chars1[]=’’ABC’’”。(2)根據(jù)題目中給出的輸出結(jié)果,知道s2的輸出也是ABCDEF,那么說(shuō)明第2個(gè)標(biāo)識(shí)下的s2值應(yīng)該是ABCDEF,第一行與第二行是一個(gè)字符串。在C++中,在一個(gè)字符串中最后一個(gè)字符為“\n”,則標(biāo)識(shí)它是續(xù)行符,下一行的字符是該字符串的一部分,所以在第一行的ABC后面添加“\”,即“chars2[]=’’ABC\”。(3)字符串?dāng)?shù)組s3的賦值語(yǔ)句,錯(cuò)誤提示“modi1.cpp(12):errorC2110:cannotaddtwopointers”不能添加兩個(gè)指針,不是用“+”來(lái)連接的,兩個(gè)字符串變量之間不可以用“+”連接,所以這里刪除“+”,即第3個(gè)標(biāo)識(shí)下修改為“chars3[]=’’ABC”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(inta[],intn),實(shí)現(xiàn)遞歸函數(shù)fun(inta[],intn)的返回值是數(shù)組a[]的前n個(gè)元素之和。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。1#include<iostream.h>2intfun(inta[],intn)3{45}6voidmain()7{8intA[]={1,2,3,4};9cout<<fun(A,sizeof(A)/izeof(int))<<end1;10return;11}標(biāo)準(zhǔn)答案:1if(n>0)2returna[n-1]+fun(a,n-1);//遞歸求n項(xiàng)的和3return0;//項(xiàng)數(shù)小于等于0,返回求和值0知識(shí)點(diǎn)解析:(1)該程序功能是利用遞歸實(shí)現(xiàn)數(shù)組前n項(xiàng)的和。函數(shù)的遞歸是在調(diào)用一個(gè)函數(shù)的過(guò)程中出現(xiàn)直接或間接調(diào)用該函數(shù)本身。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)intfun(inta[],intn)中調(diào)用該函數(shù)本身,利用遞歸調(diào)用實(shí)現(xiàn)計(jì)算結(jié)果,其中參數(shù)a為數(shù)組名,n為要求和的項(xiàng)數(shù)。(3)如果要計(jì)算的項(xiàng)數(shù)小于等于0,那么直接返回0。(4)否則調(diào)用遞歸語(yǔ)句“a[n-1]+fun(a,n-1)”,實(shí)現(xiàn)0到第n項(xiàng)的和。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù),請(qǐng)?jiā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)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)設(shè)置SetData()的默認(rèn)時(shí)間為:2004-12-1,請(qǐng)?jiān)谧⑨專?*******3********添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成主函數(shù)main(),完成輸出date2isaleapyear,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。提示:公元紀(jì)年的年數(shù)可以被四整除,即為閏年;被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。注意:增加或修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。1#include<iostream>2usingnamespacestd;3classDate4{5public:6//********3********7voidSetDate(inty,intm,intn);8intIsLeapYear();9voidPrint()10{cout<<year<<’’-’’<<month<<’’-’’<<day<<end1;}11private:12//********1********1314};15voidDate::SetDate(inty,intm,intd)16{17year=y;18month=m;19day=d;20}21intDate::IsLeapYear()22{23//********2********24return25}26intmain()27{28Datedate1,date2;29date1.SetDate();30date2.SetDate(2004,12,1);31cout<<’’date1:’’;32date1.Print();33cout<<’’date2:’’;34date2.Print();35//********4********36cout<<’’ate2is’’<<{’’’’:’’not’’)<<’’aleapyear.’’<<end1;37return0;38}標(biāo)準(zhǔn)答案:(1)intyear,month,day;(2)將“return”補(bǔ)充完整為:returnfyear%400==0)||(year%4==0&&year%100!=O);(3)將“voidSetDate(inty,intm,intn)”補(bǔ)充完整為:voidSetDate(inty=2004,intm=12,intn=1);(4)將“cout<<’’date2is’’<<(’’’’:’’not’’)<<’’aleapyear.’’<<end1;’’補(bǔ)充完整為:cout<<’’date2is’’<<(date2.IsLeapYear()?’’’’:’’not’’)<<’’aleapyear.’’<<end1;知識(shí)點(diǎn)解析:本題中程序的功能是判斷2004年是否為閏年。其中成員函數(shù)SetDate設(shè)置日期,IsLeapYear函數(shù)判斷是否為閏年。在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過(guò)調(diào)用類Date和和其成員函數(shù)實(shí)現(xiàn)各種功能。(1)題目1要求“定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是im型的數(shù)據(jù)”。在程序中的Date類中的priate區(qū)域添加數(shù)據(jù)成員year、month、day的定義即可,其中它們的類型根據(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”。程序中類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.’’<<end1;”缺少字符串“date2is”以及判斷date2是否為潤(rùn)年的date2.IsLeapYear()函數(shù)調(diào)用,所以這條語(yǔ)句補(bǔ)全為“cout<<’’date2is’’<<(date2.IsLeapYear()?’’’’:"not’’)<<’’aleapyear.’’<<end1;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,該工程中包含程序文件main.epp,其中有類Door(“門”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:打開503號(hào)門...門是鎖著的,打不開。打開503號(hào)門的鎖...鎖開了。打開503號(hào)門...門打開了。打開503號(hào)門...門是開著的,無(wú)須再開門。鎖上503號(hào)門...先關(guān)門...門鎖上了。注意:只修改每個(gè)“//ERROR*********found*********”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classDoor{intnum;//門號(hào)boolclosed;//true表示門關(guān)著boollocked;//true表示門鎖著public:Door(intnum){//ERROR*******found*******num:this一>num;closed=locked=true;}boolisClosed()const{returnclosed;}//門關(guān)著時(shí)返回true,否則返回falseboolisOpened()const{return!closed;}//門開著時(shí)返回true,否則返回falseboolisLocked()const{Eeturnlocked;}//門鎖著時(shí)返回true,否則返回falsebool.isUnlocked()consL{return!locked;}//門未鎖時(shí)返回true,否則返回falsevoidopen(){//開門cout:<<endl<<"打開"<<rum<<"號(hào)門...";//ERROR*****found*****if(closed)cout<<"門是開著的,無(wú)須再開門。";elseif(locked)cout<<"門是鎖著的,打不開。";else{closed=false;cout;<<"門打開了。";}}voidclose(){//關(guān)門cout;<<endl<<"關(guān)上"<<num<<"號(hào)門...";if(closed)cout<<"門是關(guān)著的,無(wú)須再關(guān)門。";else{closed=true;cout<<"門關(guān)上了。";}}//ERROR*******found*******voidlock()const{//鎖門cout<<endl<<"鎖上"<<num<<"號(hào)門...";if(locked)cout<<"門是鎖著的,無(wú)須再鎖門。";else{if(!closed){cout<<"先關(guān)門...";closed=true;}locked=true;cout<<"門鎖上了。";}}voidunlock(){//開鎖cout<<endl<<"開"<<num<<"號(hào)門的鎖...";if(!loked)cout<<"門沒有上鎖,無(wú)須再開鎖。";else{locked=false;cout<<"鎖開了。";}}};intmain(){Doordoor(503);door.open();door.unlock();door.open();door.open();door.lock();return0;}標(biāo)準(zhǔn)答案:(1)this—>num=num;(2)if(!closed)(3)voidlock(){知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)this指針的掌握,在構(gòu)造函數(shù)中this指針指向的是當(dāng)前類,因此要給。num賦值使用語(yǔ)句this一>hum=num;完成。(2)主要考查考生對(duì)if語(yǔ)句的掌握,先看類的私有成員中關(guān)于closed的定義::boolclosed;//trile表示門關(guān)著。再看下一條語(yǔ)句:cout<<"門是開著的,無(wú)須再開門。";。即滿足條件時(shí)就會(huì)輸出:門是開著的,無(wú)須再開門。因此if括號(hào)內(nèi)應(yīng)該是!closed。(3)主要考查考生對(duì)const函數(shù)的掌握,lock函數(shù)體中存在語(yǔ)句locked=true,即有參數(shù)發(fā)生改變,因此不能用const。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,其中有矩陣基類MatrixBase、矩陣類Matrix和單位陣UnitMatrix的定義,還有main函數(shù)的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:12345234563456710O000010000001000000100000010000001注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;//矩陣基礎(chǔ)類,一個(gè)抽象類classMatrixBase{introws,cols;public:MatrixBase(introws,intcols):rows(rows),cols(cols){}intgetRows()const{returnrows;)//矩陣行數(shù)intgetCols()const{returncols;)//矩陣列數(shù)virtualdoublegetElement(intr,intc)const=O;//取第i個(gè)元素的值voidshow()const{//分行顯示矩陣中所有元素for(inti=0;i<rows;i++){cout<<endl;for(intj=0;J<cols;j++1//**********found**********cout<<____________<<"";}}};//矩陣類classMatrix:publicMatrixBase{double*val;public://**********found**********Matrix(introws,intcols,doublem[]=NULL):_____________{//**********found**********val=___________;for(inti=0;i<rows*cols;i++)val[i]=(m=:NULL?0.0:m[i]);}~Matrix(){delete[]val;)doublegetElement(intr,intc)const{returnval[r*getCols()+c];}};//單位陣(主對(duì)角線元素都是1,其余元素都是0的方陣)類classUnitMatrix:publicMatrixBase{public:UnitMatrix(introws):MatrixBase(rows,rows){}//單位陣行數(shù)列數(shù)相同doublegetElement(intr,intc)const{//**********found**********if(_________)return1.0;return0.0;}};intmain(){MatrixBase*m;doubled[][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};m=newMatrix(3,5,(double*)d);m一>show();deletem;cout<<endl;m=newUnitMatrix(6);m一>show();deletem;retumR0;}標(biāo)準(zhǔn)答案:(1)getElement(i,j)(2)MatrixBase(rows,cols)(3)Hewdouble[rows*cols](4)r==c知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)純虛函數(shù)的掌握,函數(shù)功能是分行顯示矩陣中所有元素。因此在這里要輸出行為i、列為j的元素,使用純虛函數(shù)getElement(i,j)實(shí)現(xiàn),輸出語(yǔ)句為tout<<get.Element(i,j)<<"";。(2)主要考查考生對(duì)派生類的構(gòu)造函數(shù)的掌握,派生類的構(gòu)造函數(shù)使用成員列表初始化法,先對(duì)基類初始化。(3)主要考查考生對(duì)動(dòng)態(tài)數(shù)組的掌握,val是double型指針,要給val賦值,就要先給它分配空間,應(yīng)使用new來(lái)完成。(4)主要考查考生對(duì)成員函數(shù)的掌握,因?yàn)橐敵鰡挝痪仃?,只有滿足條件r==c的元素為1.0,所以填寫語(yǔ)句if(r==c)return1.0;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中包含主程序文件main.cpp和用戶定義的頭文件Array.h,整個(gè)程序包含有類Array的定義和主函數(shù)main的定義。請(qǐng)把主程序文件中的Array類的成員函數(shù)Contrary()的定義補(bǔ)充完整,經(jīng)補(bǔ)充后運(yùn)行程序,得到的輸出結(jié)果應(yīng)該是:585,4,3,2,10,0,8.4,5.6,4.5,3.4,2.3,1.2注意:只允許在“//********333********”和“//********666********”之間填寫內(nèi)容,不允許修改其他任何地方的內(nèi)容。//Array.h#include<iostream>usingnamespacestd;template<classType,intm>classArray{//數(shù)組類public:Array(Typeb[],intmm){//構(gòu)造函數(shù)for(inti:0;i<m;i++)if(i<mm)a[i]=b[i];elsea[i]=0;}voidContrary();//交換數(shù)組a中前后位置對(duì)稱的元素的值intLength()const{returnm;}//返回?cái)?shù)組長(zhǎng)度Typeoperator[](inti)const{//下標(biāo)運(yùn)算符重載為成員函數(shù)if(i<0}||i>=m){cout<<"下標(biāo)越界!"<<end1;exit(1);}returna[i];}private:Typea[m];};voidwriteTOFile(constchar*);//不用考慮此語(yǔ)句的作用//main.cpp#include"Array.h"//交換數(shù)組a中前后位置對(duì)稱的元素的值template<classType,intm>voidArray<Type,m>::Contrary(){//補(bǔ)充函數(shù)體//********333********//********666********}intmain(){ints1[5]={1,2,3,4,5);doubles2[6]={1.2,2.3,3.4,4.5,5.6,8.4);Array<int,5>d1(s1,5);Array<double,8>d2(=s2,6);inti;d1.Contrary();d2.Contrary();cout<<d1.Length()<<"<<d2Length()<<end2;for(i=0;i<4;i++)cout<<d1[i]<<",";cout<<d1[4]<<end1;for(i=0;i<7;i++)cout<<d2[i]<<",";tout<<d2[7]<<endl;writeToFile("");//不用考慮此語(yǔ)句的作用return0:}標(biāo)準(zhǔn)答案:1for(inti=0,j=m一1;i<j;i++,j--)2{//i從0開始自加,j從數(shù)組最一位開始自減,條件是i<j,開始遍歷數(shù)組a3Typetemp=a[i];//把a(bǔ)[i]賦值給變量temp4a[i]=a[j];//把a(bǔ)[j]賦值給[j]5a[j]=temp;//把temp賦值給a[j],最終使a[i]與a[j]值的互換6}知識(shí)點(diǎn)解析:主要考查考生對(duì)交換算法的掌握情況,根據(jù)題目對(duì)要完成的函數(shù)Contrary的要求:交換數(shù)組a中前后位置對(duì)稱的元素的值。這里取下標(biāo)i=0,即為數(shù)組中的第一個(gè)元素,j=m一1,即為數(shù)組中的最后一個(gè)元素,利用中間值temp交換元素的值,然后i逐次遞增的同時(shí)j逐次遞減,再交換,循環(huán)到i>j時(shí)停止交換即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,該工程中包含程序文件main.cpp,其中有關(guān)TVSet(“電視機(jī)”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR********found********”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:規(guī)格:29英寸,電源:開,頻道:5,音量:18規(guī)格:29英寸,電源:關(guān),頻道:一1,音量:一1注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classTVSet{//“電視機(jī)”類constintsize;intchannel;//頻道intvolume;//音量boolon;//電源開關(guān):true表示開,false表示關(guān)public://ERROR*******found*******TVSet(intsize){this一>size(size);channel=0;volume=15;on=false;}intgetsize()const(returnsize;)//返回電視機(jī)規(guī)格boolisOn()const{returnon;}//返回電源開關(guān)狀態(tài)//返回當(dāng)前音量,關(guān)機(jī)情況下返回一1intgetVolume()const(returnisOn()?volume:一1;}//返回當(dāng)前頻道,關(guān)機(jī)情況下返回一1intgetChannel()const{returnisOn()?channel:一1;}//ERROR*******found*******voidturnOnOff()const//將電源在“開”和“關(guān)”之間轉(zhuǎn)換{on=!on;}voidsetChanneiTo(intchan){//設(shè)置頻道(關(guān)機(jī)情況下無(wú)效)if(isOn()&&chan>=0&&chan<=99}channel=chan;}voidsetVolumeTo(intvol){//設(shè)置音量(關(guān)機(jī)情況下無(wú)效)if(isOn()&&vol>=0&&vol<=30)volume=vol;}voidshowState(){//ERROR*******found*******cout<<"規(guī)格:"<<getSize()<<"英寸"<<",電源:"<<(isOn()?"開":"關(guān)")<<",頻道:"<<getChannel()<<",音量:"<<getVolume()<<endl;}};intmain(){TVSettv(29);tv.turnOnOff();tv.setChanneiTo(5);tv.setVolumeTo(18);tv.show_state();tv.turnOnOff();tv.show_state();return0;}標(biāo)準(zhǔn)答案:(1)TVSet(intsize):size(size){(2)voidtumOnOff()(3)tout<<"規(guī)格:"<<getSize()<<"英寸"知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)閟ize是常變量,所以只能用成員初始化列表來(lái)初始size,即TVSet(intsize):size(size){。(2)主要考查考生對(duì)const函數(shù)的掌握,在turnOnOff函數(shù)中,有語(yǔ)句:0n=!on;,使得on的值發(fā)生改變,因此該函數(shù)不能使用const。(3)主要考查考生對(duì)輸出語(yǔ)句的掌握,下一條語(yǔ)句:<<",電源:"<<(isOn()?"開":"關(guān)"),說(shuō)明輸出語(yǔ)句還沒結(jié)束,因此不能用";"。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,其中有整數(shù)棧類IntList、順序棧類SeqList和鏈接棧類LinkList的定義。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:4631846318注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)//“****found****”。#include<iostream>usingnamespacestd;classIntstack{//整數(shù)棧類public:virtualvoidpush(int)=0;//入棧virtualintpop()=0;//出棧并返回出棧元素virtualinttopElement()const=0;//返回棧頂元素,但不出棧virtualboolisEmpty()const=0;//判斷是否??諁;classSeqStack:publicIntStack{intdata[100];//存放棧元素的數(shù)組inttop;//棧頂元素的下標(biāo)public://**********found**********SeqStack():___________{}//把top初始化為一1表示??誺oidpush(int:n){data[++top]=n;}//**********found**********intpop(){return______;}inttopElement()const{returndata[top];}boolisEmpty()const(returntop=-1;)};structNode{intdata;Node*next;};classLinkStack:publicIntStack{Node*top;public://**********found**********LinkStack():_______{)//把top初始化為NULL表示棧空voidpush(intn){Node*p=newNode;p—>data=n;//**********found**********___________;top=p;}intpop(){intd=top—>data;;top=top—>next;returyld;}inttopElement()const{returntop一>data;}boolisEmpty()const{returntop==NULL;}};voidpushData(IntStack&st){st.push(8);st.push(1);st.push(3);st.push(6);st.push(4);}voidpopData(IntStack&st){while(!st.isEmpty())cout<<st.pop()<<";}intmain(){SeqStackst1;pushData(st1);popData(st1);cout<<endl;LinkStackst2;pushData(st2);popData(st2);cout<<endl;retumR0;}標(biāo)準(zhǔn)答案:(1)top(一1)(2)data[top--](3)top(NULL)(4)p一>next=top知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看語(yǔ)句注釋:把top初始化為一1表示??眨匆裻op賦值為一1即可。(2)主要考查考生對(duì)純虛函數(shù)的掌握情況,先看純虛函數(shù)在基類的注釋:出棧并返回出棧元素。要返回棧頂元素可以通過(guò)data[top]得到,出棧同時(shí)要使得top往下移動(dòng),即top--。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看語(yǔ)句注釋:把top初始化為NuLL表示??眨虼耸褂贸蓡T列表初始化直接把top賦值為NULL即可。(4)主要考查考生對(duì)棧的掌握,push為入棧函數(shù),top指向棧頂元素,因此新添加的指針的next要指向top,即p一>next=top;。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayv1={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:補(bǔ)充編制的內(nèi)容寫在“//********333*********”與“********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。//ValArray.h#include<iostream>usingnamespacestd;classValArray{int*v;intSize;public:ValArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i<size;i++)v[i]=P[i];}ValArray(constValArray&other);~ValArray(){delete[]v;)voidprint(ostream&out)const{out<<’{’;for(inti=0;i<size-1;i++)out<<v[i]<<",";out<<v[size-1]<<’)’;}voidsetArray

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論