國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷12(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷12(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷12(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷12(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷12(共27題)_第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ī)試(操作題)模擬試卷12(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程projl,此工程中包含一個(gè)源程序文件main.cpp,其中有類(lèi)B00k(“書(shū)”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:書(shū)名:C++語(yǔ)句程序設(shè)計(jì)總頁(yè)數(shù):299.已把“c++語(yǔ)言程序設(shè)計(jì)”翻到第50頁(yè)已把“C++語(yǔ)言程序設(shè)計(jì)”翻到第51頁(yè)已把“C++語(yǔ)言程序設(shè)計(jì)”翻到第52頁(yè)已把“C++語(yǔ)言程序設(shè)計(jì)”翻到第51頁(yè)已把書(shū)合上。當(dāng)前頁(yè):0注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<10stream>usingnamespacestd;classBook{char*title;intnum_pages;//頁(yè)數(shù)intcur_page;//當(dāng)前打開(kāi)頁(yè)面的頁(yè)碼,0表示書(shū)未打開(kāi)public://ERROR*********found*********Book(constchar*theTitle,intpages)num_pages(pages){title=newchar[strlen(theTi-tle)+1];strcpy(title,theTitle);cout<num_pages){cout<<“無(wú)法翻到第”<標(biāo)準(zhǔn)答案:(1)Book(eonstchar*theTitle,intpages):num—pages(1)ages)(2)voidopenAtPage(intpage.n0){//把書(shū)翻到指定頁(yè)(3)cur—page=0;知識(shí)點(diǎn)解析:本題考查Book類(lèi),其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、析構(gòu)函數(shù)、bool函數(shù)和成員函數(shù)?!窘忸}思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,構(gòu)造函數(shù)的成員列表初始化法要注意它的格式,即成員列表前要有標(biāo)識(shí)符“:”,因此語(yǔ)句改為:Book(eonstchar*theTitle,intpages):Bum—pages(pages)。(2)主要考查考生對(duì)eonst函數(shù)的掌握,在函數(shù)體中可以看到有語(yǔ)句cur—page=page—n0,即cur—page的值發(fā)生改變,因此該函數(shù)不是const函數(shù)。(3)主要考查考生對(duì)成員函數(shù)的掌握,題目要求輸出的最后一條是“當(dāng)前頁(yè):0”,可知主函數(shù)中調(diào)用close函數(shù)后當(dāng)前頁(yè)為0,因此應(yīng)該是cur—page:0;。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2。此工程中包含一個(gè)源程序文件main.epp,其中有“房間”類(lèi)Room及其派生出的“辦公室”類(lèi)Office的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)诔绦蛑小埃?***found****”下的橫線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類(lèi)定義。此程序的正確輸出結(jié)果應(yīng)為:辦公室房間號(hào):308辦公室長(zhǎng)度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門(mén):會(huì)計(jì)科注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<10Stream>usingnamespacestd;classRoom{//“房間”類(lèi)introomno;//房間號(hào)doublelength;//房間長(zhǎng)度(m)doublewidth;//房間寬度(m)public:Room(inttheroomno,doublethelength,doublethe—width):room—no(the—room—no),length(the—length),width(the_width){)inttheRoomNo()const{returnroom—no;}//返回房間號(hào)doubletheLength()constfreturnlength;}//返回房間長(zhǎng)度doubletheWidth()const{returnwidth;}//返回房間寬度//*********found*********doubletheArea()const{——)//返回房間面積(矩形面積));classOffice:publicRoom{//“辦公室”類(lèi)char‘depart;/7甄屬部npublic:Office(inttheroomno,doublethe—length,doublethe—width,constchar*thedepart)//*********found**********:_______{depart=newchar|strlen(thedepart)+1j;//*********found**********strcpy(_____);}一Office(){delete[]depart;)constchar*theDepartment()const{returndepart;)//返回所屬部門(mén)},intmain(){//*********found*********Office__________;:cout<<“辦公室房間號(hào):”<標(biāo)準(zhǔn)答案:(1)returnlength*width:(2)Room(the—roomno,the—length,the_width)(3)depart,the—depart(4)an—office(308,5.6,4.8,”會(huì)計(jì)科”)知識(shí)點(diǎn)解析:主要考查的是Room類(lèi)及其派生類(lèi)Office,其中涉及構(gòu)造函數(shù),const函數(shù),動(dòng)態(tài)數(shù)組,析構(gòu)函數(shù)。strcpy函數(shù)用于復(fù)制字符串,其格式為:stcpy(字符串1,字符串2);。【解題思路】(1)主要考查考生對(duì)成員函數(shù)的掌握,題目要求返回房間面積(矩形面積)。由此可知空格部分要填寫(xiě)的是一個(gè)return語(yǔ)句,返回房間面積,也就是length*width,因此可以得出程序returnlength*width;。(2)主要考查考生對(duì)派生類(lèi)的構(gòu)造函數(shù)的掌握,派生類(lèi)的構(gòu)造函數(shù)要使用成員列表初始法先對(duì)基類(lèi)進(jìn)行初始化。(3)考查strcpy函數(shù),由前一條語(yǔ)句depart:newchar[strlen(the—depart)+1];可知,程序給depart分配了長(zhǎng)度為the—depart串長(zhǎng)加1的空間,因此要復(fù)制字符串the—depart串到depart,直接填寫(xiě)s~cpy(depart,the—depart)即可。(4)主要考查考生對(duì)類(lèi)的掌握,題目要求輸出的結(jié)果為:辦公室房間號(hào):308辦公室長(zhǎng)度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門(mén):會(huì)計(jì)科由Office類(lèi)的構(gòu)造函數(shù)可知要定義的一個(gè)Office類(lèi)的對(duì)象為an—office(308,5.6,4.8,”會(huì)計(jì)科”)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程文件proj3。本題創(chuàng)建一個(gè)小型字符串類(lèi),字符串長(zhǎng)度不超過(guò)100。程序文件包括proj3.h,proj3.cpp、writeToFile.obj。補(bǔ)充完成重載賦值運(yùn)算符函數(shù),完成深復(fù)制功能。屏幕上輸出的正確結(jié)果應(yīng)該是:Hello!Happynewyear!要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//*********333*********”與“//*********666*********”兩行之間。不得修改程序的其他部分。注意:程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測(cè)試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//proj3.h#include#includeusingnamespacestd;classMiniString{public:friendostream&operator<<(OStream&output,constMiniString&s)//重載流插入運(yùn)算符{output<>(is。tream&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.1ength=inLen;//賦長(zhǎng)度if(S.sPtr!=0)delete[]S.sPtr;//避免內(nèi)存泄漏S.sPtr=newchar[S.1ength+1];strcpy(S.sPtr,temp);//如果S不是空指針,則復(fù)制內(nèi)容}elseS.sPtr[0]=‘\0’;//如果S是空指針,則為空字符串returninput;}voidmodString(constchar*string2)//更改字符串內(nèi)容{if(string2!=0)//如果string2不是空指針,則復(fù)制內(nèi)容{if(strlen(string2)!=length){length=strlen(string2);delete[]sPtr;sPtr=newchar[1ength+1];//分配內(nèi)備}strcpy(sPtr,string2);}elsesPtr[0]=‘\0’;//如果string2是空指針,則為空字符串}MiniString&operator=(constMini。String&otherString);MiniString(constchar*S=””):length((S!=0)?strlen(S):0)//構(gòu)造函數(shù){SPtr=0;if(1ength!=0)setString(S);}一MiniString()//析構(gòu)函數(shù){delete[]sPtr;}private:intlength;//字符串長(zhǎng)度char*sPtr;//指向字符串起始位置voidsetString(constchar*string2)/輔助函數(shù){sPtr=newchar[strlen(string2)+1];//分配內(nèi)存if(string21=0)strcpy(sPtr,string2);//如果string2不是空指針,則復(fù)制內(nèi)容elsesPtr[0]=’\0’;//如果string2是空指針,則為空字符串}};//proj3.cpp#include#includeusingnamespacestd;#include”proj3.h”MiniString&MiniString::operator=(constMiniString&otherString){//重載賦值運(yùn)算符函數(shù)。提示:可以調(diào)用輔助函數(shù)setString//*********333*********//*********666*********}intmain(){MiniStringstrl(“Hello!”),str2;VOidwriteToFile(constchar*);str2=strl;//使用重載的賦值運(yùn)算符str2.modString(”Happynewyear!”);cout<標(biāo)準(zhǔn)答案:length=otherString.1ength;//把對(duì)象字符串otherstrinq的長(zhǎng)度賦值當(dāng)變量lenqthsetString(otherString.sPtr);//調(diào)用函數(shù)setstring,實(shí)現(xiàn)給類(lèi)變量spt分配空間,以及逐個(gè)把對(duì)象otherstring皇符串的值復(fù)制到sptr中return*this;//返回被賦值的對(duì)象知識(shí)點(diǎn)解析:本題考查MiniString類(lèi),其中涉及構(gòu)造函數(shù)、動(dòng)態(tài)數(shù)組、運(yùn)算符重載和析構(gòu)函數(shù)。運(yùn)算符重載是C++的一個(gè)難點(diǎn),應(yīng)先了解要被重載的運(yùn)算符的含義,再根據(jù)類(lèi)的成員完成程序段?!窘忸}思路】主要考查考生對(duì)運(yùn)算符重載的掌握,題目要求重載賦值運(yùn)算符函數(shù)。要重載的運(yùn)算符是“=”,即賦值的意思。提示:可以調(diào)用輔助函數(shù)setString。該函數(shù)的功能是復(fù)制形參的字符串到sPtr中,因此,首先復(fù)制length,其次通過(guò)函數(shù)set.String復(fù)制sPtr,最后按要求返回木this;。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有誤,請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序在界面上輸出為:平均值為:29最大值為:112最小值為:-11注意:錯(cuò)誤的語(yǔ)句在//********error********的下面。修改該語(yǔ)句即可。1#include2usingnamespacestd;3intmain()4{5inti|Ave|MintMax;6intdata[8].(0,112,43,78,-11,-6,7,9);7Ave=0;8for(i=0;i<8;i++)9//********error********10Ave=data[i];11Ave/=8;12cout<<"平均值為:“<Min)Min=data[i];20}21cout<<"最大值為:"<標(biāo)準(zhǔn)答案:(1)Ave+=data[i];或Ave=Ave+data[i];(2)if(data[i]>Max)Max=data[i];(3)if(data[i]知識(shí)點(diǎn)解析:該程序的功能是要求數(shù)組的平均值、最大值和最小值,求平均值時(shí)先求出數(shù)組各個(gè)元素之和,然后再去求平均值;求最大最小值可以采取逐個(gè)比較的方法求得。[解題思路](1)觀察程序可知,第一個(gè)for循環(huán)是求數(shù)組各個(gè)元素的和,逐次將每個(gè)元素值加起來(lái),而程序當(dāng)中是逐個(gè)賦值,因此第l標(biāo)識(shí)處應(yīng)將Ave=data[i]改成Ave+=data[i]或Ave=Ave+data[i]。(2)根據(jù)題意再求數(shù)組當(dāng)中元素的最大最小值,用變量Max記錄最大值,Min記錄最小值,在for循環(huán)中,逐次比較,如果該元素值比當(dāng)前Max大,則Max取該元素值,因此第2標(biāo)識(shí)處正確的應(yīng)該是if(data[i]>Max)Max=data[i]。(3)同樣如果數(shù)組該元素值比Min小,則Min取該元素值。因此,兩個(gè)if中條件判斷錯(cuò)誤,第3標(biāo)識(shí)處“if(data[i]>Min)Min=data[i]”改成“if(data[i]二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)IsPalindromes(cha木string)實(shí)現(xiàn)的功能是判定給定的字符串是否構(gòu)成回文字符串,如果是則返回1,否則返回0。如:123455432l或者1234321都認(rèn)為是回文字符串。如果串為空或一個(gè)字母時(shí),均認(rèn)為是回文字符串。注意:不能修改程序的其他部分,只能補(bǔ)充IsPalindromes()函數(shù)。1#include2#defineMAXLEN10243boolIsPalindromes(char*string)4{56}7voidmain()8{9charStr[MAXLEN];10cout<<"請(qǐng)輸入一行文字"<標(biāo)準(zhǔn)答案:1intlen=0;2for(;string[len]!=NULL;len++)//獲取字符串的長(zhǎng)度3;4len--;//下標(biāo)從0開(kāi)始到len-15for(inti=0;i知識(shí)點(diǎn)解析:函數(shù)IsPalindromes(cha水string)實(shí)現(xiàn)的功能是判定給定的字符串是否構(gòu)成回文字符串,如果是則返回1,否則返回0。回文是指前后對(duì)稱(chēng)的字符串,因此可比較對(duì)稱(chēng)位置的字符是否一樣來(lái)判斷是否是回文,如果每個(gè)對(duì)稱(chēng)位置的元素均相同則是回文,返回1,否則返回0。[解題思路](1)由于字符串的長(zhǎng)度是未知的,先利用循環(huán)求出字符串的長(zhǎng)度,循環(huán)變量從0開(kāi)始,直到數(shù)組的結(jié)束,string[len]==NUL為循環(huán)結(jié)束條件,如此便得到了數(shù)組的長(zhǎng)度len。(2)知道長(zhǎng)度后就可以判斷對(duì)稱(chēng)位置的元素是否相同,比如第一個(gè)元素和最后一個(gè)元素,第二個(gè)元素和倒數(shù)第二個(gè)元素,如此比較下去直到到了最中間的元素為止。(3)可以利用循環(huán)來(lái)比較是否對(duì)稱(chēng),設(shè)置另一個(gè)循環(huán)變量i,i從0開(kāi)始表示從數(shù)組的頭開(kāi)始讀數(shù),len從數(shù)組的尾部開(kāi)始讀數(shù),如果string[i]!=string[len],則跳出循環(huán)返回0,如果循環(huán)結(jié)束還沒(méi)發(fā)現(xiàn)不同則返回l。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)定義類(lèi)CPoint的帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),兩個(gè)變量為x、y都為int型,且缺省值為0。請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)CRectangle的構(gòu)造函數(shù),給point1和point2進(jìn)行賦值。請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類(lèi)CRectangle的函數(shù)GetArea0,用來(lái)計(jì)算矩形面積。請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義CRectangle類(lèi),擁有兩個(gè)私有對(duì)象pointl和point2,類(lèi)型為Point,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include2#include3ClasSCPoint4{5public:6//********1********78{9x=i;10y=J;11}12intGetX()13{14returnX;15}16intGetY()17{18returnY;19}20private:21intx,y;22};23ClassCRectangle24{25public:26//********2********2728{29}30intGetArea()31{32//********3********3334intheight=pointl.GetY()-point2.GetY();35return(width*height);width*height:-width*height;36}37intGetGirth()38{39intwidth=abs(pointl.GetX()-point2.GetX());40intheight=abs(pointl.GetY()-point2.GetY());41return(2*(width+height));42}43private:44//********4********4546CPointpoint2;47j;48intmain()49{50CRectanglerect(5,2,13,18);51cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:CPoint(inti=0,intj=0)(2)添加語(yǔ)句:CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)(3)添加語(yǔ)句:intwidth=pointl.GetX()-point2.GetX();(4)添加語(yǔ)句:CPointpointl;知識(shí)點(diǎn)解析:程序中定義了CPoint和CRectangle兩個(gè)類(lèi),分別表示點(diǎn)坐標(biāo)類(lèi)和矩形類(lèi),點(diǎn)坐標(biāo)類(lèi)有2個(gè)私有成員變量x和y表示坐標(biāo)值,矩形類(lèi)有2個(gè)CPoint成員。函數(shù)GetArea()用來(lái)計(jì)算矩形面積,可由矩形的長(zhǎng)和寬計(jì)算得到,同樣GetGirth()函數(shù)返回矩形的周長(zhǎng)也可由長(zhǎng)和寬得到。主函數(shù)內(nèi)定義一個(gè)CRectangle對(duì)象,分別調(diào)用GetArea()和GetGirth()計(jì)算面積和周長(zhǎng),然后打印計(jì)算結(jié)果。[解題思路](1)在第1個(gè)標(biāo)識(shí)下添加構(gòu)造函數(shù)定義,該構(gòu)造帶有兩個(gè)參數(shù)x和Y的構(gòu)造函數(shù),x、y都為int型,缺省值為0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加CPoint(inti=0,intj=0)。(2)第2個(gè)標(biāo)識(shí)下通過(guò)Cpoint類(lèi)的構(gòu)造函數(shù)來(lái)完成Crectangle類(lèi)成員的初始化,在函數(shù)體內(nèi)沒(méi)有任何函數(shù)語(yǔ)句,因此其初始化過(guò)程是在初始化列表里完成的,通過(guò)調(diào)用基類(lèi)的構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)兩個(gè)私有對(duì)象point1和point2的初始化,故第2個(gè)標(biāo)識(shí)下應(yīng)添加CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)。(3)面積為矩形的長(zhǎng)寬之積,因此先計(jì)算矩形的長(zhǎng)和寬,可由兩個(gè)Cpoint對(duì)象的x坐標(biāo)相減計(jì)算得到,CPoint對(duì)象的x坐標(biāo)為私有成員,只能通過(guò)公有接口函數(shù)調(diào)用獲得,因此第3個(gè)標(biāo)識(shí)下為“intwidth=pointl.GetX()-point2.GetX();”。(4)Crectangle類(lèi)的成員變量為兩個(gè)Cpoint對(duì)象成員pointl和point2,第4個(gè)標(biāo)識(shí)下補(bǔ)充pointl的定義,故第4個(gè)標(biāo)識(shí)下應(yīng)添加“CPointpointl;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:150200注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。提示:定義Number1為一個(gè)整型數(shù)據(jù)位長(zhǎng)的變量。#include//********error********struct{//********error********intNumber1:1;intNumber2;}Mystruct;Voidmain(){Mystructmstr;mstr.Number1=150;mstr.Number2=15;//********error********int*ptr=&mstr.Numberl;cout<<*ptr<標(biāo)準(zhǔn)答案:(1)typedefstruct(2)intNumber1:32;或intNumber1;(3)int*ptr=(int*)&mstr;知識(shí)點(diǎn)解析:(1)第1標(biāo)識(shí)下是定義結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>:程序當(dāng)中定義結(jié)構(gòu)體名放在后面,Mystruct為結(jié)構(gòu)體變量類(lèi)型,相當(dāng)于typedef為已有的類(lèi)型定義一個(gè)新的類(lèi)型,第1個(gè)標(biāo)識(shí)下應(yīng)改為“typedefstruct”。(2)第2標(biāo)識(shí)下是定義Number1為一個(gè)整型數(shù)據(jù)變量,整型數(shù)據(jù)位數(shù)為32(4字節(jié)),因此第2個(gè)標(biāo)識(shí)下應(yīng)改成“intNumber1:32;”或“intNumber1;”。(3)ptr為整型數(shù)據(jù)指針,mstr為Mystruct類(lèi)型結(jié)構(gòu)變量,兩者類(lèi)型不一致應(yīng)該做強(qiáng)制類(lèi)型轉(zhuǎn)換,第3個(gè)標(biāo)識(shí)下應(yīng)改成“int*ptr=(int*)&mstr;”,表示將mstr的地址給ptr,ptr指向MyStmct的第一個(gè)域Number1,Number1也是整形,類(lèi)型一致,故可通過(guò)ptr指針來(lái)改變Number1的值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6.打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)DecToBin(char*des,intn)的功能是將十進(jìn)制數(shù)據(jù)n轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),并將轉(zhuǎn)換結(jié)果存放在des中。如:120的二進(jìn)制數(shù)據(jù)為1111000例:DecToBin(char*des,120);cout<#defineMAXLEN1.024voidDecToBin(char*des,intn){}voidmain(){chardes[MAXLEN];intn=120;DecToBin(des,n);cout<標(biāo)準(zhǔn)答案:intj,i=0;chartemp;while(n!=0){des[i]=n%2+’0’;n=n/2;i++;}//轉(zhuǎn)化結(jié)果為2進(jìn)制最高位在des的下標(biāo)最低處,順序剛好反了des[i]=NULL;for(j=0;j知識(shí)點(diǎn)解析:(1)本題為將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),因此采用除2求余法,通過(guò)該方法最終可以將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成一個(gè)只包含1和0的數(shù)組。(2)除2求余法得到的是0和1的數(shù)值,不是“0”和“1”字符,還需將數(shù)字轉(zhuǎn)化成字符,0和1通過(guò)加上“0”的ASCII碼便可得到0和1的ASCII碼字符。(3)因?yàn)槌?求余法得到的字符數(shù)組是從低位到高位保存的,因此需要先倒序后再輸出,可利用循環(huán)方式將順序調(diào)轉(zhuǎn)過(guò)來(lái)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)對(duì)文件以追加的方式打開(kāi)文件。請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義m、n為類(lèi)TestClass的公有int型數(shù)據(jù)成員,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義P為類(lèi)TestClass的數(shù)據(jù)成員指針,并指向類(lèi)TestClass數(shù)據(jù)成員m,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義P指向類(lèi)TestClass數(shù)據(jù)成員n,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include#include#include#includeusingnamespacestd;VoidWriteFile(intx){ofstreamout1;//********1********out1.open("modi3.txt",);out1<標(biāo)準(zhǔn)答案:(1)將“out1.open("modi3.txt",);”補(bǔ)充完整為:out1.open("modi3.txt",iosbase::app);(2)添加語(yǔ)句:intm,n;(3)添加語(yǔ)句:intTestClass::*p=&(TestClass::m);(4)添加語(yǔ)句:p=&(TestClass::n);知識(shí)點(diǎn)解析:(1)題目1要求“對(duì)文件以追加的方式打開(kāi)文件”。文件輸出輸入方式的設(shè)置值,以ios::app方式是以輸出方式打開(kāi)文件,寫(xiě)入的數(shù)據(jù)添加在文件末尾,即第1個(gè)標(biāo)識(shí)下語(yǔ)句補(bǔ)全為“out1.open("modi3.txt".ios_base::app);”。(2)題目2要求“定義m、n為類(lèi)TestClass的公有int型數(shù)據(jù)成員”。只需在程序中的TestClass類(lèi)中的public區(qū)域添加m、n的定義即可。即在第2個(gè)標(biāo)識(shí)下添加“intm,n;”。(3)題目3要求“定義p為類(lèi)TestClass的數(shù)據(jù)成員指針,并指向類(lèi)TestClass數(shù)據(jù)成員m”。程序中類(lèi)TestClass數(shù)據(jù)成員m為:TestClass::m,定義p為類(lèi)TestClass的數(shù)據(jù)成員指針語(yǔ)句為:TestClass::*p,將其指向前面的數(shù)據(jù)成員m,即為“intTestClass::*p=&(TestClass::m);”。(4)題目4要求“定義P指向類(lèi)TestClass數(shù)據(jù)成員n”。類(lèi)TestClass數(shù)據(jù)成員n語(yǔ)句為T(mén)estClass::n,用P指向類(lèi)TestClass數(shù)據(jù)成員n,添加的語(yǔ)句即“p=&(TestClass::n);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:把形參S所指字符串中最右邊的n個(gè)字符復(fù)制到形參t所指字符數(shù)組中,形成一個(gè)新串。若S所指字符串的長(zhǎng)度小于n,則將整個(gè)字符串復(fù)制到形參t所指字符數(shù)組中。例如,形參S所指的字符串為:abedefgh,n的值為5,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:defgh。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BIANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#defineN80voidfun(char*s,intn,char*t){intlen,i,j=0;len=strlen(s);/*********found*********/if(n>=len)strcpy(【1】);else{/*********found*********/for(i=len—n;i<=len一1;i++)t[j++]=【2】;/*********found*********/t[j]=【3】;}}main(){chars[N],t[N];intn;printf("Enterastring:");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n,t);printf("Thestringt:");puts(t);}標(biāo)準(zhǔn)答案:(1)t,s(2)s[i](3)0或’\0’知識(shí)點(diǎn)解析:填空1:當(dāng)給定的長(zhǎng)度n大于該字符串s的長(zhǎng)度,那么把該字符串直接拷貝到t就可以了,所以應(yīng)填t,s。填空2:使用for循環(huán)語(yǔ)句,把最右邊n個(gè)字符依次添加到t中,所以應(yīng)填s[i]。填空3:字符串操作結(jié)束,需要給t加一個(gè)字符串結(jié)束符,所以應(yīng)填0或\0。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun和funx的功能是:用二分法求方程2x3一4x2+3x一6:0的一個(gè)根,并要求絕對(duì)誤差不超過(guò)0.001。例如,若給m輸入一100,給n輸入90,則函數(shù)求得的一個(gè)根為2.000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includedoublefunx(doublex){return(2*x*x*x一4*x*x+3*x一6);}doublefun(doublem,doublen){/*********found*********/intr;r=(m+n)/2;/*********found*********/while(1abs(n—m)<0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}returnr;}main(){doublem,n,root;printf("Entermn:\n");scanf("%lf%lf",&m,&n);root=fun(m,n);printf("root=%6.3f\n",root);}標(biāo)準(zhǔn)答案:(1)dotlbler;(2)while(fabs(n—m)>0.001)知識(shí)點(diǎn)解析:(1)程序中會(huì)發(fā)現(xiàn)r=(m+n)/2,而m和n都是double型的,并且根據(jù)題意可知,變量r需要定義為double型。(2)絕對(duì)誤差不超過(guò)0.00l,所以循環(huán)條件應(yīng)為labs(n—m)>0.001。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0~P(含p,p小于等于n—1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10;P的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為:5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#inCiude#defineN80voidfun(int*w,into,intn){}main()(inta[N]=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,12=15;printf("Theoriginaldata:\n");for(i=0;i標(biāo)準(zhǔn)答案:voidfun(int*w,intp,intn){intx,j,ch;for(x=0;x<=p;x++)(ch=w[0];for(j=1;j知識(shí)點(diǎn)解析:本題要求把下標(biāo)從0~p(含p,p小于等于n一1)的數(shù)組元素平移到數(shù)組的最后,可以根據(jù)輸入的p值,通過(guò)for循環(huán)語(yǔ)句,將p+1~n一1(含n一1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元,即w[j一1]=w[j];,同時(shí)將0~p個(gè)數(shù)組元素逐一賦給數(shù)組w[n—1],也就是通過(guò)語(yǔ)句w[n一1]=ch;來(lái)實(shí)現(xiàn)此操作的。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)補(bǔ)充程序中的丟失部分,使得程序運(yùn)行。可以在修改處增加或者刪除一條語(yǔ)句。本程序完成以下功能:(1)獲得輸入的兩個(gè)數(shù)字x1,x2(例如x1=4,x2=2);(2)輸出兩個(gè)中較小的一個(gè)(例如輸出2);(3)計(jì)算x1/x2如果x2等于0,返回.1(輸出結(jié)果2);(4)輸出x1+x2的結(jié)果(輸出結(jié)果6);(5)輸出x1+1的結(jié)果(輸出結(jié)果5);(6)輸出x2-1的結(jié)果(輸出結(jié)果1)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includevoidmain(){intx1;intx2;intx3;cout<<"pleaseinputtwonumber:"<>x1>>x2;//********error********x3=(x1>x2)?x1:x2;cout<<"Minnumberis:"<標(biāo)準(zhǔn)答案:(1)x3=(x1知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下“x3=(x1>x2)?x1:x2;”語(yǔ)句是判斷x1與x2其中哪個(gè)相對(duì)較小,并將其賦值給x3。條件運(yùn)算符的格式:表達(dá)式17表達(dá)式2:表達(dá)式3。執(zhí)行順序是先求解表達(dá)式1,若非則求解表達(dá)式3,此時(shí)表達(dá)式3的值就作為整個(gè)條件表達(dá)式值。所以求x1和X2中較小的一個(gè),如果x1二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成以下兩個(gè)函數(shù):(1)fun1(intn1;求出n的階乘,必須使用遞歸調(diào)用。(2)fun2(intn);求出n的階乘,不能使用遞歸調(diào)用。如果n小于1則返回0。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。#include//必須使用遞歸intfunl(intn){};//不能使用遞歸intfun2(intn){}voidmain(){inti;cout<<"請(qǐng)輸入一個(gè)整數(shù):"<>i;tout<<"輸入數(shù)字的階乘是:"<<fun1(i)<標(biāo)準(zhǔn)答案:intfunl(intn)//使用遞歸計(jì)算階乘{(lán)if(n<=0)//n小于等于0,直接返回0return0;if(n==1)//n等于1直接返回1return1;returnn*funl(n-1);//n大于等于1,通過(guò)遞歸計(jì)算n!j;//不使用遞歸計(jì)算階乘intfun2(intn){if(n<=0)//n小于0,直接返回0return0;intres=1;//初始化階乘存放變量resfor(inti=1;i<=n;i++)//通過(guò)循環(huán)計(jì)算n!{res*=i;}returnres;}知識(shí)點(diǎn)解析:(1)進(jìn)入fun1函數(shù),根據(jù)前面的定義,它對(duì)階乘算法的實(shí)現(xiàn)可以分為三種情況,一是當(dāng)n小于或等于0時(shí),返回0即可;二是當(dāng)n大于1時(shí)應(yīng)該用什么程序來(lái)實(shí)現(xiàn)階乘的計(jì)算:三是當(dāng)n=1時(shí),函數(shù)直接返回1即可。(2)計(jì)算n!的值,先定義一個(gè)放階乘值的變量res,初值為1,通過(guò)循環(huán)的方法,用累乘器“res*=i;”實(shí)現(xiàn)n!。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示坐標(biāo)的類(lèi)TestClass1,但類(lèi)TestClass1的定義并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)聲明TestClass2類(lèi)為T(mén)estClass1類(lèi)的友元類(lèi),請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)的構(gòu)造函數(shù),分別對(duì)成員變量賦值,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類(lèi)的構(gòu)造函數(shù),分別對(duì)成員變量賦值,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成計(jì)算平面上兩點(diǎn)之間的距離函數(shù)Distance,計(jì)算的方法如下:X坐標(biāo)之差的平方與Y坐標(biāo)之差的平方之和的開(kāi)方。請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#includeusingnamespacestd;ClassTestClass1{//********1********public://********2********{X=a;Y=b;}//********3********{X=a;Y=0;}Voidprint(){cout<<"x="<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:friendclassTestClass2;(2)添加語(yǔ)句:TestClass1(floata,floatb)(3)添加語(yǔ)句:TestClass1(floata)(4)添加語(yǔ)句:result=sqrt((p.X—q.X)*(p.X—q.X)+(p.Y—q.Y)*(p.Y—q.Y));知識(shí)點(diǎn)解析:(1)題目1要求“聲明TestClass2類(lèi)為T(mén)estClass1類(lèi)的友元類(lèi)”。C++中聲明友元類(lèi)的一般形式為friend類(lèi)名;,所以這里補(bǔ)全“friendclassTestClass2;”。(2)題目2要求“完成類(lèi)的構(gòu)造函數(shù),分別對(duì)成員變量賦值”。程序中TestClass1類(lèi)的構(gòu)造函數(shù)缺少定義,構(gòu)造函數(shù)首部的一般格式為:構(gòu)造函數(shù)名(類(lèi)型1形參1,類(lèi)型2形參2,……),所以在第2個(gè)標(biāo)識(shí)下補(bǔ)全“TestClass1(floata,floatb)”。(3)題目3要求“完成類(lèi)的構(gòu)造函數(shù),分別對(duì)成員變量賦值”。同理,第三個(gè)標(biāo)識(shí)下補(bǔ)全“TestClass1(floata)”。(4)題目4要求“完成計(jì)算平面上兩點(diǎn)之間的距離函數(shù)Distance”。題目中已經(jīng)給出了計(jì)算方法,X坐標(biāo)之差的平方與Y坐標(biāo)之差的平方之和的開(kāi)方。利用C++中的開(kāi)方函數(shù)sqrt補(bǔ)全函數(shù)中的兩點(diǎn)之間的距離。即:result=sqrt((p.X—q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y.q.Y);國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用“答題”菜單或使用VC6打開(kāi)考生文件夾proj1下的工程proj1,此工程包含程序文件main.epp,其中有類(lèi)TimesTable(“乘法口訣表”)的定義和主函數(shù)main的定義。程序中位于每個(gè)//ERROR**********found**********下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以改正。更正后程序的輸出應(yīng)該是:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81注意:只能修改每個(gè)//ERROR**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。1#include2#include3usingnamespacestd;4classTimesTable//乘法口訣表5{6public:7//ERROR**********found**********8TimesTable(intn=9){count=n;}9voidPrint()const;10private:11constintcount;12};13//ERROR**********found**********14voidPrint()const15{16inti,j;17//ERROR**********found**********18for(i=1;i標(biāo)準(zhǔn)答案:(1)TimesTable(intn=9):count(n){}(2)voidTimesTable::Print()const(3)for(i=1;i<=count;i++)知識(shí)點(diǎn)解析:(1)const為只讀變量,const變量應(yīng)該在成員初始化列表中賦初值,否則C++認(rèn)為是語(yǔ)法錯(cuò)誤,可知成員變量count,定義const類(lèi)型,不能在構(gòu)造函數(shù)中賦值。(2)類(lèi)中的成員函數(shù),在類(lèi)外部定義,必須附加域說(shuō)明符,來(lái)表示該函數(shù)屬于某個(gè)類(lèi)的。(3)根據(jù)題設(shè)值,計(jì)算出從1~n的乘法口訣表,包括n在內(nèi),因此使用“<=”運(yùn)算符。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.epp,其中有類(lèi)CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請(qǐng)?jiān)跈M線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類(lèi)定義。該程序的正確輸出結(jié)果應(yīng)為:2010注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。1#include2usingnamespacestd;3classCPolygon{4public:5//*********found*********6_______//純虛函數(shù)area聲明7voidprintarea(void)8//**********found**********9{cout<<_______<printarea();35ppoly2->printarea();36return0;37}標(biāo)準(zhǔn)答案:(1)virtualintarea(void)=0;(2)area()(3)length*height(4)Cpolygon知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)純虛函數(shù)的掌握,在定義純虛函數(shù)時(shí)要看在派生類(lèi)中函數(shù)的定義:intarea(void)。由此可知純虛函數(shù)應(yīng)該為:virtualintarea(void)=0;。(2)主要考查考生對(duì)純虛函數(shù)的掌握情況,由voidprint-area(void)可知,該函數(shù)要打印面積,因此在此要調(diào)用純虛函數(shù)area,即cont<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生目錄proj3下的工程文件proj3,其中定義了用于表示特定數(shù)制的數(shù)的模板類(lèi)Number和表示一天中的時(shí)間的類(lèi)TimeOfDay;程序應(yīng)當(dāng)顯示:01:02:03.00406:04:06.021但程序中有缺失部分,請(qǐng)按照以下的提示,把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是一個(gè)定義數(shù)據(jù)成員seconds的語(yǔ)句,seconds用來(lái)表示“秒”。(2)在“//**2******found****”的下方是函數(shù)ad-vanceSeconds中的一個(gè)語(yǔ)句,它使時(shí)間前進(jìn)k秒。(3)在“//**3******found****”的下方是函數(shù)ad-vance中的一個(gè)語(yǔ)句,它確定增加k后n的當(dāng)前值和進(jìn)位,并返回進(jìn)位。例如,若n的當(dāng)前值是表示時(shí)間的55分,增加10分鐘后當(dāng)前值即變?yōu)?分,進(jìn)位為1(即1小時(shí))。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。填寫(xiě)的內(nèi)容必須在一行中完成,否則評(píng)分將產(chǎn)生錯(cuò)誤。1//proj3.cpp2#include3#include4usingnamespacestd;5template//數(shù)制為base的數(shù)6classNumber7{8intn;//存放數(shù)的當(dāng)前值9public:10Number(inti):n(i){)//i必須小于base11intadvance(intk);//當(dāng)前值增加k個(gè)單位12intvalue()const{returnn;)//返回?cái)?shù)的當(dāng)前值13};14classTimeOfDay{15public:16Number<24>hours;//小時(shí)(0~23)17Number<60>minutes;//分(0~59)18//**1************found**********19_______;//秒(0~59)20Number<1000>milliseconds;//毫秒(0~999)21TimeOfDay(inth=0,intm=0,ints=0,intmilli=0)22:hours(h),minutes(m),seconds(s),milliseconds(milli){}23voidadvanceMillis(intk){ad-vanceSeconds(milliseconds.a(chǎn)dvance(k));)//前進(jìn)k毫秒24voidadvanceSeconds(intk)//前進(jìn)k秒25{26//**2************found**********27_________;28}29voidadvanceMinutes(intk){ad-vanceHour(minutes.a(chǎn)dvance(k));}//前進(jìn)k分鐘30voidadvanceHour(intk)fhours.a(chǎn)d-vance(k);)//前進(jìn)k小時(shí)31voidshow()const{//按“小時(shí):分:秒.毫秒”的格式顯示時(shí)間32intc=cout.fill(’0’);//將填充字符設(shè)置為’0’33cout<41intNumber::advance(intk)42{43n+=k;//增加k個(gè)單位44ints=0;//s用來(lái)累計(jì)進(jìn)位45//**3************found**********46while(n>=base)______//n到達(dá)或超過(guò)base即進(jìn)位47returns;//返回進(jìn)位48}49intmain()50{51TimeOfDaytime(1,2,3,4);//初始時(shí)間:1小時(shí)2分3秒4毫秒52time.show();//顯示時(shí)間53time.a(chǎn)dvanceHour(5);//前進(jìn)5小時(shí)54time.a(chǎn)dvanceSeconds(122);//前進(jìn)122秒(2分零2秒)55time.a(chǎn)dvanceMilliS(1017);//前進(jìn)1017毫秒(1秒零17毫秒)56cout<標(biāo)準(zhǔn)答案:(1)Number<60>seconds(2)advanceMinutes(seconds.a(chǎn)dvaflce(k))(3){s++;n-=base;}知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)模板類(lèi)的掌握,這里是一個(gè)定義數(shù)據(jù)成員seconds的語(yǔ)句,seconds用來(lái)表示“秒”,可以根據(jù)小時(shí)、分、毫秒的定義形式填寫(xiě),即Number<60>seconds。(2)主要考查考生對(duì)成員函數(shù)的掌握,此處是函數(shù)ad-vanceSeconds中的一條語(yǔ)句,它使時(shí)間前進(jìn)k秒。將前后語(yǔ)句進(jìn)行對(duì)比,可以知道應(yīng)該填人語(yǔ)句advanceMinutes(sec-onds.a(chǎn)dvance(k))。(3)考查while循環(huán)語(yǔ)句,此處是函數(shù)advance中的一條語(yǔ)句,它確定增加k后n的當(dāng)前值和進(jìn)位,并返回進(jìn)位。變量s表示累加進(jìn)位,當(dāng)n到達(dá)或超過(guò)base即進(jìn)位,進(jìn)位時(shí)s要自加1,因此為{s++;n-=base}。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:1,2,3,4,5,注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在********error********的下面。1#include2C1assTestClass3{4//********error********5TestClass(inti)6{7m_i=i;8}9voidprint()10{11cout<<++m_i<<’,’;12}13public:14intm_i;15};16intmain()17{18//********error********19inti();20TestClassdata(0);21while(i>5)22{23//********error********24i++;25data.print();26}27cout<標(biāo)準(zhǔn)答案:(1)public:TestClass(inti)(2)inti(10);(3)i--:知識(shí)點(diǎn)解析:程序要求輸出1,2,3,4,5,。主函數(shù)main()中有while循環(huán),調(diào)用類(lèi)TestClass中的成員函數(shù)print()實(shí)現(xiàn)函數(shù)功能。[解題思路](1)打開(kāi)moidl.cpp調(diào)試程序,顯示錯(cuò)誤提示為第一標(biāo)識(shí)下“modil.cpp(20):errorC2248:’TestClass::TestClass’:cannotaccessprivatememberdeclaredinclass’TestClassp’”,提示類(lèi)TestClass中的構(gòu)造函數(shù)TestClass被定義為私有的,無(wú)法獲得,所以這里應(yīng)該是public,即“public:TestClass(inti)”。(2)題目中要求輸出結(jié)果為1,2,3,4,5,即循環(huán)5次。第三個(gè)表示while循環(huán)條件是i大于5就進(jìn)行循環(huán)?!癷nti();”應(yīng)該實(shí)現(xiàn)變量i的初始化,題干中要求不能刪除i初始化中的括號(hào),所以在括號(hào)中添加i的初始值。大于5且循環(huán)5次,所以i的初始值為10,而while循環(huán)中對(duì)i的操作應(yīng)該是i--,這樣第二個(gè)和第三個(gè)標(biāo)示下應(yīng)該是“inti(10);”和“i--;”0二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(char*s,char*s1,char水s2)中形參字符串s1和s2有相同的字符個(gè)數(shù),且sl中各字符互不相同。該函數(shù)實(shí)現(xiàn)將已知字符串S中所有在字符串sl中也存在的字符,都用字符串s2中的對(duì)應(yīng)位置的字符代替。例如:設(shè)字符串S、s1和s2分別為:S[]="ABCABC",sl[]="AC",s2[]="ZX"則s2中的字符Z和X分別對(duì)應(yīng)sl中的字符C和A,函數(shù)調(diào)用fun(s,s1,s2)將字符串S的內(nèi)容變?yōu)椤盳BXZBX”。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。1#include2voidfun(char*S,char*S1,char*s2)3{45}6voidmain()7{8charS[]="ABCABC";9fun(S,"AC","ZX");10std::cout<標(biāo)準(zhǔn)答案:1char*p,*q;2for(;*s;s++)//在串s中找符合條件的字符,然后替換3{4for(p=s1,q=s2;*p;p++,q++)//讓指針p,q分別指向s1和s25{6if(*p==*s)//如果s中存在s1中p指向的字符7{8*s=*q;//那么用q指向的s2中的字符替換9}10}11}知識(shí)點(diǎn)解析:(1)該程序功能是將已知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的對(duì)應(yīng)位置的字符代替。它的解題思路,首先是找到符合替換條件的字符,然后進(jìn)行替換。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(chat*s,char*s1,char*s2)中的s1,s2參數(shù)為要替換的字符串,s為要被替換的字符串。[解題思路](1)讓指針P,q分別指向s1和s2。(2)然后利用for循環(huán)對(duì)s中的每一個(gè)當(dāng)前字符與p指向的字符進(jìn)行比較。(3)如果(2)中的比較結(jié)果相等,那么用q指向s2中對(duì)應(yīng)的字符替換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。通過(guò)繼承完成輸入到屏幕指定的信息:TestClassATestClassBTestClassC其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)完成類(lèi)B虛繼承于A,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)C虛繼承于A,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類(lèi)D繼承于B,C,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)fun通過(guò)調(diào)用基類(lèi)的fun,完成所輸出的內(nèi)容,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。1#include2C1assTestClassA3{4public:svoidfun(){6Cout<<"TestClassA"<標(biāo)準(zhǔn)答案:(1)將“clasSTestClassB:”補(bǔ)充完整為:classTestClassB:virtualpublicTestClassA(2)將“clasSTestClassC:”補(bǔ)充完整為:classTestClassC:virtualpublicTestClassA(3)將“clasSTestClassD:”補(bǔ)充完整為:classTestClassD:publicTestClassB,publiCTestClassC(4)添功能語(yǔ)句:TestClassA::fun();TestClassB::fun();TestClassC::fun();知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)和函數(shù)fun實(shí)現(xiàn)各種輸出操作。[解題思路](1)題目1要求“完成類(lèi)B虛繼承于A”。在C++中,聲明虛基類(lèi)的一般形式為:class派生類(lèi)名:virtual繼承方式基類(lèi)名,由題目知道TestClassA為基類(lèi),TestClassB為派生類(lèi),所以第1個(gè)標(biāo)識(shí)下修改為“classTestClassB:virtualpublicTestClassA”。(2)同(1),題目2和題目3中要求的標(biāo)識(shí)2和3下的語(yǔ)句修改為“classTestClassC:virtualpublicTestClassA”和“classTestClassD:publicTestClassB,publicTestClassC”。(3)題目4要求“函數(shù)fun通過(guò)調(diào)用基類(lèi)的fun,完成所輸出的內(nèi)容”。在C++中調(diào)用基類(lèi)的成員函數(shù),要使用作用域限定符“::”,類(lèi)名A::函數(shù)fun,就是調(diào)用類(lèi)A的函數(shù)fun,根據(jù)題目中的要求補(bǔ)全對(duì)類(lèi)TestClassA、TestClassB以及TestClassC中的fun函數(shù),即“TestClassA::fun();TestClassB::fun0;TestClassC::fun();”。國(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é)果為:sizeof(str1)=5sizeof(str2)=10sizeof(str3)=1注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。(1)不能刪除assert()語(yǔ)句:(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。#include#includevoidmain(){char*str1=“abc”;∥********error********assert(sizeof(Str1)==3);cout<<“siZeof(Str1)=5”<標(biāo)準(zhǔn)答案:(1)assert(Sizeof(str1)==4);(2)assert(Sizeof(str2)==10);(3)assert(Sizeof(str3)==1);知識(shí)點(diǎn)解析:本題的功能是利用assert()函數(shù),則會(huì)產(chǎn)生一個(gè)中斷異常。從已定源程序的main主函數(shù)開(kāi)始入手,依次執(zhí)行程序中的語(yǔ)句,輸出題目中要求的輸出值。本題在調(diào)試的時(shí)候并不會(huì)產(chǎn)生錯(cuò)誤,它的錯(cuò)誤是邏輯錯(cuò)誤。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是:將n所有因數(shù)存放到des中,通過(guò)length引用返回因數(shù)的個(gè)數(shù),比如fator(a,length,20)執(zhí)行后,則a={1,2,4,5,10,20},length=6。注意:只能補(bǔ)充函數(shù)factor0,請(qǐng)勿改動(dòng)其他部分的內(nèi)容。#include#defineMAXNLEN100voidfactor(int*des,int&length,intn){}voidmain(){inta[MAXNLEN],length;intn=20;factor(a,length,n);for(inti=0;i標(biāo)準(zhǔn)答案:length=0;for(inti=1;i<=n;i++){if(n%i==0)//判斷是否n的因數(shù){des[length]=i;length++;}}知識(shí)點(diǎn)解析:函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是將n所有因數(shù)存放到des中,通過(guò)length引用返回因數(shù)的個(gè)數(shù),求因數(shù)可采用取余數(shù)的方法,如果兩數(shù)相除余數(shù)為0則說(shuō)明除數(shù)是被除數(shù)的因數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,這個(gè)程序完成輸出到屏幕一些特定的信息,但工程有錯(cuò)誤或者不完整,請(qǐng)完成以下功能:(1)初始化mNum2的值為j,請(qǐng)?jiān)谧⑨尅?******1*******后添加適當(dāng)?shù)恼Z(yǔ)句。(2)補(bǔ)充全局函數(shù)fun()使之能夠調(diào)用類(lèi)TestClass的成員變量,請(qǐng)?jiān)谧⑨專(zhuān)?

溫馨提示

  • 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)論