國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共199題)_第1頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共199題)_第2頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共199題)_第3頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共199題)_第4頁
國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共199題)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(jí)C++機(jī)試(選擇題)模擬試卷14(共9套)(共199題)國家二級(jí)C++機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共22題,每題1.0分,共22分。)1、下列對隊(duì)列的描述中正確的是()。A、隊(duì)列屬于非線性表B、隊(duì)列按“先進(jìn)后出”原則組織數(shù)據(jù)C、隊(duì)列在隊(duì)尾刪除數(shù)據(jù)D、隊(duì)列按“先進(jìn)先出”原則組織數(shù)據(jù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:隊(duì)列(queue)是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表。允許插入的一端稱為隊(duì)尾:允許刪除的一端稱為隊(duì)頭。在隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除;反之,最后插入的元素將最后才能被刪除。因此,隊(duì)列又稱“先進(jìn)先出”或“后進(jìn)后出”的線性表。2、某二叉樹中有n個(gè)度為2的結(jié)點(diǎn),則該二叉樹中的葉子結(jié)點(diǎn)數(shù)為()。A、n+1B、n-1C、2nD、n/2標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。所以該二叉樹的葉子結(jié)點(diǎn)數(shù)等于n+1。3、待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個(gè)位置。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:選擇排序的基本思想是掃描整個(gè)線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一一個(gè)位置,元素15則放在第二個(gè)位置。4、下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()。A、軟件過程不規(guī)范B、軟件開發(fā)生產(chǎn)率低C、軟件質(zhì)量難以控制D、軟件成本不斷提高標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件危機(jī)主要表現(xiàn)在以下6個(gè)方面:①軟件需求的增長得不到滿足。②軟件開發(fā)成本和進(jìn)度無法控制。③軟件質(zhì)量難以保證。④軟件不可維護(hù)或維護(hù)程度非常低。⑤軟件的成本不斷提高。⑥軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。5、多繼承的構(gòu)造順序可分為如下四步:①所有非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造②所有虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造③所有子對象的構(gòu)造函數(shù)按照它們聲明的順序構(gòu)造④派生類自己的構(gòu)造函數(shù)體這四個(gè)步驟的正確順序是()。A、④③①②B、②④⑨①C、②①③④D、③④①②標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:多繼承派生類的構(gòu)造順序是:首先調(diào)用虛基類的構(gòu)造函數(shù),然后調(diào)用非虛基類的構(gòu)造函數(shù)按照它們被繼承的順序構(gòu)造,其次調(diào)用子對象的構(gòu)造函數(shù),最后是派生類構(gòu)造函數(shù)中的內(nèi)容。6、軟件設(shè)計(jì)中劃分模塊的一個(gè)準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn)。一般一個(gè)較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。7、下列代碼段中聲明了3個(gè)類:classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列關(guān)于這些類之間關(guān)系的描述中,錯(cuò)誤的是()。A、類Person是類Undergraduate的基類B、類Undergraduate從類Student公有繼承C、類Student是類Person的派生類D、類Undergraduate是類Person的派生類標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查基類和派生類的邏輯關(guān)系,屬于基礎(chǔ)知識(shí),如果沒有指明哪種繼承方式,那么默認(rèn)為私有繼承,所以B選項(xiàng)錯(cuò)誤。8、設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號(hào),姓名,性別,年齡,身份證號(hào)),課程C(課號(hào)課名),選課SC(學(xué)號(hào),課號(hào),成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號(hào),成績B、學(xué)號(hào),成績C、學(xué)號(hào),課號(hào)D、學(xué)號(hào),姓名,成績標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:關(guān)鍵字是指屬性或?qū)傩缘慕M合,其值能夠唯一地標(biāo)識(shí)一個(gè)元組,而在SC中學(xué)號(hào)和課號(hào)的組合可以對元組進(jìn)行唯一的標(biāo)識(shí)。9、有如下程序:#includeusingnamespacestd;classXX{intx;public:XX(intxx=0):x(xx){)intgetX(){returnx;));classYY:publicXX{inty;public:YY(intXX,intyy):XX(xx),y(yy){)intget(){returngetX0+y;));intmain(){YYc(3,4);cout<A、3B、4C、7D、10標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由于類YY公開繼承自類xx,所以執(zhí)行表達(dá)式c.getV()+c.getX()的值等于3+3+4=10。10、下列循環(huán)語句中有語法錯(cuò)誤的是()。A、inti;for(i=1;i<10;i++)cout<<’*’;B、inti,j;for(i=l,j=0;i<10;i++,j++)cout<<’*’;C、inti=0;for(;i<10;i++)cout<<’*’;D、for(1)tout<’*’;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:這道題目主要考查for循環(huán)語句的語法。for循環(huán)語句的語法格式如下:for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>)<語句>,在三個(gè)表達(dá)式都省略的情況下,其格式如下for(;;),這時(shí)for循環(huán)語句是一個(gè)死循環(huán)。11、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n—2);)voidfunction2(intn){if(n<=0)return;functionl(n—1);}intmain(){functionl(5);return0;}下列關(guān)于程序運(yùn)行情況的描述中,正確的是()。A、function1運(yùn)行1次,function2運(yùn)行2次B、function1運(yùn)行2次,function2運(yùn)行1次C、function1運(yùn)行2次,function2運(yùn)行3次D、function1運(yùn)行2次,function2運(yùn)行2次標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在主函數(shù)中執(zhí)行functionl(5)時(shí),會(huì)調(diào)用function2(3),function2(3)又會(huì)調(diào)用functionl(2),functionl(2)又會(huì)調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以funaion1()和function2()各執(zhí)行了2次。12、在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,*是作為非成員函數(shù)重載的運(yùn)算符。下列敘述中正確的是()。A、operator+有兩個(gè)參數(shù),operator*有兩個(gè)參數(shù)B、operator+有兩個(gè)參數(shù),operator*有一個(gè)參數(shù)C、operator+有一個(gè)參數(shù),operator*有兩個(gè)參數(shù)D、operator+有一個(gè)參數(shù),operator*有一個(gè)參數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符的重載。運(yùn)算符可重載成員函數(shù),也可重載為友元函數(shù)。當(dāng)重載為成員函數(shù)時(shí),運(yùn)算符重載函數(shù)的形參個(gè)數(shù)要比運(yùn)算符操作數(shù)的個(gè)數(shù)少一個(gè);當(dāng)重載為友元函數(shù)時(shí),其參數(shù)個(gè)數(shù)應(yīng)與操作數(shù)的個(gè)數(shù)相同。13、要定義一個(gè)引用變量p,使之引用類MyClass的一個(gè)對象,正確的定義語句是()。A、MyClassp=MyClass;B、MyClassp=newMyClass;C、MyClass&p=newMyClass;D、MyClassa,&p=a;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在選項(xiàng)D中,定義了MyClass類的一個(gè)對象a和引用變量p,并且聲明p初始化為對a的引用。14、下列關(guān)于類成員對象構(gòu)造函數(shù)調(diào)用順序的敘述中,正確的是()。A、與它們在初始化列表中的順序相同B、與它們在類中聲明的順序相同C、與析構(gòu)函數(shù)的調(diào)用順序相同D、順序不確定標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:類成員對象構(gòu)造函數(shù)的調(diào)用是按照在類中定義的順序進(jìn)行的,而不是按照構(gòu)造函數(shù)說明后的冒號(hào)順序進(jìn)行構(gòu)造的。15、由于常對象不能被更新,因此()。A、通過常對象只能調(diào)用它的常成員函數(shù)B、通過常對象只能調(diào)用靜態(tài)成員函數(shù)C、常對象的成員都是常成員D、通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是常對象與常成員函數(shù)的概念。使用const關(guān)鍵字修飾的對象稱為常對象,它不能被更新,所以常對象只能調(diào)用常成員函數(shù)而不能調(diào)用其它成員函數(shù);使用const關(guān)鍵字聲明的成員函數(shù)是常成員函數(shù),它也不能被更新,常成員函數(shù)只能調(diào)用常成員函數(shù)而不能調(diào)用其它函數(shù)。16、在C++中,編譯系統(tǒng)自動(dòng)為一個(gè)類生成缺省構(gòu)造函數(shù)的條件是()。A、該類沒有定義任何有參構(gòu)造函數(shù)B、該類沒有定義任何無參構(gòu)造函數(shù)C、該類沒有定義任何構(gòu)造函數(shù)D、該類沒有定義任何成員函數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:如果一個(gè)類中定義了一個(gè)缺省的構(gòu)造函數(shù),則使用該函數(shù)。如果一個(gè)類中沒有定義任何構(gòu)造函數(shù),編譯器將生成一個(gè)不帶參數(shù)的共有缺省構(gòu)造函數(shù)。17、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<’B’;}};classDerived:publicBase{public:voidfun(){________cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的輸出結(jié)果是BD,則劃線處缺失的部分是()。A、fun();B、Base.fun();C、Base:fun();D、Base->fun();標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Derived的對象d調(diào)用其成員函數(shù)fum(),要輸出結(jié)果為BD,所以在其成員函數(shù)fun()中要調(diào)用基類Base的成員函數(shù)fun()。18、如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機(jī)制。#includeusingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<A、10,20B、30,40C、20,30D、50,50標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是多態(tài)性。在C++中,一個(gè)基類指針可以用于指向它的派生類對象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的對象類的那個(gè)重定義版本。在實(shí)函數(shù)的情況下。通過基類指針?biāo){(diào)用的只能是基類的那個(gè)函數(shù)版本,無法調(diào)用到派生類中重定義函數(shù)。此題中,通過指針pb所調(diào)用的是基類的本,即輸出a和b的值10,20。19、關(guān)于運(yùn)算符重載,下列表述中正確的是()。A、C++已有的任何運(yùn)算符都可以重載B、運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運(yùn)算符重載來創(chuàng)建C++中原來沒有的運(yùn)算符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載的概念。C++語言規(guī)定,“.”、“.*”、“->*”、“::”和“?:”這五個(gè)運(yùn)算符不能被重載,故選項(xiàng)A錯(cuò)誤:運(yùn)算符函數(shù)的返回類型由該運(yùn)算符所組成的表達(dá)式的值的類型來決定,故選項(xiàng)B說法是錯(cuò)誤的;運(yùn)算符重載是針對原有運(yùn)算符,并不能通過重載創(chuàng)造出新的運(yùn)算符,故選項(xiàng)D錯(cuò)誤。20、在一個(gè)抽象類中,一定包含有()。A、虛函數(shù)B、純虛函數(shù)C、模板函數(shù)D、重載函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:擁有純虛函數(shù)的類叫做抽象類,所以抽象類中必然包含有虛函數(shù)。21、通過運(yùn)算符重載,可以改變運(yùn)算符原有的()。A、操作數(shù)類型B、操作數(shù)個(gè)數(shù)C、優(yōu)先級(jí)D、結(jié)合性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是運(yùn)算符重載。運(yùn)算符重載具有保持其原有的操作數(shù)個(gè)數(shù)、優(yōu)先級(jí)、語法結(jié)構(gòu)和結(jié)合性不變的特性。故本題選項(xiàng)A正確。22、將運(yùn)算符“+”重載為非成員函數(shù),下列原型聲明中,錯(cuò)誤的是()。A、Myc1oCkoperator+(Myc1ock,long);B、Myc1oCkoperator+(Myc1ock,Myc1ock);C、Myc1oCkoperator+(long,long);D、Myc1oCkoperator+(long,Myc1ock);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:運(yùn)算符重載不能有二義性,故選項(xiàng)C)不能區(qū)分運(yùn)算符的準(zhǔn)確含義。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共23題,每題1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;classBase{public:voidfunl(){cout<<”Base\n”;}virtualvoidflun2(){cout<<”Base\n”;}};classDerived:publicBase{public:voidfunl(){cout<<”Derived\n”;}voidfun2(){cout<<”Derived\n”;}};voidf(Base&b){b.funl();b.fun2();}intmain(){Derivedobj;f(obj);return0;}執(zhí)行這個(gè)程序的輸出結(jié)果是()。A、BaseBaseB、BaseDeftvedC、DerivedBaseD、DerivedDerived標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在某基類中聲明為virtual并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),本題中定義了一個(gè)派生類對象obj,執(zhí)行f函數(shù)后,將派生類對象obj轉(zhuǎn)化為基類對象,由于funl不是虛函數(shù),所以輸出基類的funl;而fun2是虛函數(shù),所以輸出派生類的fun2,所以本題答案為B。2、以下不正確的是()。A、語句for(i=0;;i++)表示無限循環(huán)B、for(;;)表示無限循環(huán)C、for()表示無限循環(huán)D、while(1)表示無限循環(huán)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:選項(xiàng)C是一個(gè)錯(cuò)誤的for語句格式,for()語句中三個(gè)表達(dá)式可以省略。但是兩個(gè)分號(hào)(;)不能省略。3、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時(shí)發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時(shí),內(nèi)聯(lián)函數(shù)會(huì)像宏函數(shù)一樣的展開,將調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,所以選項(xiàng)A)錯(cuò)誤;即使沒有使用inline說明,編譯器也會(huì)將在類的說明部分定義的函數(shù)認(rèn)定為內(nèi)聯(lián)函數(shù),所以選項(xiàng)B)錯(cuò)誤;內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率。4、下列選項(xiàng)中屬于面向?qū)ο笤O(shè)計(jì)方法主要特征的是()。A、繼承B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:面向?qū)ο笤O(shè)計(jì)方法的主要特征有封裝性、繼承性和多態(tài)性。而結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則有自頂向下,逐步求精,模塊化,限制使用goto語句。5、對于一個(gè)類定義,下列敘述中錯(cuò)誤的是()。A、如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個(gè)拷貝構(gòu)造函數(shù)B、如果沒有定義缺省的構(gòu)造函數(shù),編譯器一定將生成一個(gè)缺省的構(gòu)造函數(shù)C、如果沒有定義構(gòu)造函數(shù),編譯器將生成一個(gè)缺省的構(gòu)造函數(shù)和一個(gè)拷貝構(gòu)造函數(shù)D、如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會(huì)生成任何構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù),如果沒有定義構(gòu)造函數(shù),編譯器將生成一個(gè)缺省的構(gòu)造函數(shù)和一個(gè)拷貝構(gòu)造函數(shù),如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會(huì)生成任何構(gòu)造函數(shù)。如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個(gè)拷貝構(gòu)造函數(shù)。6、對于int*pa[5];的描述,正確的是()。A、pa是一個(gè)指向數(shù)組的指針,所指向的數(shù)組是5個(gè)int型元素B、pa是一個(gè)指向某個(gè)數(shù)組中第5個(gè)元素的指針,該元素是int型變量C、pa[5]表示某個(gè)數(shù)組的第5個(gè)元素的值D、pa是一個(gè)具有5個(gè)元素的指針數(shù)組,每個(gè)元素是一個(gè)int型指針標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:語句“int*p[5]”表示一個(gè)數(shù)組p,它的大小是5,里面存放的數(shù)據(jù)類型是int*,也就是整型指針。稱之為指針數(shù)組(從右向左解析這個(gè)表示)。7、在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為()。A、概念模式B、外模式C、內(nèi)模式D、物理模式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:用戶所見到的數(shù)據(jù)模式是外模式也稱用戶模式。它是用戶的數(shù)據(jù)視圖,它由概念模式導(dǎo)出。一個(gè)概念模式可以有若干個(gè)外模式,每個(gè)用戶只關(guān)心與它有關(guān)的外模式,這樣不僅可以屏蔽大量無關(guān)信息,而且有利于數(shù)據(jù)維護(hù)。8、將E一R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:將E一R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為關(guān)系。9、下列關(guān)于虛基類的描述中,錯(cuò)誤的是()。A、使用虛基類可以消除由多繼承產(chǎn)生的二義性B、構(gòu)造派生類對象時(shí),虛基類的構(gòu)造函數(shù)只被調(diào)用一次C、聲明“classB:virtualpublicA”說明類B為虛基類D、建立派生類對象時(shí),首先調(diào)用虛基類的構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:虛基類是為了消除由多重繼承產(chǎn)生的二義性而提出的。虛基類的說明格式是:Class<類名>:virtual<繼承方式><基類名>,其中關(guān)鍵字virtual與繼承方式的位置無關(guān),但必須位于基類名之前,且virtual只對緊隨其后基類名起作用。對于本題來說,聲明“classB:virtualpublicA”說明類A為虛基類。10、下列關(guān)于C++函數(shù)的敘述中,正確的是()。A、每個(gè)函數(shù)至少要具有一個(gè)參數(shù)B、每個(gè)函數(shù)都必須返回一個(gè)值C、函數(shù)在被調(diào)用之前必須先聲明D、函數(shù)不能自己調(diào)用自己標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是函數(shù)的性質(zhì)。當(dāng)調(diào)用無參函數(shù)時(shí)主函數(shù)并不將數(shù)據(jù)傳送給被調(diào)函數(shù),且可以帶回或不帶回函數(shù)值。函數(shù)的遞歸調(diào)用就是直接或間接的調(diào)用自己。11、下列語句中,與語句“n=(a>b?(b>c?1:0):0);”的功能等價(jià)的是()。A、if(a<=b)n=0;B、if((a>b)||(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1;elsen=0;elsen=0,D、if(a>b)n=1;elseif(b<=c)n=i;elseif(b>c)n=1;elsen=0;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:條件表達(dá)式(a>b?(b>c?1:0):0)的含義是,如果a>b成立,則此表達(dá)式的值等于條件表達(dá)式(b>c?1:0)的值,否則其值等于0。而條件表達(dá)式(b>c?1:0)的含義是,如果b>c成立,其值等于1,否則其值等于0。12、有如下程序:#include<iostream>usingnamespacestd;intmain(){hatsum;for(inti=0;i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;}cout<<sum<<end1;return0:}運(yùn)行時(shí)的輸出結(jié)果是()。A、3B、10C、12D、15標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:由題干可以知道,外層循環(huán)會(huì)進(jìn)行兩次,且第一次的結(jié)果我們可以不去理會(huì)和計(jì)算,讀者仔細(xì)觀察能發(fā)現(xiàn),在第一次的循環(huán)以后sum和j都會(huì)被重新賦值,所以外層第二次循環(huán)如下:此時(shí)i=3,sum=3內(nèi)層循環(huán)開始如下:j=3,j<6,sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出內(nèi)層循環(huán)。得到sum=15。13、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中的預(yù)處理宏函數(shù)。兩者的區(qū)別在于,宏函數(shù)是由預(yù)處理器對宏進(jìn)行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的。內(nèi)聯(lián)函數(shù)在調(diào)用時(shí)像宏函數(shù)一樣展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。14、下列語句中,與語句“n=(a>b?(b>c?l:0):0);”的功能等價(jià)的是()。A、if(a<=b)n=0;B、if((a>b)‖(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1;elsen=0;elsen=0;D、if(a>b)n=1;elseif(b<=c)n=1;elseif(b>c)n=1;elsen=0;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:條件表達(dá)式(a>b?(b>c?1:0):0)的含義是,如果a>b成立,則此表達(dá)式的值等于條件表達(dá)式(b>c?1:0)的值,否則其值等于0。而條件表達(dá)式(b>c?1:0)的含義是,如果b>c成立,其值等于1,否則其值等于0。15、下列關(guān)于輸入流類成員函數(shù)getline()的描述中,錯(cuò)誤的是()。A、該函數(shù)是用來讀取鍵盤輸入的字符串的B、該函數(shù)讀取的字符串長度是受限制的C、該函數(shù)讀取字符串時(shí),遇到終止符便停止D、該函數(shù)讀取字符串時(shí),可以包含空格標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是getline()函數(shù)。getline()函數(shù)的原型為:istream_lype&getline(char_type*s,streamsize,char_typedelim);。其功能是從當(dāng)前輸入位置開始提取字符存入s所指向的具有n個(gè)字節(jié)的字符空間中。遇到以下情況時(shí)停止:已提取并存儲(chǔ)了n-1個(gè)字符;到流尾,無字符可??;下一個(gè)要提取的字符等于結(jié)束標(biāo)志字符delim。故選項(xiàng)B、C、D都是正確的。getline()函數(shù)不僅可以用來讀取鍵盤輸入的字符串,還可以用來讀取文件等數(shù)據(jù)流,故選項(xiàng)A錯(cuò)誤。16、有如下兩個(gè)類定義classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在類YY中保護(hù)成員變量的個(gè)數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C++中派生類從基類保護(hù)繼承時(shí),基類的公有成員在派生類中改變?yōu)楸Wo(hù)成員,基類的保護(hù)成員在派生類中仍為保護(hù)成員。所以對于本題來說,YY類保護(hù)繼承自類XX,那么類XX中的公有成員x3和保護(hù)成員x2在派生類中都成為保護(hù)成員,再加上類YY中的保護(hù)成員y2,因此在派生類YY中保護(hù)成員的個(gè)數(shù)為3。17、有如下程序:#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.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在標(biāo)注號(hào)碼的四條語句中正確的是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:因?yàn)轭怋B公有繼承自類AA,所以AA中的保護(hù)成員和公有成員在類BB中仍是保護(hù)成員和公有成員。在選項(xiàng)B中調(diào)用了公有成員函數(shù)setN(intn){this->n=n;},對保護(hù)成員n進(jìn)行賦值操作。18、有如下程序:#inc1ude<iostream>usingnamespacestd;classMusic{public:voidsetTitle(char*str){strcpy(title,str);)protected:chartype[10];private:chartitle[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列敘述中正確的是()。A、程序編譯正確B、程序編譯時(shí)語句①出錯(cuò)C、程序編譯時(shí)語句②出錯(cuò)D、程序編譯時(shí)語句①和②都出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Jazz不能訪問基類Music中的私有成員title。19、下列有關(guān)抽象類和純虛函數(shù)的敘述中,錯(cuò)誤的是()。A、擁有純虛函數(shù)的類是抽象類,不能用來定義對象B、抽象類的派生類若不實(shí)現(xiàn)純虛函數(shù),它也是抽象類C、純虛函數(shù)的聲明以“=0;”結(jié)束D、純虛函數(shù)都不能有函數(shù)體標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是抽象類和純虛函數(shù)的概念。純虛函數(shù)可以有函數(shù)體,它的實(shí)現(xiàn)由派生類給出。20、有如下程序:#include<iostream>usingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPiano:publicInstrument{public:voidDisplay(){/*函數(shù)體程序略*/}};intmain(){Instruments:Instrument*p=0;//…;return0;}下列敘述中正確的是()。A、語句"Insturment*p=0;"編譯時(shí)出錯(cuò)B、語句"Instruments;"編譯時(shí)出錯(cuò)C、類Piano中的Display函數(shù)不是虛函數(shù)D、類Instrument是一個(gè)虛基類標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于函數(shù)Display()是一個(gè)純虛函數(shù),所以類Instrument是抽象類,而抽象類是不能定義對象的,因而選項(xiàng)B)為正確選項(xiàng)。21、對于語句cout<<endl<<x;中的各個(gè)組成部分,下列敘述中錯(cuò)誤的是()A、cout是一個(gè)輸出流對象B、endl的作用是輸出回車換行C、x是一個(gè)變量D、<<稱作提取運(yùn)算符標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是C++語言的輸出流。符號(hào)“<<”是預(yù)定義插入符,提取運(yùn)算符是“>>”。22、語句ofstreamf("SALARY.DAT",ios_base::app);功能是建立流對象f,并試圖打開文件SALARY.DAT與f關(guān)聯(lián),而且()。A、若文件存在,將其置為空文件;若文件不存在,打開失敗B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個(gè)新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失敗;若文件不存在,建立一個(gè)新文件標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是文件打開模式。文件打開模式iso_base::app是為添加數(shù)據(jù)而打開(總是在尾部寫),故只有選項(xiàng)B說法正確。23、下列關(guān)于輸入流類成員函數(shù)getline()的描述中,錯(cuò)誤的是()。A、該函數(shù)是用來讀取鍵盤輸入的字符串的B、該函數(shù)讀取的字符串長度是受限制的C、該函數(shù)讀取字符串時(shí),遇到終止符便停止D、該函數(shù)讀取字符串時(shí),可以包含空格標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是getline()函數(shù)。getline()函數(shù)的原型為:istream_type&getline(char_type*s,streamsize,char_typedelim);。其功能是從當(dāng)前輸入位置開始提取字符存入s所指向的具有n個(gè)字節(jié)的字符空問中。遇到以下情況時(shí)停止:已提取并存儲(chǔ)了n-1個(gè)字符:到流尾,無字符可?。合乱粋€(gè)要提取的字符等于結(jié)束標(biāo)志字符delim。故選項(xiàng)B、C、D都是正確的。getline()函數(shù)不僅可以用來讀取鍵盤輸入的字符串,還可以用來讀取文件等數(shù)據(jù)流,故選項(xiàng)A錯(cuò)誤。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共24題,每題1.0分,共24分。)1、當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列己滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為()。A、下溢B、上溢C、異常D、溢出標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于頭尾指針不斷前移,超出向量空間。這時(shí)整個(gè)向量空間及隊(duì)列是滿的卻產(chǎn)生了“上溢”現(xiàn)象。2、下列與隊(duì)列結(jié)構(gòu)有關(guān)聯(lián)的是()。A、函數(shù)的遞歸調(diào)用B、數(shù)組元素的引用C、多重循環(huán)的執(zhí)行D、先到先服務(wù)的作業(yè)調(diào)度標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:隊(duì)列中最先插入的元素將最先被刪除,最后插入的元素將最后被刪除。3、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、上述三種說法都不對標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性表的存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。在順序存儲(chǔ)中,所有元素所占的存儲(chǔ)空間是連續(xù)的,各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的。所以每個(gè)元素只存儲(chǔ)其值就可以了,而在鏈?zhǔn)酱鎯?chǔ)的方式中,將存儲(chǔ)空間的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部分,一部分用于存儲(chǔ)數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲(chǔ)下一個(gè)元素的存儲(chǔ)序號(hào),稱為指針域。所以線性表的鏈?zhǔn)酱鎯?chǔ)方式比順序存儲(chǔ)方式的存儲(chǔ)空間要大一些。4、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、上述三種說法都不對標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性表的存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。在順序存儲(chǔ)中,所有元素所占的存儲(chǔ)空間是連續(xù)的,各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的。所以每個(gè)元素只存儲(chǔ)其值就可以了,而在鏈?zhǔn)酱鎯?chǔ)的方式中,將存儲(chǔ)空間的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部分,一部分用于存儲(chǔ)數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲(chǔ)下一個(gè)元素的存儲(chǔ)序號(hào),稱為指針域。所以線性表的鏈?zhǔn)酱鎯?chǔ)方式比順序存儲(chǔ)方式的存儲(chǔ)空間要大一些。5、下列敘述中正確的是()。A、有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在數(shù)據(jù)結(jié)構(gòu)中,樹這類的的數(shù)據(jù)結(jié)構(gòu)只有一個(gè)根結(jié)點(diǎn),但它不是線性結(jié)構(gòu)。6、若已定義inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是()。A、a[p-a]B、*(&a[i])C、p[i]D、a[10]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)組有N個(gè)元素,則數(shù)組元素引用為a(0)~a(m-1),共計(jì)N個(gè),沒有a(10)2這個(gè)元素,最后的元素是a(9)。7、軟件生命周期中的活動(dòng)不包括()。A、市場調(diào)研B、需求分析C、軟件測試D、軟件維護(hù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件的生命周期描述了軟件從產(chǎn)生到最終消亡的全過程,生命周期中的活動(dòng)包括需求分析、軟件設(shè)計(jì)(分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、軟件實(shí)現(xiàn)、軟件測試和軟件維護(hù),不包括市場調(diào)研。8、有如下兩個(gè)類定義:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一個(gè)成員變量的定義是錯(cuò)誤的,這個(gè)變量是()。A、v1B、v2C、v3D、v4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在定義類的數(shù)據(jù)成員時(shí),類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點(diǎn)型、字符符型、數(shù)組、指針和引用等,也可以是對象。但是要注意,只有另外一個(gè)類的對象,才可以作為該類的成員,即作為類的成員對象存在。自身類的對象是不可以作為自身類的成員存在,但自身類的指針可以。對于本題,在定義類BB時(shí),不能包括其對象v3。9、已知枚舉類型聲明語句為:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10}:則下列說法中錯(cuò)誤的是()。A、枚舉常量YELLOW的值為1B、枚舉常量RED的值為6C、枚舉常量BLACK的值為10D、枚舉常量WHITE的值為1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是枚舉類型的聲明。聲明枚舉類型的語法形式為:enum類型名{枚舉值表}。需注意的是:當(dāng)n個(gè)枚舉值全部未賦常量值時(shí),它們自左至右分別與整數(shù)0、1、2、3…n-1對應(yīng):若第i個(gè)枚舉值賦常量值為m,則其未賦常量值的后續(xù)枚舉值分別與整數(shù)m+1、m+2…對應(yīng),直到下一個(gè)賦了值的枚舉值或結(jié)束。10、下列關(guān)于運(yùn)算符重載的敘述中,正確的是()。A、通過運(yùn)算符重載機(jī)制可以為C++語言擴(kuò)充新的運(yùn)算符B、運(yùn)算符重載的作用是使已有的運(yùn)算符作用于類的對象C、重載運(yùn)算符的操作數(shù)類型可以全部為基本類型D、所有運(yùn)算符都可以被重載標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:運(yùn)算符重載就是賦予已有的運(yùn)算符多重含義。通過重新定義運(yùn)算符,使它能夠用于特定類的對象執(zhí)行特定的功能,這便增強(qiáng)了C++語言的擴(kuò)充能力。運(yùn)算符重載要注意以下3點(diǎn):①不能重載的運(yùn)算符包括∷,.,.*?;②必須重載為成員函數(shù)的運(yùn)算符包括[],(),->,=;③在類成員函數(shù)中重載運(yùn)算符是不允許返回引用的,會(huì)出現(xiàn)“返回局部變量的地址”警告。11、下列運(yùn)算符函數(shù)中,肯定不屬于類Value的成員函數(shù)的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:運(yùn)算符作為非成員函數(shù)時(shí),由于沒有隱含this指針,因此所有的操作數(shù)必須出現(xiàn)在參數(shù)表中。對于第二個(gè)選項(xiàng),出現(xiàn)了兩個(gè)操作數(shù),必然是非成員函數(shù),但是對于其他三個(gè)選項(xiàng),有可能都是要求兩個(gè)操作數(shù)的成員函數(shù)。12、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是基本類型和派生型。C++語言中,基本類型的字長及其取值范圍可以放大和縮小,改變后的類型就叫做基本類型和派生類型。本題A選項(xiàng)中,unsignedlongint的省略形式為unsignedlong;選項(xiàng)B中,signedshortint的省略形式是short;選項(xiàng)C中,unsignedshort的省略形式是unsignedshort;選項(xiàng)D中,shortint的省略形式是short。13、有如下程序:#inc1ude<iostream>usingnamespacestd;classMonkey{public:Monkey(){cout<<’M’;}Monkey(charn){cout<<n;}~Monkey(){cout<<’Y’;}};intmain(){Monkeypl,*p2;p2=newMonkey(’X’);deletep2;return0:}運(yùn)行這個(gè)程序的輸出結(jié)果是()。A、MYXB、MYMYC、MXYD、MXYY標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在類Monkey中定義了默認(rèn)的構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),所以在主函數(shù)中,定義Monkey的對象pl時(shí),調(diào)用默認(rèn)的構(gòu)造函數(shù),輸出M;定義Monkey的對象p2時(shí),調(diào)用帶參數(shù)的構(gòu)造函數(shù),輸出X;在執(zhí)行“deletep2;”語句時(shí),調(diào)用析構(gòu)函數(shù),輸出Y,在退出程序時(shí),調(diào)用析構(gòu)函數(shù)輸出Y。14、有如下程序:#includeusingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<”n=”<A、n=0B、n=1C、n=2D、n=3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。靜態(tài)數(shù)據(jù)成員是類中所有對象共享的成員,而不是某個(gè)對象的成員。題目中的靜態(tài)數(shù)據(jù)成員n的運(yùn)算具有疊加性,執(zhí)行“n+=2”和“n-=3”后n的值為0。15、有如下類定義:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};YY類的對象包含的數(shù)據(jù)成員的個(gè)數(shù)是()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:因?yàn)轭怷X包括一個(gè)數(shù)據(jù)成員xdata,而類YY繼承自類XX,所在類YY中也包含數(shù)據(jù)成員xdata,同時(shí)類YY中也定義了其本身的數(shù)據(jù)成員ydata,因而YY類的對象包含的數(shù)據(jù)成員的個(gè)數(shù)是2。16、若AA為一個(gè)類,a為該類的私有整型數(shù)據(jù)成員,getA()為該類的一個(gè)非靜態(tài)公有成員函數(shù),功能是返回a的值。如果x為該類的一個(gè)對象,要在類外訪問x對象中a的值,正確的訪問格式為()。A、AA.getA()B、x.getA()C、x.a(chǎn)D、AA::a標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:要在類外訪問x對象中a的值,必須調(diào)用類的非靜態(tài)公有成員函數(shù)getA()。17、有如下類定義:classMyClass{intb;chara;doublec;public:MyClass():c(0.0),b(0),a(’,’){}};創(chuàng)建這個(gè)類的對象時(shí),數(shù)據(jù)成員的初始化順序是()。A、a,b,cB、c,b,aC、b,a,cD、c,a,b標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:類的成員初始化順序與成員變量在構(gòu)造函數(shù)中的位置先后順序無關(guān),只與成員變量在類中定義的先后順序有關(guān)。18、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb:XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0;intmain(){XAdl(2),d2(3);cout<<d1.get()+d2.get()+XA::b<<end1;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、5B、6C、7D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:執(zhí)行XA類的實(shí)例變量d1(2)時(shí),成員函數(shù)d1.get()的返回值等于2,XA.b的值等于1,執(zhí)行XA類的實(shí)例變量d2(3)時(shí),成員函數(shù)d1.get()的返回值等于3,XA.b的值等于2,所以輸出結(jié)果為2+3+2=7。19、通過派生類的對象可直接訪問其()。A、公有繼承基類的公有成員B、公有繼承基類的私有成員C、私有繼承基類的公有成員D、私有繼承基類的私有成員標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:基類的私有成員在派生類中都是不能訪問的,所以選項(xiàng)B、D是錯(cuò)誤的,基類的公有成員通過私有繼承后,在派生類中變?yōu)榱怂接谐蓡T,只能在派生類中進(jìn)行訪問,而通過派生類的對象不能訪問,所以選項(xiàng)c也是錯(cuò)誤的?;惖墓谐蓡T通過公有繼承后,在派生類中是公有成員,所以可以通過派生對象來訪問。20、下面是一個(gè)模板聲明的開始部分:templute<typenameT>double____由此可知()。A、這可能是一個(gè)函數(shù)模板的聲明B、這可能是一個(gè)類模板的聲明C、這既可能是一個(gè)函數(shù)模板的聲明,也可能是一個(gè)類模板的聲明D、這肯定是一個(gè)錯(cuò)誤的模板聲明標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是函數(shù)模板的聲明。聲明一個(gè)函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明;定義類模板的格式是:template<類型形參表>class<類模板名>{};。21、當(dāng)使用ifstream流類定義一個(gè)流對象并打開一個(gè)磁盤文件時(shí),文件的默認(rèn)打開方式為()。A、ios_base::inB、ios_base::inlios_base::outC、ios_base::outD、ios_base::in&ios_base::out標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:對于ifstream,默認(rèn)打開模式是iosbase::in。ifstream只能用于輸入,它沒有提供任何用于輸出的操作。22、下列函數(shù)模版中的定義中,合法的是()。A、template<typenameT>Tabs(Tx){returnx<0?-x:x;}B、templateclass<T>Tabs(Tx){returnx<0?-x:x;}C、templateT<class.T>abs(Tx){returnx<0?-x:x;}D、templateTabs(Tx){returnx<07-x:x;}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是函數(shù)模板。聲明一個(gè)函數(shù)模板的格式是:template<模板形參表聲明>函數(shù)聲明,其中的<模板形參表聲明>是由一個(gè)或多個(gè)“模板形參”組成的,每個(gè)“模板形參”可具有以下幾種形式:typename參數(shù)名;class參數(shù)名;類型修飾參數(shù)名。23、若MyTemp是一個(gè)只有一個(gè)虛擬類型參數(shù)的類模板,且有如下語句序列MyTemp<double>p2;MyTemp<long>p3[2];編譯系統(tǒng)在處理上面的語句序列時(shí),所生成的模板MyTemp的實(shí)例的個(gè)數(shù)是()。A、1B、2C、3D、0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:p2是一個(gè)double型的MyTemp,p3[2]是一個(gè)long.型MyTemp數(shù)組,其中包括兩個(gè)元素。所以共有3個(gè)MyTemp的實(shí)例。24、下列關(guān)于模板的敘述中,錯(cuò)誤的是()。A、調(diào)用模板函數(shù)時(shí),有時(shí)可以省略模板實(shí)參B、函數(shù)模板的每個(gè)實(shí)例就是一個(gè)函數(shù)定義C、類模板的每個(gè)實(shí)例就是一個(gè)類定義D、類模板的實(shí)例是一個(gè)類對象標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在定義對象的過程中,編譯系統(tǒng)會(huì)自動(dòng)地根據(jù)需要生成相應(yīng)的類定義,這種依據(jù)類模板生成類定義的過程稱為類模板的實(shí)例化。類模板實(shí)例化所生成的每一個(gè)類定義就是相應(yīng)類模板的一個(gè)實(shí)例。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列關(guān)于棧的敘述正確的是()。A、棧按“先進(jìn)先出”組織數(shù)據(jù)B、棧按“先進(jìn)后出”組織數(shù)據(jù)C、只能在棧底插入數(shù)據(jù)D、不能刪除數(shù)據(jù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧是限定在一端進(jìn)行插入和刪除的線性表,允許進(jìn)行插入和刪除元素的一端稱為棧頂,另一端稱為棧底。棧是按照“先進(jìn)后出”的原則組織數(shù)據(jù)的。2、執(zhí)行語句序列intx=1,&y=x;cout<<x<<’一’<<y<<end1;輸出結(jié)果為()。A、x-xB、1-1C、1-0D、異常標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:程序中的“intx=1”定義x為int型變量,并賦值為l。語句“&y=x”中“&”為引用運(yùn)算符,&y=x語句可以理解為y具有x的地址,所以y的值也是1,即輸出為:1-1。3、下列對隊(duì)列的描述中正確的是()。A、隊(duì)列屬于非線性表B、隊(duì)列按“先進(jìn)后出”原則組織數(shù)據(jù)C、隊(duì)列在隊(duì)尾刪除數(shù)據(jù)D、隊(duì)列按“先進(jìn)先出”原則組織數(shù)據(jù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:隊(duì)列(queue)是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表。允許插入的一端稱為隊(duì)尾:允許刪除的一端稱為隊(duì)頭。在隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除;反之,最后插入的元素將最后才能被刪除。因此,隊(duì)列又稱“先進(jìn)先出”或“后進(jìn)后出”的線性表。4、閱讀下面程序:#include<iostream.h>fun(inta,intb){intc;c=a+b:returnC;)voidmain(){intx=6,y=7,z=8,r;r=fun((x--,y++,x+y),z--);cout<<r<<endl;)則該程序的輸出結(jié)果是()。A、11B、20C、21D、31標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:由主函數(shù)入手,定義變量x、y、z,然后調(diào)用函數(shù)fun,其中的參數(shù)為(x--,y++,x+y)的計(jì)算結(jié)果和z一的計(jì)算結(jié)果,所以調(diào)用fun(13,8)計(jì)算結(jié)果為21。5、下面程序的運(yùn)行結(jié)果是()。#include<iostream>usingnamespacestd;classTestClass{staticintn;public:TestClass0{n++;}staticinttest(){for(inti=0;i<4;i++)n++;returnn;}};intTestClass::n=0;intmain(){tout<<TestClass::test()<<’’’’;TestClassc1,c2;tout<<TestClass::test()<<end1;return0;}A、4,10B、4,6C、0,6D、0,4標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在主函數(shù)中首先調(diào)用TestClass中的test函數(shù)輸出,類中的n為靜態(tài)數(shù)據(jù)成員,可以為所有的對象共享這些數(shù)據(jù),這里調(diào)用后n等于4。定義對象c1,c2調(diào)用構(gòu)造函數(shù)后n=6,所以主函數(shù)再次執(zhí)行“cout<<TestClass::test()<<end1;”后,n等于10。6、若有以下定義,說法錯(cuò)誤的是()。inta=100,*p=&a;A、聲明變量p,其中*表示p是一個(gè)指針變量B、變量p經(jīng)初始化,獲得變量a的地址C、變量p只可以指向一個(gè)整型變量D、變量p的值為100標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:D是一個(gè)指針,用來存儲(chǔ)a變量的地址,而100是存儲(chǔ)在該地址的一個(gè)值用p表示的為*p。7、有如下程序段:inti=0,j=1;int&r=i;∥@r=j;∥②int*p=&i;∥③*p=&r;∥④其中會(huì)產(chǎn)生編譯錯(cuò)誤的語句是()。A、④B、③C、②D、①標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是指針和引用。本題中,語句①是一條合法的引用聲明語句,使得變量i被r引用;語句②通過引用r將變量j的值賦給變量i;語句③聲明了指針變量p,并初始化指向變量i;語句④中*p代表了變量i的值,要將&r賦給*p,這會(huì)使編譯器產(chǎn)生類型不符的錯(cuò)誤提示。8、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、匯編程序標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有c教務(wù)管理系統(tǒng)才是應(yīng)用軟件。9、下面敘述中錯(cuò)誤的是()。A、軟件測試的目的是發(fā)現(xiàn)錯(cuò)誤并改正錯(cuò)誤B、對被調(diào)試的程序進(jìn)行“錯(cuò)誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測試應(yīng)嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。軟件測試要嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。程序調(diào)試通常也稱Debug,對被調(diào)試的程序進(jìn)行“錯(cuò)誤”定位是程序調(diào)試的必要步驟。10、有如下程序:#includeusingnamespacestd;classXA{inta;public:staticintb:XA(intaa):a(aa){b++;)~XA(){}intget0{returna;});intXA::b=0;intmain(){XAd1(2),d2(3);cout<A、5B、6C、7D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:執(zhí)行xA類的實(shí)例變量d1(2)時(shí),成員函數(shù)d1.get()的返回值等于2,xA.b的值等于1,執(zhí)行xA類的實(shí)例變量d2(3)時(shí),成員函數(shù)d1.get()的返回值等于3,xA-b的值等于2,所以輸出結(jié)果為2+3+2=7。11、在E—R圖中,用來表示實(shí)體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:構(gòu)成E—R圖的基本要素是實(shí)體型、屬性和聯(lián)系,其表示方法為:實(shí)體型(Entity)一用矩形表示;屬性(Attribute)—用橢圓形表示,聯(lián)系(Relationship)—用菱形表示,菱形框內(nèi)寫明聯(lián)系名。12、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是this指針。this指針是一個(gè)隱含的指針,它隱含于每個(gè)類的非靜態(tài)成員函數(shù)中,它明確地表示出了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對象。題目中,只有f3()滿足“類的非靜態(tài)成員函數(shù)”的要求,故應(yīng)選C選項(xiàng)。13、下面不屬于結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是A、程序結(jié)構(gòu)良好B、程序的易讀性C、不濫用Goto語句D、程序的執(zhí)行效率標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)(structuredprogramming)是進(jìn)行以模塊功能和處理過程設(shè)計(jì)為主的詳細(xì)設(shè)計(jì)的基本原則。結(jié)構(gòu)化程序設(shè)計(jì)是過程式程序設(shè)計(jì)的一個(gè)子集,它對寫入的程序使用邏輯結(jié)構(gòu),使得理解和修改更有效更容易。14、下列關(guān)于派生類的敘述中,錯(cuò)誤的是()。A、派生類至少要有一個(gè)基類B、派生類中包括了從基類繼承的成員C、一個(gè)派生類可以作為另一個(gè)派生類的基類D、基類成員被派生類繼承以后訪問權(quán)限保持不變標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:派生類對象對基類成員的訪問權(quán)限:①對于公有繼承,只有基類的公有成員可以被派生類對象訪問,其他(保護(hù)和私有)成員不能被訪問。②對于私有繼承和保護(hù)繼承,基類中所有成員都不能被派生類對象訪問。派生類對基類成員的訪問權(quán)限:①對于公有繼承,基類中公有成員和保護(hù)成員可以訪問,而基類中私有成員不能被訪問。②對于私有繼承和保護(hù)繼承,也是基類中的公有成員和保護(hù)成員可以被派生類訪問,而基類中的私有成員不能被訪問。15、在開發(fā)一個(gè)C++程序的整個(gè)過程中,第3個(gè)步驟為()。A、鏈接B、運(yùn)行C、編輯D、編譯標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C++程序的開發(fā)過程是編輯、編譯、鏈接、運(yùn)行和調(diào)試。16、針對數(shù)組定義intdata[10];,下列表述中錯(cuò)誤的是()。A、用*data可訪問到數(shù)組的首元素B、用data[9]可訪問到數(shù)組的末元素C、用data[10]訪問數(shù)組元素會(huì)超出數(shù)組邊界D、data共有10個(gè)元素,其首元素是data[1]標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是數(shù)組和指針的概念。題目中data[10]共有10個(gè)元素,分別是data[0]、data[1]、data[2]、data[3]…data[9],首元素是data[0],所以選項(xiàng)D錯(cuò)誤;其他選項(xiàng)均正確。17、下列字符串中,正確的C++標(biāo)識(shí)符是()。A、foo—1B、2bC、newD、256標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是C++語言中標(biāo)識(shí)符的定義。標(biāo)識(shí)符由字母、數(shù)字或下劃線構(gòu)成,但第一個(gè)字符必須是字母或下劃線;標(biāo)識(shí)符中大小寫字母是不同的;用戶定義標(biāo)識(shí)符時(shí),不允許采用系統(tǒng)的關(guān)鍵字。18、有如下程序:#inc1ude<iostream>usingruunespacestd;c1assObj{staticinti;public:Obj(){i++}——Obj(){i——;}staticintgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<<o(jì)b2.getVal();}intmain(){Objobl;f();Obj*ob3=newObj;cout<<o(jì)b3—>getVal();deleteob3;cOut<<Obj::getVal();retutn0;}程序的輸出結(jié)果是()。A、232B、231C、222D、221標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是靜態(tài)成員。本題中,Obj類定義了一個(gè)靜態(tài)數(shù)據(jù)成員i,并初始化為0.在主函數(shù)中,首先定義了1個(gè)該類對象obl,所以構(gòu)造函數(shù)被調(diào)用1次,i加1;然后調(diào)用函數(shù)f0,該函數(shù)中又定義了一個(gè)對象ob2,此時(shí)j再次加1變?yōu)?,然后通過函數(shù)getVal0輸出i的值2。f()函數(shù)結(jié)束,ob2變量被釋放,故析構(gòu)函數(shù)被調(diào)用了1次,i變成1:回到主函數(shù)中,又動(dòng)態(tài)創(chuàng)建了1個(gè)對象并讓ob3指向它,此后i變成2并輸出。最后釋放動(dòng)態(tài)創(chuàng)建的對象i變?yōu)閘,輸出1。故最終的輸出結(jié)果是221。19、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<’B’;}};classDerived:publicBase{public:voidfun(){______cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的輸出結(jié)果是BD,則劃線處缺失的部分是()。A、fun();B、Base.fun();C、Base::fun();D、Base->fun();標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:派生類Derived的對象d調(diào)用其成員函數(shù)fun(),要輸出結(jié)果為BD,所以在其成員函數(shù)fun()中要調(diào)用基類Base的成員函數(shù)fun()。20、如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態(tài)機(jī)制。#inc1ude<iostream>usingnamespacestd;c1assBase{inta,b,public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<a<<’,’<<b<<end1;}};c1assDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;)voidshow(){cout<<c<<’,’<<d<<end1;)};intmain(){BaseB1(50,50),*pb;DerivedD1(10,20,30,40);pb=&D1;retum0:retum();}運(yùn)行時(shí)輸出的結(jié)果是()。A、10,20B、30,40C、20,30D、50,50標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:此題考查的是多態(tài)性。在C++中,一個(gè)基類指針可以用于指向它的派生類對象,而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際所指向的對象類的那個(gè)重定義版本。在實(shí)函數(shù)的情況下。通過基類指針?biāo){(diào)用的只能是基類的那個(gè)函數(shù)敝本,無法調(diào)用到派生類中中重定義函數(shù)。此題中,通過指針pb所調(diào)用的是基類的版本,即輸出a和b的值10,20。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assGA{public;virtualintf(){retuml;}};c1assGB:publicGA{public;virtualintf(){return2;}};voidshow(GAg){cout<<g.f();}voiddisp1ay(GA&g){cout<<g.f();}intmain(){GAa:show(a);disp1ay(a);GBb:show(b);disp1ay(b);retum0;}運(yùn)行時(shí)的輸出結(jié)果是()。A、1111B、1211C、1112D、1212標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查派生類與虛函數(shù)的考查。由主函數(shù)main入手,其中分別定義了類GA和GB的對象a和b。首先,執(zhí)行參數(shù)a的show函數(shù)調(diào)用,其中的輸出語句為調(diào)用GA類中的f()虛函數(shù),返回1。同理disp1ay(a)函數(shù)輸出1。show(b)函數(shù)中調(diào)用的為GA中的f()函數(shù),disp1ay(b)調(diào)用GA中f()函數(shù),返回1,disp1ay(b)調(diào)用GB中的f()函數(shù)返回2。所以最后輸出為1112。22、有如下程序:#includeusingnamespacestd;classA{public:A(inti=0):r1(i){)voidprim(){cout<<’E’<A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在主函數(shù)中創(chuàng)建a1對象時(shí),調(diào)用類A的默認(rèn)構(gòu)造函數(shù),其數(shù)據(jù)成員訂的值等于0。當(dāng)執(zhí)行a1.pnnt(2)語句時(shí),調(diào)用帶參數(shù)的print成員函數(shù),所以輸出結(jié)果為p0-,對象a2為常成員,所以其成員變量r1的值等于4,因?yàn)槌ο笾荒苷{(diào)用常成員函數(shù),所以當(dāng)執(zhí)行語句a2.print()語句時(shí),輸出結(jié)果為C14-。23、已知Value是一個(gè)類,Value是Value的一個(gè)對象。下列以非成員函數(shù)形式重載的運(yùn)算符函數(shù)原形中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是重載加法運(yùn)算符“+”。“+”是二元運(yùn)算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項(xiàng)B正確。24、已知類MyClock中未顯式定義構(gòu)造函數(shù),并重載了加法運(yùn)算符,使得下面的語句序列能夠正確執(zhí)行:MyClockc1,c2;//……c2=c1+10;由此可知:為類MyClock重載的“+”運(yùn)算符函數(shù)的聲明是()。A、friendMyClockoperator+(MyClock,int);B、friendMyClockoperator+(MyClock,MyClock);C、fiendMyClockoperator+(int,MyClock);D、MyClockoperator+(MyClock);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:由表達(dá)式c2=c1+10可知,在對“+”進(jìn)行重載時(shí),第一操作數(shù)是Myclock類的對象,而第二操作數(shù)是一個(gè)整型數(shù)據(jù)。25、下列有關(guān)模板的敘述中,正確的是()。A、函數(shù)模板不能含有常規(guī)形參B、函數(shù)模板的_個(gè)實(shí)例就是一個(gè)函數(shù)定義C、類模板的成員函數(shù)不能是模板函數(shù)D、用類模板定義對象時(shí),絕對不能省略模板實(shí)參標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此題考查的是模板的概念。函數(shù)模板可以含有常規(guī)形參;函數(shù)模板的一個(gè)實(shí)例就是一個(gè)函數(shù)定義;類模板中的成員函數(shù)都是模板函數(shù);在用類模板定義對象時(shí),由于沒有像函數(shù)實(shí)參表這樣的額外信息渠道,因此無法按函數(shù)模板的方式省略模板形參,但是可以為類模板的參數(shù)設(shè)置默認(rèn)值。國家二級(jí)C++機(jī)試(選擇題)模擬試卷第5套一、選擇題(本題共22題,每題1.0分,共22分。)1、下列字符串中,不可以用作C++標(biāo)識(shí)符的是()。A、y_2006B、_TEST_HC、ReturnD、switch標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是標(biāo)識(shí)符。標(biāo)識(shí)符是由數(shù)字、字母以及下劃線構(gòu)成,其第一個(gè)字符必須是字母或下劃線,中間不能有空格;標(biāo)識(shí)符的長度是任意的,但由于編譯系統(tǒng)的限制一般不超過31個(gè)字符:標(biāo)識(shí)符中的大小寫字母是不同的;定義標(biāo)識(shí)符時(shí)不能采用系統(tǒng)的保留字。2、設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊(duì)與退隊(duì)運(yùn)算后,front=15;rear=15,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為()。A、15B、16C、20D、0或35標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:循環(huán)隊(duì)列的隊(duì)頭指針和尾指針都等于15,此循環(huán)隊(duì)列中元素的個(gè)數(shù)有兩種情況,第一種情況是隊(duì)頭指針和尾指針都是第一次到達(dá)15,此時(shí)元素個(gè)數(shù)為0:第二種情況是隊(duì)頭指針第一次到達(dá)15,而尾指針第二次到達(dá)15,此時(shí)元素個(gè)數(shù)為35。3、下列敘述中正確的是()。A、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、上述三種說法都不對標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性表的存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。在順序存儲(chǔ)中,所有元素所占的存儲(chǔ)空間是連續(xù)的,各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的。所以每個(gè)元素只存儲(chǔ)其值就可以了,而在鏈?zhǔn)酱鎯?chǔ)的方式中,將存儲(chǔ)空間的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部分,一部分用于存儲(chǔ)數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲(chǔ)下一個(gè)元素的存儲(chǔ)序號(hào),稱為指針域。所以線性表的鏈?zhǔn)酱鎯?chǔ)方式比順序存儲(chǔ)方式的存儲(chǔ)空間要大一些。4、一間宿舍可住多個(gè)學(xué)生,則實(shí)體宿舍和學(xué)生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:因?yàn)橐灰婚g宿舍可以住多個(gè)學(xué)生即多個(gè)學(xué)生住在一個(gè)宿舍中,但一個(gè)學(xué)生只能住一間宿舍,所以實(shí)體宿舍和學(xué)生之間是一對多的關(guān)系。5、設(shè)二叉樹的前序序列與中序序列均為ABCDEFGH,則該二叉樹的后序序列為A、HGFEDCBAB、ABCDEFGHC、ABCDHGFED、DCBAHGFE標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:前序遍歷(DLR)是二叉樹遍歷的一種,也叫做先根遍歷、先序遍歷、前序周游,可記做根左右;中序遍歷(LDR)是二叉樹遍歷的一種,也叫做中根遍歷、中序周游,可記做左根右;后序遍歷(LRD)是二叉樹遍歷的一種,也叫做后根遍歷、后序周游,可記做左右根。根據(jù)題中前序和中序序列均為ABCDEFGH,可畫出二叉樹,該二叉樹是一個(gè)子結(jié)點(diǎn)全部在右側(cè)二叉樹,然后根據(jù)后序遍歷方法,可得出后序遍歷為HGFEDCBA。6、有如下程序:#include#includeusingstd∷cout;classPoint{public:frienddoubledistance(constPoint&p);∥p距原點(diǎn)的距離Point(intxx=0,intyy=0):x(xx),y(yy)}∥①private:intx,y;};doubledistance(constPoint&p){∥②returnsqrt(p.XP.x+p.yP.y);}intmain(){Pointp1(3,4);cout<A、程序編譯正確B、程序編譯時(shí)語句①出錯(cuò)C、程序編譯時(shí)語句②出錯(cuò)D、程序編譯時(shí)語句③出錯(cuò)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:這段程序是正確的,計(jì)算p距離原點(diǎn)的距離。語句①是類Point的構(gòu)造函數(shù),在構(gòu)造函數(shù)中給變量xx和yy賦初值0。語句②是計(jì)算點(diǎn)p距原點(diǎn)的距離的函數(shù)distance。語句③是計(jì)算點(diǎn)p1距離原點(diǎn)的距離并輸出。7、數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫技術(shù)的重要特點(diǎn)之一,所謂數(shù)據(jù)獨(dú)立性是指()。A、數(shù)據(jù)與程序獨(dú)立存放B、不同的數(shù)據(jù)被存放在不同的文件中C、不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)庫中數(shù)據(jù)獨(dú)立于應(yīng)用程序而不依賴于應(yīng)用程序,即數(shù)據(jù)與程序間的互不依賴性。也就是說數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)與存取方式的改變不會(huì)影響應(yīng)用程序。數(shù)據(jù)的獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性兩級(jí)。①物理獨(dú)立性:數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)、存取方式等)的改變,如存儲(chǔ)設(shè)備的更換、物理存儲(chǔ)的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。②邏輯獨(dú)立性:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應(yīng)的應(yīng)用程序改變,這就是數(shù)據(jù)的邏輯獨(dú)立性。8、下面屬于黑盒測試方法的是A、語句覆蓋B、邏輯覆蓋C、邊界值分析D、路徑覆蓋標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:采用黑盒技術(shù)設(shè)計(jì)測試用例的方法有:等價(jià)類劃分、邊界值分析、錯(cuò)誤推測、因果圖和綜合策略。9、下列關(guān)于C++函數(shù)的敘述中,正確的是()。A、每個(gè)函數(shù)至少要具有一個(gè)參數(shù)B、每個(gè)函數(shù)都必須返回一個(gè)值C、函數(shù)在被調(diào)用之前必須先聲明D、函數(shù)不能自己調(diào)用自己標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是函數(shù)的性質(zhì)。當(dāng)調(diào)用無參函數(shù)時(shí)主函數(shù)并不將數(shù)據(jù)傳送給被調(diào)函數(shù),且可以帶回或不帶回函數(shù)值。函數(shù)的遞歸調(diào)用就是直接或間接的調(diào)用自己。10、通過派生類的對象可直接訪問其()。A、公有繼承基類的公有成員B、公有繼承基類的私有成員C、私有繼承基類的公有成員D、私有繼承基類的私有成員標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:基類的私有成員在派生類中都是不能訪問的,所以選項(xiàng)B、D是錯(cuò)誤的,基類的公有成員通過私有繼承后,在派生類中變?yōu)榱怂接谐蓡T,只能在派生類中進(jìn)行訪問,而通過派生類的對象不能訪問,所以選項(xiàng)c也是錯(cuò)誤的。基類的公有成員通過公有繼承后,在派生類種是公有成員,所以町以通過派生對象來訪問。11、下列語句中錯(cuò)誤的是()。A、constint

溫馨提示

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

評論

0/150

提交評論