國家二級(C++)機試模擬試卷3(共331題)_第1頁
國家二級(C++)機試模擬試卷3(共331題)_第2頁
國家二級(C++)機試模擬試卷3(共331題)_第3頁
國家二級(C++)機試模擬試卷3(共331題)_第4頁
國家二級(C++)機試模擬試卷3(共331題)_第5頁
已閱讀5頁,還剩108頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C++)機試模擬試卷3(共9套)(共331題)國家二級(C++)機試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()。A、內(nèi)模式可以有多個,外模式和模式只有一個B、外模式可以有多個,內(nèi)模式和模式只有一個C、內(nèi)模式只有一個,模式和外模式可以有多個D、模式只有一個,外模式和內(nèi)模式可以有多個標(biāo)準答案:B知識點解析:數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。2、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標(biāo)準答案:B知識點解析:A錯誤,可行性分析階段產(chǎn)生可行性分析報告。c錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B正確,軟件需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。3、下列敘述中,不屬于設(shè)計準則的是()。A、提高模塊獨立性B、使模塊的作用域在該模塊的控制域中C、設(shè)計成多入口、多出口模塊D、設(shè)計功能可預(yù)測的模塊標(biāo)準答案:C知識點解析:大量軟件設(shè)計表明,以下的設(shè)計準則是可以借鑒為設(shè)計的指導(dǎo)和對軟件結(jié)構(gòu)圖進行優(yōu)化,這些準則是:提高模塊獨立性;模塊規(guī)模適中;深度、寬度、扇出和扇入適當(dāng);使模塊的作用域在該模塊的控制域中;應(yīng)減少模塊的接口和界面的復(fù)雜性;設(shè)計成單入口、單出口的模塊;設(shè)計功能可預(yù)測的模塊。4、下列程序執(zhí)行后,輸出的結(jié)果是()。intx=-5,y=0;while(++x)y++;cout<A、1B、2C、4D、5標(biāo)準答案:C知識點解析:循環(huán)條件是++x,在c++中,對于非0值全都為真,0代表假。x的初始值為-5,所以循環(huán)能進行4次。5、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個派生類公有繼承其基類,則該派生類對象可以訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標(biāo)準答案:D知識點解析:私有繼承方式為基類的公用成員和保護成員在派生類中成了私有成員,其私有成員仍為基類私有,但派生類對象可以訪問基類的保護成員,所以基類對象不能賦值給派生類對象。抽象類是指含有純虛擬函數(shù)的類,所以選項D正確。6、下面關(guān)于指針的說法中錯誤的是()。A、在指針定義的同時可以對其進行初始化B、指針根據(jù)其所指向變量的類型的不同,所占用內(nèi)存大小也不同C、指針中存放的是內(nèi)存單元的地址D、相同類型的指針之間可以相互賦值標(biāo)準答案:B知識點解析:指針是一種用來存放其他變量地址的數(shù)據(jù)類型,它的聲明形式為:(類型)*(變量名),可以在聲明的時候?qū)ζ溥M行初始化。由于其存放的是內(nèi)存單元的地址,所以大小一般都是4個字節(jié)。7、下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()。A、構(gòu)造函數(shù)可以設(shè)置默認的參數(shù)B、構(gòu)造函數(shù)在定義類對象時自動執(zhí)行C、構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)D、構(gòu)造函數(shù)不可以重載標(biāo)準答案:D知識點解析:在一個類中可以定義多個構(gòu)造函數(shù),以便對類對象提供不同的初始化的療法,供用戶選用。這些構(gòu)造函數(shù)具有相同的名字,而參數(shù)的個數(shù)或參數(shù)的類型不相同。8、下面關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述中,錯誤的是()。A、析構(gòu)函數(shù)可以聲明為虛函數(shù)B、對虛析構(gòu)函數(shù)的調(diào)用可以采用動態(tài)聯(lián)編C、一個類的虛函數(shù)僅對派生類中重定義的函數(shù)起作用,對其他函數(shù)沒有影響D、構(gòu)造函數(shù)可以聲明為虛函數(shù)標(biāo)準答案:D知識點解析:析構(gòu)函數(shù)可以聲明為虛函數(shù),但是構(gòu)造函數(shù)不能聲明為虛函數(shù);類的虛函數(shù)僅對派生類中重定義的函數(shù)起作用,對其他函數(shù)沒有影響。9、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedld1;Derived2d2;d1.data=0;//①d2.data=0;//②return0;}下列關(guān)于程序編譯結(jié)果的描述中,正確的是()。A、①②皆無編譯錯誤B、①有編譯錯誤,②無編譯錯誤C、①無編譯錯誤,②有編譯錯誤D、①②皆有編譯錯誤標(biāo)準答案:C知識點解析:本題考查公用繼承和保護繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有。本題中Derivedl公用繼承Base,所以①編譯正確,Derived2保護繼承Base,所以②編譯不正確。10、下列關(guān)于成員函數(shù)特征的描述中,錯誤的是()。A、成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B、成員函數(shù)可以重載C、成員函數(shù)可以設(shè)置參數(shù)的默認值D、成員函數(shù)可以是靜態(tài)的標(biāo)準答案:A知識點解析:因為成員函數(shù)可以在類體內(nèi)定義,也可以在類體外定義,所以成員函數(shù)不一定都是內(nèi)聯(lián)函數(shù);成員函數(shù)可以重載,可以設(shè)置參數(shù)的默認值,成員函數(shù)可以是靜態(tài)的。11、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標(biāo)準答案:B知識點解析:本題考查整型變量的類型,A、C選項中前者為無符號的,后者為有符號的,D選項中shortint為2個字節(jié),int為4個字節(jié)。12、程序執(zhí)行后的輸出結(jié)果是()。#includevoidmain(){charflag=’c’:switch(flag){case’a’:cout<<’]’<’b’:cout<<:"2"<A、12B、23C、34D、45標(biāo)準答案:C知識點解析:因為flag=’c’,所以執(zhí)行cout<<"3"<13、下列符號中能夠作為C++標(biāo)識符的是()。A、constB、2aC、_shapeD、-count標(biāo)準答案:C知識點解析:本題考查C++標(biāo)識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標(biāo)識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識符。選項A是關(guān)鍵字,選項B不能以數(shù)字開頭,選項D包含了字符"-",且不能以此字符開頭。故答案為C。14、已知函數(shù)f的原型是voidf(int*a,long&b);變量v1、v2的定義是:intv1;longv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標(biāo)準答案:D知識點解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。本題中函數(shù)f的第一個形參為指針,那么調(diào)用f函數(shù)時,第一個參數(shù)必須是地址,所以必須是&vl,第二個形參為引用,所以對應(yīng)實參為v2即可。故本題答案為D。15、有如下類定義:classPoint{private:staticinthow_many;};_________how_many=0;要初始化Point類的靜態(tài)成員how_many,下畫線處應(yīng)填入的內(nèi)容是()。A、intB、staticintC、intPoint::D、staticintPoint::標(biāo)準答案:C知識點解析:本題考查靜態(tài)數(shù)據(jù)成員,靜態(tài)數(shù)據(jù)成員可以初始化,但只能在類體外進行初始化,其一般形式為:數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初值。所以本題答案為C。16、有如下程序:#include<iostream>usingnamespacestd;classAA{intk:protected:intn;voidsetK(intk){this一>k=k;}public:voidsetN(intn){this一>n=n;}};classBB:publicAA{/*類體略*/};intmain(){BBx;x.n=1://1x.setS(2);//2X.k=3://3x.setK(4);//4return0;}在標(biāo)注號碼的四條語句中正確的是()。A、1B、2C、3D、4標(biāo)準答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo成員,不能直接使用,即1、3、4錯誤,所以B選項正確。17、將x+y*z中的“+”用成員函數(shù)重載,“*”用友元函數(shù)重載應(yīng)寫為()。A、operator+(operator*(y,z))B、x.operator+(operator*(y,z))C、x.operator+(x*(y,z))D、x+(operator*(y,z))標(biāo)準答案:B知識點解析:在定義了重載運算符后的函數(shù)后,函數(shù)operator十重載了運算符“+”。如果在類以外的其他地方定義了一個函數(shù),在類體中用fiiend對該函數(shù)進行聲明,此函數(shù)就稱為本類的友員函數(shù)?!?”用友元函數(shù)重載就是運算符函數(shù)不作為成員函數(shù),而把它放在類外,“*”被改寫為“operator*”?!?”為成員函數(shù)重載,x.operator+。所以x+-y*z被改寫為“x.operator+(operator*(y,z))”。18、下列關(guān)于常成員的敘述中,正確的是()。A、常成員函數(shù)只能由常對象調(diào)用B、常成員函數(shù)不能更新對象的狀態(tài)C、常數(shù)據(jù)成員可以被類對象共享D、常數(shù)據(jù)成員可以在構(gòu)造函數(shù)體中初始化標(biāo)準答案:B知識點解析:常對象只能調(diào)用常成員函數(shù),普通對象可以調(diào)用全部成員函數(shù),包括常成員函數(shù),選項A錯誤;常成員函數(shù)不能改變所操作對象的數(shù)據(jù)成員,即常成員函數(shù)不能更新對象的狀態(tài),選項B正確;常數(shù)據(jù)成員是指在類定義中不能修改其值的數(shù)據(jù)成員,它和普通類成員一樣,不能被所有類對象共享,選項C錯誤;類中的常數(shù)據(jù)成員只能通過構(gòu)造函數(shù)的參數(shù)初始化列表進行初始化,選項D錯誤。故本題答案為B選項。19、有如下程序:#includeusingnamespacestd;classAppliance{public:Appliance(){cout<<’A’;}~Appliance(){}};classTV:publicAppliance{public:TV(ints=41):size(s){cout<<’T’<A、T41B、AT41C、T41T41D、AT41AT41標(biāo)準答案:B知識點解析:執(zhí)行派生類構(gòu)造函數(shù)的順序是:1、調(diào)用基類構(gòu)造函數(shù),2、調(diào)用子對象構(gòu)造函數(shù),3、再執(zhí)行派生類析構(gòu)函數(shù),4、執(zhí)行基類的析構(gòu)函數(shù),所以本題中定義room1時,先調(diào)用基類構(gòu)造函數(shù)輸出A,然后執(zhí)行TV的構(gòu)造函數(shù)輸出T41,而定義對象指針,并不會調(diào)用構(gòu)造函數(shù),所以什么也不輸出,結(jié)果為AT41,B選項正確。20、有如下程序:#include#includeusingnamespacestd;classAnimal{public:virtualstringGetType()const{return"Animal";}virtualstringGetVoice()const{return"Voice";}};classDog:publicAnimal{public:stringGetType()const{return"Dog";}stringGetVoice()const{return"Woof";}};classCat:publicAnimal{public:stringGetType()const{return"Cat";}stringGetVoice()const{return"Miaow";}};voidType(Animal&a){cout<A、DogspeakVoice-CatspeakVoiceB、DogspeakWoof-CatspeakMiaowC、AnimalspeakVoice-AnimalspeakVoiceD、AnimalspeakWoof-AnimalspeakMiaow標(biāo)準答案:B知識點解析:本題考查虛函數(shù)的運用,本題中定義Dogd;Type(d)時,執(zhí)行類class的Type函數(shù),輸出Dog,然后輸出speak,然后執(zhí)行派生類的Speak函數(shù)輸出Voice,最后輸出-,同理cat輸出類似,所以結(jié)果為B選項正確。21、以下程序中調(diào)用cin函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是()。#includevoidmain(){int*p,*q,a,b;p=&a;cout<<"inputa:";cin>>p;}A、*P表示的是指針變量P的地址B、p表示的是變量a的地址,而不是變量a的值C、*p表示的是指針變量P的值D、*p只能用來說明P是一個指針變量標(biāo)準答案:B知識點解析:p表示的是變量a的地址,定義后*p表示的是變量a的值。22、下列語句或語句序列中錯誤的是A、inta;constint*point=&a;B、constinta=10;C、constint*point=10;D、constint*point=newint(10);標(biāo)準答案:C知識點解析:本題考查常指針,C選項中不能直接將整型變量賦值給常指針,所以C選項錯誤。23、有如下類定義:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};其中YY類的對象所包含的數(shù)據(jù)成員的個數(shù)是A、4B、3C、2D、1標(biāo)準答案:C知識點解析:派生類公用繼承基類,那么基類中私有不可訪問,保護成員依舊是保護成員,公有成員依舊是公有成員;保護繼承基類,那么基類的公用成員和保護成員在派生類中成為保護成員,私有成員不可訪問;私有繼承那么公有成員和保護成員變?yōu)樗接校接谐蓡T不可訪問。本題中派生類繼承基類的私有成員,不可直接訪問但是可以通過基類的成員函數(shù)使用基類的私有數(shù)據(jù)成員,加上派生類的本身的數(shù)據(jù)成員,共有2個數(shù)據(jù)成員,C選項正確。24、有如下類聲明:classHow{intk;public:How(intn):k(n){}How(How&h):k(h.k){}};則類How所擁有的構(gòu)造函數(shù)的數(shù)量是A、2B、3C、4D、5標(biāo)準答案:A知識點解析:C++中,一個類若定義了構(gòu)造函數(shù),編譯器就不會再生成默認構(gòu)造函數(shù),若定義了復(fù)制構(gòu)造函數(shù),編譯器也不會再生成復(fù)制構(gòu)造函數(shù),所以類How擁有兩個構(gòu)造函數(shù),答案為A。25、有如下類聲明:classBase1{};classBase2{};classDerived:publicBase2,publicBase1{};在一個Derived對象消亡時,析構(gòu)函數(shù)被調(diào)用的順序是A、~Derived、~Base1、~Base2B、~Derived、~Base1、~Base2C、~Base1、~Base2、~DerivedD、~Base2、~Base1、~Derived標(biāo)準答案:A知識點解析:C++中,派生類構(gòu)造函數(shù)都是先調(diào)用基類構(gòu)造函數(shù),再根據(jù)聲明次序定義數(shù)據(jù)成員,另外對于多繼承,派生類的構(gòu)造函數(shù)初始化列表中,基類構(gòu)造函數(shù)是按照基類在派生類的派生列表中出現(xiàn)的次序調(diào)用的;而析構(gòu)函數(shù)是按構(gòu)造函數(shù)運行順序的逆序進行調(diào)用的,可知題目中析構(gòu)函數(shù)的調(diào)用順序為:派生類Derived的析構(gòu)函數(shù),Base1的析構(gòu)函數(shù),Base2的析構(gòu)函數(shù);答案為A。26、下列語句中,與語句"(aA、if(aB、if(a>=b)n=0;C、if(a>=b)n=0;elseif(b>=c)n=1;D、if(a標(biāo)準答案:D知識點解析:本題考查逗號表達式,題目中逗號表達式(ac時,n為0;a>b時,n為0;與該意思相同的就是D選項,而A選項if語句中的判斷語句不正確。27、一棵二叉樹共有25個結(jié)點,其中5個是葉子結(jié)點,則度為1的結(jié)點數(shù)為()A、16B、10C、6D、4標(biāo)準答案:A知識點解析:根據(jù)二叉樹的性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個,所以本題中度為2的結(jié)點是5-1=4個,所以度為1的結(jié)點的個數(shù)是25-5-4=16個。28、有如下類定義:classPass{staticintcount;public:Pass(){}voidshow()const;friendintgetCount();staticintincre();};在所聲明的4個函數(shù)中,具有this指針的有A、Pass和showB、Pass和showC、show和increD、getCount和incre標(biāo)準答案:A知識點解析:C++的類定義中,只有非靜態(tài)成員函數(shù)具有this指針,Pass類中g(shù)etCount()函數(shù)是友元函數(shù),不屬于成員函數(shù),沒有this指針,選項B、D錯誤;incre()函數(shù)是靜態(tài)成員函數(shù),沒有this指針,選項C錯誤;答案為A。29、有如下類定義:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是類D的對象,則下列語句中不違反訪問控制權(quán)限的是A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();標(biāo)準答案:A知識點解析:本題考查派生類對基類成員的訪問屬性,派生類私有繼承基類,那么基類的公用成員和保護成員在派生類中成為私有成員,所以派生類可以直接使用基類的公用成員,A選項正確。30、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/S54B、/N41/C54C、/C41/S54D、/C41/C54標(biāo)準答案:A知識點解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,執(zhí)行room1.Print時執(zhí)行構(gòu)造函數(shù)給size賦值為41,然后執(zhí)行voidPrint(){cout<<’/’<<’N’<31、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}運行這個程序的輸出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A標(biāo)準答案:A知識點解析:main()函數(shù)中首先動態(tài)創(chuàng)建AA類對象,調(diào)用AA類構(gòu)造函數(shù),輸出"A",創(chuàng)建BB類對象,調(diào)用BB類構(gòu)造函數(shù),輸出"B",使用delete顯式銷毀AA類對象,調(diào)用AA類析構(gòu)函數(shù),輸出"~A",程序結(jié)束時,銷毀BB類對象,編譯器自動調(diào)用BB類析構(gòu)函數(shù),輸出"~B",整個程序輸出結(jié)果為:"AB~A~B",答案為A。32、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;cout<<"Thevalueatp:"<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標(biāo)準答案:D知識點解析:先定義指針變量,然后給指針變量賦初值有三種情況:①用取地址運算符"&"將變量地址賦給指針變量,如p=&a;②將一個指針變量中的地址賦給另一個指針變量,如p=p1;③給指針變量賦空值0,如q=0,表示該指針變量不指向任何變量。而不能用一個常量給指針變量賦初值,所以本題選D。33、執(zhí)行下列語句段后,輸出字符"*"的個數(shù)是()。for(inti=50;i>1;i-=2)cout<<′*′;A、24B、25C、26D、50標(biāo)準答案:B知識點解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出"*",所以總共輸出25次。34、面向?qū)ο蠓椒ㄖ?,繼承是指()。A、一組對象所具有的相似性質(zhì)B、一個對象具有另一個對象的性質(zhì)C、各對象之間的共同性質(zhì)D、類之間共享屬性和操作的機制標(biāo)準答案:D知識點解析:繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機制。35、下列關(guān)于重載運算符錯誤的是A、運算符::不能被重載B、重載類型轉(zhuǎn)換運算符不需要聲明返回值C、-既可以作為一元運算符,又可以作為二元運算符被重載D、運算符[]不能被重載標(biāo)準答案:D知識點解析:本題考查運算符重載,重載不能改變運算符運算對象的個數(shù);不能改變運算符的優(yōu)先級別;不能改變運算符的結(jié)合性;重載運算符的函數(shù)不能有默認值,否則就改變了運算符參數(shù)的個數(shù);不能定義新的運算符,不能重載的運算符只有5個:.、.*、::、sizeof、?:。所以本題選擇D。36、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=10;}A(inta=5){init();a+=10;}};intA::a=0;Aobj;intmain(){cout<<obj.a;return0;}運行時輸出的結(jié)果是A、0B、5C、15D、10標(biāo)準答案:D知識點解析:靜態(tài)數(shù)據(jù)成員獨立于任何對象而存在,不是類對象的組成部分,普通成員函數(shù)可以引用靜態(tài)數(shù)據(jù)成員。程序定義了類A,并在A的定義體外初始化A的靜態(tài)數(shù)據(jù)成員a=0,構(gòu)造函數(shù)A(int)中的形參a與A::a屬于不同的變量,在函數(shù)A(int)中,形參a屏蔽了A::a,所以A(int)中引用的變量a是形參,而不是A::a,對a的任何操作都不影響A::a,而成員函數(shù)init中引用的是A::a,語句a=10是將A::a賦值為10,所以輸出obj.a其實是輸出A::a,結(jié)果為10;答案為D。37、在滿足實體完整性約束的條件下()。A、一個關(guān)系中應(yīng)該有一個或多個候選關(guān)鍵字B、一個關(guān)系中只能有一個候選關(guān)鍵字C、一個關(guān)系中必須有多關(guān)鍵字個候選D、一個關(guān)系中可以沒有候選關(guān)鍵字標(biāo)準答案:A知識點解析:實體完整性約束要求關(guān)系的主鍵中屬性值不能為空值,所以選擇A。38、若目前E盤根目錄下不存在data.txt文件,則下列打開文件方式不會自動創(chuàng)建data.txt文件的是A、ifstreamfin;fin.open("e:\\data.txt",ios_base::in);B、fstreamfio;fio.open("e:\\data.txt",ios_base::out);C、ofstreamfout;fout.open("e:\\data.txt",ios_base::out);D、ofstreamfout;fout.open("e:\\data.txt",ios_base::app);標(biāo)準答案:A知識點解析:定義文件流對文件進行操作時,需要指定文件模式,選項B、C中,ios_base::out是打開文件進行寫操作,刪除文件所有數(shù)據(jù),如果文件不存在則創(chuàng)建它,不符合題意;選項D中,ios_base::app是打開文件進行寫操作,在文件尾部追加數(shù)據(jù),由于文件與ofstream流關(guān)聯(lián),當(dāng)文件不存在時創(chuàng)建文件,也不符合題意,選項A正確,ios_base::in是打開文件做讀操作,文件不存在時打開文件失敗。答案為A。39、運動會中一個運動項目可以有多名運動員參加,一個運動員可以參加多個項目。則實體項目和運動員之間的聯(lián)系是A、多對多B、一對多C、多對一D、一對一標(biāo)準答案:A知識點解析:一般來說,實體集之間必須通過聯(lián)系來建立聯(lián)接關(guān)系,分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。一個運動項目有很多運動員參加,而一個運動員可以參加多項運動項目,故實體項目和運動員之間的聯(lián)系是多對多,A選項正確。二、基本操作題(本題共1題,每題1.0分,共1分。)40、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運行時有錯,請改正其中的錯誤,使得程序正常運行,并使程序輸出的結(jié)果為:sizeof(strl)=5sizeof(str2)=10sizeof(str3)=l注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********error********的下面。(1)不能刪除assert()語句;(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會產(chǎn)生一個中斷異常。1#include2#include3voidmain()4{5char*strl=”abc”;6//********error********7assert(sizeof(strl)==3);8cout<<"sizeof(strl)=5"<標(biāo)準答案:(1)assert(Sizeof(strl)==4);(2)assert(Sizeof(str2)==10);(3)assert(Sizeof(str3)==1);知識點解析:本題的功能是利用assert()函數(shù),則會產(chǎn)生一個中斷異常。從已定源程序的main主函數(shù)開始入手,依次執(zhí)行程序中的語句,輸出題目中要求的輸出值。本題在調(diào)試的時候并不會產(chǎn)生錯誤,它的錯誤是邏輯錯誤。[解題思路](1)assert()函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert()函數(shù)就要為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(strl)==3);”語句中“sizeof(strl)==3”為假,這個會使程序產(chǎn)生異常,不能正常執(zhí)行。兇為strl的值為abc但是它還有一個尾符,所以它的長度應(yīng)該是4,而不是3,所以第1個標(biāo)識下修改為“assert(sizeof(str1)==4);”。(2)同(1),str2[10]說明,str2的空間為10,第2個標(biāo)識下修改為“assert(sizeof(str2)--lO);”。(3)同(1),charstr3=23;語句說明23是字符,占空間為l,所以修改為“assert(sizeof(str3)==1);”。三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)41、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。此工程中包含一個源程序文件main.epp,其中有“房間”類Room及其派生出的“辦公室”類Office的定義,還有主函數(shù)main的定義。請在程序中“//****found****”下的橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:辦公室房間號:308辦公室長度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門:會計科注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。1#include2usingnamespacestd;3classRoom{//“房間”類4introomno;/房間號5doublelength;//房間長度(m)6doublewidth;//房間寬度(m)7public:8Room(intthe_room_no,doublethe_length,doublethe_width):room_no(the_room_no),length(the_length),width(the_width){)9inttheRoomNo()const{returnroom_10no;)11//返回房間號12doubletheLength()const{returnlength;)//返回房間長度13doubletheWidth()const{returnwidth;}//返回房間寬度14//**********found**********15doubletheArea()const{______}//返回房間面積(矩形面積)16};17classOffice:publicRoom{//"辦公室"類18char*depart;//所屬部門19public:20Office(intthe_room_no,doublethe_length,doublethe_width,constchar*the_depart)21//**********found**********22:______{23depart=newchar[strlen(the_de-part)+1];24//**********found**********25strcpy(________);26}27一Office(){delete[]departj}28constchar。theDepartment()const{returndepart;)//返回所屬部門29},30intmain(){31//**********found**********32Office_______;33cout<<"辦公室房間號:"標(biāo)準答案:(1)returnlength*width;(2)Room(the_room_no,the_length,the_width)(3)depart,the_depart(4)an_office(308,5.6,4.8,"會計科")知識點解析:(1)主要考查考生對成員函數(shù)的掌握,題目要求返回房間面積(矩形面積),由此可知空格部分要填寫的是一個return語句,返回房間面積,也就是length*width,因此可以得出程序returnlength*width;。(2)主要考查考生對派生類的構(gòu)造函數(shù)的掌握,派生類的構(gòu)造函數(shù)要使用成員列表初始法先對基類進行初始化。(3)考查strcpy函數(shù),南前一條語句depart=newchar[strlen(the_depart)+1];可知,程序給(tepart分配了長度為the_depan串長加1的空間,因此要復(fù)制字符串the_depan串到(tepart,直接填寫strepy(depart,the_depart)即可。(4)主要考查考生對類的掌握,題目要求輸出的結(jié)果為:辦公室房問號:308辦公室長度:5.6辦公室寬度:4.8辦公室面積:26.88辦公室所屬部門:會計科由Office類的構(gòu)造函數(shù)可知要定義的一個Office類的對象為an_office(308,5.6,4.8,"會計科")。四、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)42、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)No、Name[32],其中No是int型的數(shù)據(jù),Name[32]為字符型。請在注釋//********1********后添加適當(dāng)?shù)恼Z句。(2)完成函數(shù)set的定義,分別設(shè)置No和Name的值,請在注釋//********2********后添加適當(dāng)?shù)恼Z句。(3)完成函數(shù)print(),請在注釋//********3********后添加適當(dāng)?shù)恼Z句,打印的輸出如下:No=111Name=Garfield(4)加缺省構(gòu)造函數(shù),設(shè)置No為0,Name為空,請在注釋//********4********后添加適當(dāng)?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。1#include2classTeStClass3{4public:5//********1********67//********2********89{10No=no;11for(inti=0;strName[i]!=0;i++)12{13Name[i]=strName[i];14Name[i+1]=0;15}16}17voidprint()18{19//********3********2021}22TeStClass()23{24//********4********2526}27};28intmain()29{30TestClassstu;31Stu.Set(111,"Garfield");32stu.print();33return0;34}標(biāo)準答案:(1)添加語句:intNo;charName[32];(2)添加語句:voidSet(intno,char*strName)(3)添加語句:cout<<"No=II<知識點解析:本題程序的功能是利用成員函數(shù)set設(shè)置類成員數(shù)據(jù)數(shù)值,并利用成員函數(shù)print輸出成員數(shù)值。在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過調(diào)用類TestClass和其構(gòu)造函數(shù)實現(xiàn)各種輸出操作。[解題思路](1)題目l要求“定義類的公有數(shù)據(jù)成員函數(shù)No、Name[32],其中No是int型的數(shù)據(jù),Name[32]為字符型”。在已有程序中,類定義的public區(qū)域中,定義變量No,Name[32],即在第1個標(biāo)識下添加語句“intNo;charName[32];”。(2)題目2要求“完成函數(shù)set的定義,分別設(shè)置No和Name的值”。第2個標(biāo)識下說明函數(shù)set的語句中,應(yīng)該包括變量no,strName的定義,然后在函數(shù)中將其值賦值給No,Name,即添加定義語句“’voidSet(int,no,char*strName)”。(3)題目3要求“完成函數(shù)print()”,根據(jù)輸出結(jié)果,知道輸出的是No和Name的值,所以這里補全“cout<<"No="<國家二級(C++)機試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列程序?qū)、y和z按從小到大的順序排列,橫線處應(yīng)添加語句()。templatevoidfun(){Ta:if(x>y){a=x;x=y;y=a;}if(y>z){a=y;y=z;z=a;}if(x>y){a=x;x=y;y=a;}}A、Tx,Ty,TzB、Tx;y;zC、T&x,T&y,T&zD、T&x,&y,&z標(biāo)準答案:C知識點解析:函數(shù)fun的類型為void沒有任何返回值,函數(shù)中變量的改變,即參數(shù)的改變應(yīng)該影響實參。應(yīng)該是地址傳遞方式,即把引用型作為函數(shù)形參。類T是類的抽象,可以利用模板建立各種數(shù)據(jù)類型的類。所以補全函數(shù)的定義為“T&x,T&v,T&z”。2、下列哪項不是面向?qū)ο蟪绦蛟O(shè)計的主要特征()。A、封裝B、繼承C、多態(tài)D、結(jié)構(gòu)標(biāo)準答案:D知識點解析:面向?qū)ο蟪绦蛟O(shè)計的特點:標(biāo)識惟一性,分類性,多態(tài)性,封裝性,模塊獨立性好。3、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無意義標(biāo)準答案:A知識點解析:此題考查的是指針變量的定義與賦初值。語句*p=&a是定義指針并且給指針賦初值,指向a,所以指針的值就是變量a的地址,*p的值就是a的值。4、下列語句中,錯誤的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*const*point;標(biāo)準答案:D知識點解析:const是一個C++關(guān)鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。5、有如下程序:#includeusingnamespacestd;Classobj{staticinti;public:obj(){i++;}~Obi(){i--;}staticintgetVal(){returni;}};intobj::i=0;voidf(){objob2;cout<getVal();deleteob3:cout<A、232B、231C、222D、221標(biāo)準答案:D知識點解析:本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,調(diào)用順序為先構(gòu)造的后析構(gòu),后構(gòu)造的先析構(gòu)。本題中先定義了一個對象ob1,會執(zhí)行構(gòu)造函數(shù),那么i就變?yōu)榱?;再執(zhí)行函數(shù)f后,由于又定義了一個對象oh2,所以再次執(zhí)行構(gòu)造函數(shù),i就變?yōu)榱?,輸出了2。函數(shù)執(zhí)行完后執(zhí)行析構(gòu)函數(shù),i變?yōu)榱?,然后又定義了對象指針,i變?yōu)榱?。釋放ob3后,i變?yōu)榱?,所以答案為D。6、有以下程序,輸出結(jié)果()。#includevoidmain(){staticintb[][3]={{1,2,3),{4),{5,6));b[0][2]=12,b[1][2]=18;cout<<**<<“\t”<<**(b+1)<<“\t”<<**(b+1)<<“\t”<<*(*(b+1)+2)<<“\n”;cout<A、1441830B、114418C、441811D、444301標(biāo)準答案:A知識點解析:本題b是一個3×3的二維數(shù)組:利用指針表示數(shù)組:*(*(數(shù)組名+i)+j),**b表示b[0][0]元素,值是1,**(b+1)表示是b[0][1]的元素,值是4。*(*b+1)+2)表示b[1][2]的元素,值是18,b[0][2]+b[1][2]+b[2][2]之和是30。7、將前綴運算符“--”重載為非成員函數(shù),下列原型中能正確用于類中說明的是()。A、Deer&operator--(int);B、Deeroperator--(Deer&,int);C、friendDeer&operator--(Deer&);D、friendDeeroperatoi--(Deer&,int);標(biāo)準答案:D知識點解析:非成員函數(shù)重載用友元函數(shù)的形式實現(xiàn),“--”運算符重載分為前置和后置兩種重載方式。用友元函數(shù)來實現(xiàn)“--”運算符的重載時,前置“--”運算符的重載的一般格式為:friendoperator。--(ciassName&);后置++運算符的重載的一般格式為:friendoperator--(ClassName&,int)。所以答案為D。8、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};則下列說法中錯誤的是()。A、枚舉常量YELLOW的值為:1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準答案:D知識點解析:C++語言規(guī)定枚舉常量的默認值依次等于0,1,…,n—1。也可以給枚舉常量賦初值,方法是:在枚舉常量的后面跟上“=整型常量”,在給枚舉常量賦初值時,如果給其中任何一個枚舉常量賦初值,則其后的枚舉常量將按自然數(shù)的規(guī)則依次賦初值。所以本題答案為D。9、有如下程序:#includeusingnamespacestd;classA{public:A(inti=0):r1(i){}voidprint(){cout<<’E’<A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-標(biāo)準答案:D知識點解析:暫無解析10、程序調(diào)試的任務(wù)是()。A、設(shè)計測試用例B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、診斷和改正程序中的錯誤標(biāo)準答案:D知識點解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。11、下列程序的輸出結(jié)果是()。#include<iostream.h>intmin(inta,intb){if(a<b)returna;elsereturnb;return0;}voidmain(){cout<<min(1,min(2,3))<<endl;}A、0B、1C、2D、3標(biāo)準答案:B知識點解析:本題考查的是函數(shù)的調(diào)用,第一次調(diào)用min(2,3),因為2<3,所以返回值為2,第二次調(diào)用min(1,2),因為1<2,所以返回1。12、設(shè)循環(huán)隊列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過一系列入隊與退隊運算后,front=30,rear=10?,F(xiàn)要在該循環(huán)隊列中作順序查找,最壞情況下需要比較的次數(shù)為()。A、19B、20C、m一19D、m一20標(biāo)準答案:D知識點解析:循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態(tài)為front=rear=m,當(dāng)front=30,rear=10時,隊列中有m一30+10+1=m一19個元素,比較次數(shù)為m一20次,D選項正確。13、下面屬于黑盒測試方法的是()。A、錯誤推測法B、基本路徑測試C、判定覆蓋D、條件覆蓋標(biāo)準答案:A知識點解析:黑盒測試方法也稱為功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證。黑盒測試方法主要有等價類劃分法、邊界值分析法、錯誤推測法和因果圖等。白盒測試方法主要有邏輯覆蓋測試(語句覆蓋、路徑覆蓋、判斷覆蓋、條件覆蓋)、基本路徑測試等。故本題答案為A選項。14、某二叉樹中共有935個結(jié)點,其中葉子結(jié)點有435個,則該二叉樹中度為2的結(jié)點個數(shù)為()。A、64B、66C、436D、434標(biāo)準答案:D知識點解析:在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件個數(shù)稱為該結(jié)點的度,所有結(jié)點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。葉子結(jié)點有435個,則度為2的結(jié)點為434,D選項正確。15、下面重載乘法運算符的函數(shù)原型聲明中錯誤的是()。A、TestClassoperator*(MyClass,double);B、TestClassoperator*(double,MyClass);C、TestClassoperator*(double,double);D、TestClassoperator*(MyClass,MyClass);標(biāo)準答案:C知識點解析:重載的運算符應(yīng)該保持其原有的基本語義。重載的運算符應(yīng)盡量保持其原有的特性。運算符的重載應(yīng)當(dāng)配套,至少要有一個形式參數(shù)是類的類型。16、有如下函數(shù)模板定義:templateT1FUN(T2n){returnn*5.0;}若要求以int型數(shù)據(jù)9作為函數(shù)實參調(diào)用該模板,并返回一個double型數(shù)據(jù),則該調(diào)用應(yīng)表示為A、FUN(9)B、FUN<9>C、FUN(9)D、FUN<9>(double)標(biāo)準答案:C知識點解析:本題中要求返回值為double行,那么T1就是double型,T2默認為int,所以只有C選項正確。17、下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是()。A、用一個對象去初始化同一類的另一個新對象時B、將類的一個對象賦值給該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時標(biāo)準答案:B知識點解析:此題考查的是復(fù)制構(gòu)造函數(shù)的概念。用一個已知的對象初始化一個正在創(chuàng)建的同類對象時,就會發(fā)生復(fù)制構(gòu)造函數(shù)。因此,選項A、C、D均會調(diào)用復(fù)制構(gòu)造函數(shù),而只有選項B沒有創(chuàng)建的動作,不調(diào)用復(fù)制構(gòu)造函數(shù)。18、假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb;},則執(zhí)行Ax(4,5);語句后,x.a(chǎn)和x.b的值分別為()。A、3和15B、5和4C、4和20D、20和5標(biāo)準答案:C知識點解析:因為aa后減,所以a=4:b的值與a、bb相關(guān),b=4*5=20,與aa沒有任何關(guān)系。19、對于一個類定義,編譯器可能會自動生成的函數(shù)不包括A、復(fù)制構(gòu)造函數(shù)B、缺省的構(gòu)造函數(shù)C、析構(gòu)函數(shù)D、友元函數(shù)標(biāo)準答案:D知識點解析:C++中,對于一個類定義,編譯器可能會自動生成的函數(shù)有:默認(缺?。?gòu)造函數(shù),復(fù)制構(gòu)造函數(shù),復(fù)制運算符,析構(gòu)函數(shù),答案為D。20、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句C、標(biāo)準C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標(biāo)準答案:C知識點解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,而不是在定義在另一個函數(shù)體內(nèi),所以A選項錯誤。函數(shù)可以沒有返回值,所以就不需要return了,如果被調(diào)函數(shù)在調(diào)用函數(shù)之前已經(jīng)定義,那么就不需要聲明,所以C選項錯誤,正確選項為D。21、在面向?qū)ο蠓椒ㄖ?,不屬?對象"基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標(biāo)識唯一性標(biāo)準答案:A知識點解析:對象有如下一些基本特點:標(biāo)識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A)。22、下列字符串中,不可以用做C++標(biāo)識符的是()。A、y_2006B、_TEST_HC、ReturnD、switch標(biāo)準答案:D知識點解析:本題考查C++標(biāo)識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標(biāo)識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標(biāo)識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標(biāo)識符。選項C中雖然return是關(guān)鍵字,但因首字母大、小寫不同,也可用于標(biāo)識符,但不建議使用。故答案為D。23、有如下程序:#includeusingnamespacestd;classA{public:virtualvoidfunc1(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfunc1(){cout<<"B1";}voidfunc2(){cout<<"B2";}};intmain(){A*p=newB;p->func1();p->func2();deletep;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、B1B2B、A1A2C、B1A2D、A1B2標(biāo)準答案:C知識點解析:本題考查虛函數(shù)。虛函數(shù)指在基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù)。題中定義了一個派生類對象B,并使用類A的對象指針指向B,由于基類A中的func1為虛函數(shù),所以會執(zhí)行派生類的func1,輸出B1,而基類中的func2不是虛函數(shù),所以p->func2()會執(zhí)行基類的func2,輸出A2。故答案為C。24、下列有關(guān)模板的敘述中,正確的是()。A、函數(shù)模板不能含有常規(guī)形參B、函數(shù)模板的一個實例就是一個函數(shù)定義C、類模板的成員函數(shù)不能是模板函數(shù)D、用類模板定義對象時,絕對不能省略模板實參標(biāo)準答案:B知識點解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,所以本題答案為B。25、在線性表的順序存儲結(jié)構(gòu)中,其存儲空間連續(xù),各個元素所占的字節(jié)數(shù)A、相同,元素的存儲順序與邏輯順序一致B、相同,但其元素的存儲順序可以與邏輯順序不一致C、不同,但元素的存儲順序與邏輯順序一致D、不同,且其元素的存儲順序可以與邏輯順序不一致標(biāo)準答案:A知識點解析:順序表具有以下兩個基本特征:線性表中所有元素所占的存儲空間是連續(xù)的;線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。在順序表中,每個元素占有相同的存儲單元。A選項正確。26、有如下函數(shù)模板:templateTcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標(biāo)準答案:D知識點解析:本題考查函數(shù)模板的基本運用,屬于基礎(chǔ)知識。函數(shù)模板實際上是建立一個通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認參數(shù),這樣在調(diào)用模板函數(shù)時就可以省略實參,函數(shù)模板的實例就是一個函數(shù)的定義。所以本題答案為D。27、在C++語言系統(tǒng)中,用于輸出數(shù)據(jù)所使用的標(biāo)識符cout是A、類名B、對象名C、函數(shù)名D、文件名標(biāo)準答案:B知識點解析:cout是C++預(yù)定義的標(biāo)準輸出流對象,答案為B。28、下列關(guān)于C++預(yù)定義流對象的敘述中,正確的是()。A、cin是C++預(yù)定義的標(biāo)準輸入流對象B、cin是C++預(yù)定義的標(biāo)準輸入流類C、cout是C++預(yù)定義的標(biāo)準輸入流對象D、cout是C++預(yù)定義的標(biāo)準輸入流類標(biāo)準答案:A知識點解析:cin是C++預(yù)定義的標(biāo)準輸入流對象,cout是C++預(yù)定義的標(biāo)準輸出流對象。29、有如下類定義:classCup{public:voidSetPrice(doubleval){price=val;}_______________//常成員函數(shù)GetPrice的聲明private:doubleprice;};下列函數(shù)聲明中,能夠作為橫線處缺失的常成員函數(shù)GetPrice的聲明的是A、constdoubleGetPrice();B、doubleconstGetPrice();C、doubleGetPrice()const;D、doubleGetPrice(const);標(biāo)準答案:C知識點解析:本題考查常成員函數(shù),其定義的一般形式如下:返回值類型常成員函數(shù)名(參數(shù)列表)const;所以C選項正確。30、下列有關(guān)類的表述中,正確的是A、含有虛函數(shù)的類不能被實例化B、派生類不能訪問基類的保護成員C、派生類只能隱含調(diào)用基類的構(gòu)造函數(shù)D、純虛函數(shù)沒有函數(shù)體標(biāo)準答案:D知識點解析:含有純虛函數(shù)的類不能被實例化,選項A錯誤;基類的保護成員就是為了派生類的訪問而設(shè)計的,選項B錯誤;派生類構(gòu)造函數(shù)的初始化列表通常都要顯式調(diào)用基類的構(gòu)造函數(shù),選項C錯誤;當(dāng)基類中不能為虛函數(shù)給出一個有意義的實現(xiàn)時,將其聲明為純虛函數(shù),所以純虛函數(shù)沒有定義函數(shù)體,選項D正確;答案為D。31、有如下程序#includeusingnamespacestd;classAA{charc;public:AA():c(’X’){}AA(charch):c(ch){}AA(AA&aa):c(aa.c){}~AA(){cout<<3;}charvalue()const{returnc;}};voidf1(AAa){cout<A、X3Y3B、XY33C、Y3X3D、YX33標(biāo)準答案:C知識點解析:main函數(shù)中,調(diào)用f1函數(shù),創(chuàng)建局部對象AA(’Y’),此時形參a就是AA(’Y’)對象,輸出a.value(),即"Y",f1函數(shù)執(zhí)行完之后,需要銷毀AA(’Y’)對象,調(diào)用AA類的析構(gòu)函數(shù)~AA(),輸出"3";接著程序調(diào)用f2函數(shù),f2函數(shù)創(chuàng)建局部對象的引用a并初始化指向AA(),此時引用a所指對象的成員c值為"X",輸出為"X",f2函數(shù)執(zhí)行完之后,需要銷毀a所指對象AA(),調(diào)用AA類的析構(gòu)函數(shù)~AA(),輸出"3",程序結(jié)束;運行結(jié)果為:"Y3X3",答案為C。32、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/C54B、/N41/S54C、/C41/N54D、/C41/C54標(biāo)準答案:A知識點解析:本題考查構(gòu)造函數(shù)相關(guān)知識,本題中定義一個對象room1,執(zhí)行room1.Print時執(zhí)行構(gòu)造函數(shù)給size賦值為41,然后執(zhí)行voidPrint(){cout<<’/’<<’N’<33、有如下類定義:classPerson{public:Person(strings):name(s){}protected:stringname;};classFather:virtualpublicPerson{public:Father(strings):Person(s){}};classMother:virtualpublicPerson{public:Mother(strings):Person(s){}};classChild:publicFather,publicMother,virtualpublicPerson{public:Child(strings1,strings2,strings3):Mother(s1),Father(s2),Person(s3){}};在建立派生類Child的對象時,其基類Father、Mother和Person的構(gòu)造函數(shù)的調(diào)用順序為A、Father,Mother,PersonB、Mother,Father,PersonC、Person,Father,MotherD、Father,Person,Mother,Person,Person標(biāo)準答案:C知識點解析:執(zhí)行派生類構(gòu)造函數(shù)的順序是:1、調(diào)用基類構(gòu)造函數(shù),2、調(diào)用子對象構(gòu)造函數(shù),3、再執(zhí)行派生類構(gòu)造函數(shù),所以本題中先調(diào)用基類person構(gòu)造函數(shù),然后執(zhí)行father構(gòu)造函數(shù),最后執(zhí)行mother構(gòu)造函數(shù)。34、有如下程序:#include#includeusingnamespacestd;classInstrument{public:Instrument(stringt="樂器",stringn="無名"):type(t),name(n){}virtualstringGetType()const{return"樂器";}stringGetName()const{return"無名";}protected:stringtype,name;};classPiano:publicInstrument{public:Piano(stringn,stringt="鋼琴"):Instrument(t,n){}stringGetType()const{return"鋼琴";}stringGetName()const{returnname;}};intmain(){Instrument*pi=newPiano("星空");cout<GetType()<<’-’<GetName();deletepi;return0;}運行時的輸出結(jié)果是A、樂器-星空B、樂器-無名C、鋼琴-星空D、鋼琴-無名標(biāo)準答案:D知識點解析:本題考查虛函數(shù)的運用,本題中基類Instrument,派生類Piano,其中虛函數(shù)為GetType,當(dāng)定義Instrument*pi=newPiano("星空")時,調(diào)用派生類的GetType函數(shù),得到type為鋼琴,執(zhí)行GetName時只能執(zhí)行基類的這個函數(shù),輸出無名,所以輸出鋼琴-無名。選項D正確。35、有如下函數(shù)模板定義:templateT1FUN(T2n){returnn*5.0;}若要求以int型數(shù)據(jù)9作為函數(shù)實參調(diào)用該模板,并返回一個double型數(shù)據(jù),則該調(diào)用應(yīng)表示為A、FUN(9)B、FUN<9>C、FUN(9)D、FUN<9>(double)標(biāo)準答案:C知識點解析:本題中要求返回值為double行,那么T1就是double型,T2默認為int,所以只有C選項正確。36、有如下程序:#includeusingnamespacestd;classObj{staticinti;public:Obj(){i++;}~Obj(){i--;}staticintgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<getVal();deleteob3;cout<A、232B、231C、222D、221標(biāo)準答案:D知識點解析:本題考查構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,調(diào)用順序為先構(gòu)造的后析構(gòu),后構(gòu)造的先析構(gòu)。本題中先定義了一個對象ob1,會執(zhí)行構(gòu)造函數(shù),那么i就變?yōu)榱?;再執(zhí)行函數(shù)f后,由于又定義了一個對象ob2,所以再次執(zhí)行構(gòu)造函數(shù),i就變?yōu)榱?,輸出了2。函數(shù)執(zhí)行完后執(zhí)行析構(gòu)函數(shù),i變?yōu)榱?,然后又定義了對象指針,i變?yōu)榱?。釋放ob3后,i變?yōu)榱?,所以答案為D。37、下面敘述中錯誤的是()。A、軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B、對被調(diào)試的程序進行"錯誤定位"是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測試應(yīng)嚴格執(zhí)行測試計劃,排除測試的隨意性標(biāo)準答案:A知識點解析:軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A)錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應(yīng)追溯到需求、嚴格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。38、下列關(guān)于類定義的說法中,正確的是()。A、類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明B、類成員的缺省訪問權(quán)限是保護的C、數(shù)據(jù)成員必須被聲明為私有的D、成員函數(shù)只能在類體外進行定義標(biāo)準答案:A知識點解析:類的成員的缺省訪問權(quán)限是私有的,數(shù)據(jù)成員可以是私有,可以是公用的,也可以是受保護的。類的成員函數(shù)可以在類內(nèi)定義。二、基本操作題(本題共1題,每題1.0分,共1分。)39、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正確運行,并且使程序輸出的結(jié)果為:HelloVisualC++!HelloVisualC++!!注意:錯誤的語句在//********error********的下面,修改該語句即可。1#include2classCMyObject3{4public:5CMyObject()6{7//********error********8cout<<"Hello,9"VisualC++!"<標(biāo)準答案:(1)cout<<"HelIo,"(2)cout<<"Hello,\(3)~CMyObject()知識點解析:程序當(dāng)中定義了類CMyObject,含有兩個構(gòu)造函數(shù)和一個析構(gòu)函數(shù),在構(gòu)造函數(shù)內(nèi)部均使用COU輸出一段字符。[解題思路](1)由程序的運行結(jié)果可知,語句CMyObjectobjl;定義objl對象調(diào)用默認的構(gòu)造函數(shù),此時屏幕上輸出“HelloVisualC++!”,cout流中的數(shù)據(jù)是用流插入運算符“<<”順序加入的,第1個標(biāo)識下“Hello,”字符串插在輸出流中,因此必須加雙引號引用起來,即第1個標(biāo)識下應(yīng)該為“cout<<"Hello,"”。(2)第2個標(biāo)識下“\n”表示換行,與要求的輸出結(jié)果不同,因此第2個標(biāo)識下應(yīng)改為“cout<<”Hello.\”。(3)析構(gòu)函數(shù)是一個特殊的函數(shù),其函數(shù)名與類名相同,并在其名加“~”,用來與構(gòu)造函數(shù)加以區(qū)別,因此第3個標(biāo)識下應(yīng)改為“~CMyObject()”。三、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)40、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。此工程中包含一個源程序文件main.cpp,其中有日期類Date、人員類Person及排序函數(shù)sortByAge和主函數(shù)main的定義。請在橫線處填寫適當(dāng)?shù)拇a并刪除橫線,以實現(xiàn)該程序。該程序的正確輸出結(jié)果應(yīng)為:排序前:張三男出生日期:1978年4月20日王五女出生日期:1965年8月3日楊六女出生日期:1965年9月5日李四男出生日期:1973年5月30日排序后:張三男出生日期:1978年4月20日李四男出生日期:1973年5月30日楊六女出生日期:1965年9月5日王五女出生日期:1965年8月3日注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。{}includeusingnamespacestd;classDate{//日期類intyear,month,day;//年、月、日public:Date(intyear,intmonth,intday):year(year),month(month),day(day){}intgetYear()const{returnyear;}intgetMonth()const{returnmonth;}intgetDay()const{returnday;}};classPerson{//人員類charname[14];//姓名boolismale;//性別,為true時表示男性Datebirthdate;//出生日期public:Person(char*name,boolismale,Datebirthdate):ismale(ismale),birth_date(birth_date){//**********found**********strcpy(this->name,________);}constchar*getName()const{returnname;}boolisMale()const{returnis_male;}DategetBirthdate()const{returnbirth_date;}intcompareAge(constPerson&p)const{//比較兩個人的年齡,返回正數(shù)、0或負數(shù)分別表示大于、等于和小于intn;n=p.birthdate.getYear()birthdate.getYear();if(n!=0)returnn;//**********found**********if(n!=0)returnn;returnP.birth_date.getDay()birthdate.getDay();}voidshow(){cout<i){//**********found**********PersonP=________ps[m]=ps[i];ps[i]=p;}

溫馨提示

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

評論

0/150

提交評論