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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級C++機試(選擇題)模擬試卷5(共9套)(共337題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共34題,每題1.0分,共34分。)1、下列數(shù)據(jù)結構中,屬于非線性結構的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:樹是簡單的非線性結構,所以二叉樹作為樹的一種也是一種非線性結構。2、下列數(shù)據(jù)結構中,能夠按照“先進后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧是按先進后出的原則組織數(shù)據(jù)的。隊列是先進先出的原則組織數(shù)據(jù)。3、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結構所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。4、算法的空間復雜度是指()。A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法的空間復雜度是指算法在執(zhí)行過程中所需要的內存空間。所以選擇A。5、下列選項中不屬于結構化程序設計原則的是()。A、可封裝B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。6、軟件詳細設計產(chǎn)生的圖如下:該圖是()。A、N―S圖B、PAD圖C、程序流程圖D、E―R圖標準答案:C知識點解析:N―s圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設計的圖形表示工具,所以B不對。E―R圖是數(shù)據(jù)庫中的用于表示E―R模型的圖示工具,所以D不對。根據(jù)圖中所示表示方法是進行軟件詳細設計時使用的程序流程圖。7、數(shù)據(jù)庫管理系統(tǒng)是()。A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。8、在E―R圖中,用來表示實體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標準答案:C知識點解析:在E―R圖中實體集用矩形,屬性用橢圓,聯(lián)系用菱形。9、下列各組類型聲明符中,含義相同的一組是()。A、unsignedlongim和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int標準答案:B知識點解析:本題考查整型變量的類型,A、c選項中前者為無符號的,后者為有符號的,D選項中shortint為2個字節(jié),int為4個字節(jié)。10、必須用一對大括號括起來的程序段是()。A、switch語句中的cIise標號語句B、if語句的分支C、循環(huán)語句的循環(huán)體D、函數(shù)的函數(shù)體標準答案:D知識點解析:本題考查c++基本控制結構,A、B、c三個選項中的大括號不是必須的,而D選項中的函數(shù)體必須使用大括號。11、執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是()。for(inti=50;i>1;i-=2)cout<<’*’;A、24B、25C、26D、50標準答案:B知識點解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2,那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。12、下列關于運算符重載的敘述中,錯誤的是()。A、有的運算符可以作為非成員函數(shù)重載B、所有的運算符都可以通過重載而被賦予新的含義C、不得為重載的運算符函數(shù)的參數(shù)設置默認值D、有的運算符只能作為成員函數(shù)重載標準答案:B知識點解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。所以答案為B。13、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關鍵字const標準答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為c。14、運算符重載時不需要保持的性質是()。A、操作數(shù)個數(shù)B、操作數(shù)類型C、優(yōu)先級D、結合性標準答案:B知識點解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。所以答案為B。15、下列關于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:本題考查函數(shù)的基礎知識,函數(shù)可以沒有返回值,沒有參數(shù),也可以是一個類的成員,函數(shù)可以定義為模板,即模板函數(shù)。16、關于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標準答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為C。17、下列關于運算符重載的描述中,正確的是()。A、運算符重載為成員函數(shù)時,若參數(shù)表中無參數(shù),重載的是一元運算符B、一元運算符只能作為成員函數(shù)重載C、二元運算符重載為非成員函數(shù)時,參數(shù)表中有一個參數(shù)D、C++中可以重載所有的運算符標準答案:A知識點解析:運算符重載為成員函數(shù)時,會省略一個參數(shù),如果無參數(shù),表明是一元運算符。一元運算符既可以作為成員函數(shù)重載,也可以作為非成員函數(shù)重載。二元運算符如果作為非成員函數(shù),則參數(shù)表中必須有兩個參數(shù)。C++有5個運算符不能重載,它們是:(成員訪問運算符)、*(成員指針訪問運算符)、::(域運算符)、sizeof(長度運算符)和?:(條件運算符)。故本題答案為A。18、對于一個類定義,下列敘述中錯誤的是()。A、如果沒有定義拷貝構造函數(shù),編譯器將生成一個拷貝構造函數(shù)B、如果沒有定義缺省的構造函數(shù),編譯器一定將生成一個缺省的構造函數(shù)C、如果沒有定義構造函數(shù),編譯器將生成一個缺省的構造函數(shù)和一個拷貝構造函數(shù)D、如果已經(jīng)定義了構造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造函數(shù)標準答案:B知識點解析:本題考查構造函數(shù)和復制構造函數(shù),如果沒有定義構造函數(shù),編譯器將生成一個缺省的構造函數(shù)和一個拷貝構造函數(shù),如果已經(jīng)定義了構造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造函數(shù)。如果沒有定義拷貝構造函數(shù),編譯器將生成一個拷貝構造函數(shù)。19、下列關于類定義的說法中,正確的是()。A、類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明B、類成員的缺省訪問權限是保護的C、數(shù)據(jù)成員必須被聲明為私有的D、成員函數(shù)只能在類體外進行定義標準答案:A知識點解析:類的成員的缺省訪問權限是私有的,數(shù)據(jù)成員可以是私有,可以是公用的,也可以是受保護的。類的成員函數(shù)可以在類內定義。20、如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是()。A、public和publicB、public和pmtectedC、protected和publicD、protected和protected標準答案:D知識點解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。21、下列有關繼承和派生的敘述中,正確的是()。A、派生類不能訪問基類的保護成員B、作為虛基類的類不能被實例化C、派生類應當向基類的構造函數(shù)傳遞參數(shù)D、虛函數(shù)必須在派生類中重新實現(xiàn)標準答案:C知識點解析:派生類可以訪問基類的保護成員,而不能訪問基類的私有成員。作為虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么仍然使用基類的成員函數(shù)。22、有如下類定義:classAA{inta;public:AA(intn=0):a(n){}};classBB:public從{public:BB(intn)};其中橫線處缺失的部分是()。A、:a(n)||B、:AA(n)||C、{a(n);|D、{a=n;}標準答案:B知識點解析:本題考查公用繼承對基類成員的訪問屬性。公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有,本題中若要給派生類繼承下來基類的私有成員賦值,那么只能調用基類的成員函數(shù)來對它賦值,所以本題答案為B。23、有如下程序:#includeusingnamespacestd;classCD{public:一CD(){cout<<‘C’;}private:charname[80];};intmain(){CDa,*b,d[2];return0;}執(zhí)行這個程序的輸出結果是()。A、CCCCB、CCCC、CCD、C標準答案:B知識點解析:本題考查類的析構函數(shù),題目中定義了類的一個對象a,對象指針*b,對象數(shù)組d[2],當程序執(zhí)行完后,析構函數(shù)執(zhí)行了3次,輸出“CCC”,對象指針不會執(zhí)行析構函數(shù)。所以本題答案為B。24、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){++count;}~MyClass(){一一count;}staticintgetCount(){returncount;}private:staticintcount;};intMyClass::count=0;immain(){MyClassobj;cout<A、121B、232C、221D、122標準答案:A知識點解析:本題考查靜態(tài)數(shù)據(jù)成員。靜態(tài)數(shù)據(jù)成員在內存中只占一份空間,靜態(tài)數(shù)據(jù)成員屬于類,即使不定義對象,也會給靜態(tài)數(shù)據(jù)成員分配空間,可以被引用。本題中先是定義了一個對象obj,執(zhí)行構造函數(shù)使得靜態(tài)數(shù)據(jù)成員count變?yōu)榱?,然后又定義了指針對象,執(zhí)行構造函數(shù)后,count變?yōu)榱?,釋放指針后,執(zhí)行析構函數(shù),使得count變?yōu)榱?。所以本題答案為A。25、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intX):val(X){}voidPrint()const{cout<<“const:val=”<A、val=10const:val:20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20標準答案:C知識點解析:本題考查常對象、常成員函數(shù)及構造函數(shù)。常對象只能調用常成員函數(shù),普通對象調用普通成員函數(shù)。所以本題中objl為常對象,執(zhí)行objl.print()后,會執(zhí)行常構造函數(shù),輸出const:val=10;而obj2為普通對象,執(zhí)行obj2.print()時,會執(zhí)行默認構造函數(shù),輸出val=20。故答案為C。26、有如下程序:橢ncludeusingnamespacestd;classPart{public:Part(intx=0):val(X){tout<A、123321B、213312C、213D、123123標準答案:B知識點解析:本題考查帶參數(shù)的構造函數(shù)。本題中定義了一個對象obj,那么執(zhí)行其構造函數(shù),初始化p1,p2的順序是由聲明這兩個成員的順序決定的,而不是由參數(shù)化列表順序決定,所以本題中,會先執(zhí)行p1,輸出2,然后執(zhí)行p2輸出1,然后輸出3,最后一次輸出312。所以本題答案為B。27、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout<A、0B、1C、01D、001標準答案:D知識點解析:本題考查派生類的構造函數(shù)和析構函數(shù),在定義一個派生類的對象時,先調用基類的構造函數(shù),然后再執(zhí)行派生類的構造函數(shù),對象釋放時,先執(zhí)行派生類的析構函數(shù),再執(zhí)行基類的析構函數(shù)。所以本題中定義了一個對象d,先執(zhí)行基類的構造函數(shù)輸出0,因為派生類中的私有數(shù)據(jù)成員為Base,所以還會執(zhí)行一次基類的構造函數(shù)輸出0,最后執(zhí)行派生類的構造函數(shù)輸出1,所以本題答案為D。28、下列代碼段中聲明了3個類:classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列關于這些類之間關系的描述中,錯誤的是()。A、類Person是類Undergraduate的基類B、類Undergraduate從類Student公有繼承C、類Student是類Person的派生類D、類Undergraduate是類Person的派生類標準答案:B知識點解析:本題考查基類和派生類的邏輯關系,屬于基礎知識,如果沒有指明哪種繼承方式,那么默認為私有繼承,所以B選項錯誤。29、有如下程序:#includeusingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<‘B’;}};classDerived:publicBase{public:voidoutput(){tout<<2;}voidPrint(){cout<<‘D’;}};intmain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;rettLrn0;}執(zhí)行這個程序的輸出結果是()。A、1BB、1DC、2BD、2D標準答案:B知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr一>output后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr一>Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。30、有如下程序:#inchdeusingnamespacestd;classB{public:virtualvoidshow(){cout<<“B”;}};classD:publicB{public:voidshow(){tout<<“D”;}};voidfunl(B*ptr){ptr一>show();}voidfun2(B&ref){ref..show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);deletep;return0;}執(zhí)行這個程序的輸出結果是()。A、BBBB、BBDC、DBBD、DBD標準答案:C知識點解析:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義類B的對象b、對象指針木p=newD以及類D的對象d;執(zhí)行funl會調用派生類的show函數(shù),因為show函數(shù)為虛函數(shù),而調用fun2、fun3仍然為基類的show函數(shù),所以本題答案為C。31、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標準答案:C知識點解析:本題考查函數(shù)模板和類模板,所以答案為c。32、下列關于類模板的模板參數(shù)的敘述中,錯誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標準答案:D知識點解析:本題考查類模板的概念和定義,模板參數(shù)可以作為成員函數(shù)的局部變量的類型。33、下列關于C++預定義流對象的敘述中,正確的是()。A、cin是C++預定義的標準輸入流對象B、cin是C++預定義的標準輸入流類C、cout是C++預定義的標準輸入流對象D、eout是C++預定義的標準輸入流類標準答案:A知識點解析:cin是C++預定義的標準輸入流對象,cout是C++預定義的標準輸出流對象。34、有如下語句序列:charstr[10];cin>>str;當從鍵盤輸入“Ilovethisgame”時,str中的字符串是()。A、“Ilovethisgame”B、“Ilovethi”C、“Ilove”D、“I”標準答案:D知識點解析:cin是C++預定義的標準輸入流對象,cin用來接收字符串時,遇“空格”、“TAB”、“回車”時都會結束。所以本題答案為D。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共36題,每題1.0分,共36分。)1、設c1和c2是類MyClass的對象,若將后綴運算符“++”作為類MyClass的友元函數(shù)重載,運算符“,作為類MyClass的成員函數(shù)重載,則表達式e2*c1++等價于()。A、c1.operaor++(0).operator*(c2)B、c2.operator*(c1.operator++(0))C、c2.operator*(operator++(c1,0))D、operator*(operator++(c1,0),c2)標準答案:C知識點解析:友元函數(shù)不是類的成員函數(shù),所以友元函數(shù)的調用不需要使用類對象;另外運算符重載不改變運算符的優(yōu)先級,所以表達式c2*c1++先執(zhí)行c1++;為了區(qū)分運算符的前綴和后綴形式,規(guī)定后綴式運算符函數(shù)接受一個額外的int型形參,使用時可以提供0作為形參的實參,所以c1++相當于叩erator++(c1,0),c2*c1++相當于c2.operator*(opemtor++(c1,0));答案為C。2、有如下類定義:classMyClass{public:MyClass(doubled=O.0):val(d){}_____________//前綴自增運算符++的聲明private:doubleval;};若要使語句序列MyClassx(2.1),y;y=++x;能夠正常運行,橫線處的語句應為()。A、MyClass&operator++();B、MyClass&operator++(int);C、MyClassoperator++(int);D、MyClassoperator++();標準答案:A知識點解析:橫線處填寫的語句,是重載前綴自增運算符++的函數(shù)聲明,為了與內置類型一致,前綴自增運算符應該返回自增對象的引用,選項C、D錯誤;自增運算符是一元運算符,即操作數(shù)是類對象,所以參數(shù)列表為空,選項B錯誤;答案為A。3、有如下程序:#includeusingnamespacestd;voidfun(int&a,_________){intc;c=a;a=b;b=c;}intmain(){intx,y;x=1;y=2;fun(x,y);eout<A、intbB、int*bC、im&bD、b標準答案:C知識點解析:main函數(shù)中定義兩個整型變量x=1,y=2,由輸出x,y的結果為21,可知函數(shù)fun的功能是交換兩個實參的值,由于函數(shù)fun中未使用指針類型的變量,所以若想通過函數(shù)fun交換實參的值,形參類型必然為引用類型,橫線處語句為int&b,答案為C。4、下列關于this指針的描述中,正確的是()。A、類的非const成員函數(shù)都有this指針B、類的const成員函數(shù)都有this指針C、任何靜態(tài)成員函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)都有this指針標準答案:B知識點解析:C++中,靜態(tài)成員是類的組成部分,不是任何對象的組成部分,因此靜態(tài)成員函數(shù)沒有this指針,類的非const成員函數(shù)包括靜態(tài)成員函數(shù),所以選項A、C錯誤;答案選B或D。5、有如下類定義:classSample{public:Sample(intx):ref(x){}//1private:Sample(){ref=0;}//2staticintval=5;//3constintref;//4};上述程序段中,有四個語句編號分別為1、2、3、4,其中錯誤的語句是()。A、1,3B、2,4C、2,3D、3,4標準答案:C知識點解析:C++中,不能在類中直接初始化const數(shù)據(jù)成員,因為在類沒有被初始化時,成員是不存在的,所以const數(shù)據(jù)成員必須在構造函數(shù)初始化列表中初始化,語句1、4正確,語句2錯誤;另外類的static數(shù)據(jù)成員不能在類定義中初始化,也不能通過類的構造函數(shù)進行初始化,而必須在類定義體的外部定義,語句3錯誤;答案為C。6、有如下頭文件:intn();staticintf2();classMA{public:intf=;();staticimf4();friendintf1();friendstaticintf2();};在所描述的函數(shù)中,具有隱含的this指針的是()。A、f1B、f2C、f3D、f4標準答案:C知識點解析:類的非靜態(tài)成員函數(shù)都隱含this指針,靜態(tài)成員是類的組成部分,不是任何對象的組成部分,因此靜態(tài)成員函數(shù)沒有this指針,選項D錯誤;友元函數(shù)不屬于成員函數(shù),沒有this指針,選項A、B錯誤;答案為C。7、有如下類定義:classB{private:voidfunl(){}protected:voidfun2(){}public:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是類D的對象,則下列語句中正確的是()。A、obj.fun1();B、obj.fun2();C、obj.fun4();D、obj.fun3();標準答案:D知識點解析:派生類對基類成員的訪問權限由基類成員的訪問標識和類派生列表中的訪問標識共同決定的,類D公有繼承類B,所以類B中成員函數(shù)funl對類D不可見;成員函數(shù)fun2為類D的protected成員;成員函數(shù)fun3為類D的public成員;綜上所述funl,fun2,fun4對類D對象obj均不可見,fun3對obj可見,答案為D。8、下列關于派生類構造函數(shù)和析構函數(shù)的表述中,錯誤的是()。A、在基類中沒有定義構造函數(shù),那么在派生類中也可不定義構造函數(shù);B、派生類的構造函數(shù)會隱含調用基類的構造函數(shù);C、在建立派生類對象時,先調用基類的構造函數(shù),再調用派生類的構造函數(shù);D、在銷毀派生類對象時,先調用基類的析構函數(shù),再調用派生類的析構函數(shù)。標準答案:D知識點解析:派生類對象的撤銷順序與構造順序相反:首先運行派生類析構函數(shù),然后按繼承層次依次向上調用各基類析構函數(shù),這樣做是為了每次析構函數(shù)銷毀的都是完整的對象,選項D錯誤,答案為D。9、下列選項中,與實現(xiàn)運行時多態(tài)性無關的概念是()。A、重載函數(shù)B、虛函數(shù)C、引用D、指針標準答案:A知識點解析:C++中,實現(xiàn)運行時多態(tài)性必須滿足兩個條件:1、被調用的成員函數(shù)為虛函數(shù);2、調用必須通過基類類型的引用或指針。選項B、C、D正確;多態(tài)性是虛函數(shù)在運行時期綁定,而重載的函數(shù)是在編譯期綁定,重載主要是為了C++的代碼復用,與多態(tài)性沒有關系;答案為A。10、有如下類聲明:classFin{public:Fin();//①Fin*pf;//②Finf;//③Fin&p;//④};在標有數(shù)字的四個成員聲明中,將產(chǎn)生編譯錯誤的是()。A、①B、②C、③D、④標準答案:C知識點解析:只有當類定義體完成之后才能定義類,題目中四個聲明語句位置,F(xiàn)in類未定義完整,屬于不完全類型,此時數(shù)據(jù)成員只能是指向該類類型的指針或引用,而不能是該類的對象;語句3會產(chǎn)生編譯錯誤;答案為c。11、下列有關虛函數(shù)的表述中,錯誤的是()。A、在C++中,運行時的多態(tài)性是通過虛函數(shù)體現(xiàn)的B、在類聲明中只有加了保留字virtual的成員函數(shù)才是虛函數(shù)C、通過指針或引用對虛函數(shù)的調用稱為多態(tài)調用D、非多態(tài)調用總是通過成員訪問運算符進行的標準答案:B知識點解析:C++中,觸發(fā)多態(tài)性必須滿足兩個條件:1、被調用函數(shù)為虛函數(shù);2、必須通過基類類型的引用或指針調用函數(shù),選項A、C正確;非多態(tài)調用虛函數(shù)只能通過類對象調用,類對象調用虛函數(shù)使用成員訪問運算符“.”進行,選項D正確;一旦函數(shù)在基類中被聲明為虛函數(shù),那它在后續(xù)的派生類中都是虛函數(shù),可以不使用virtual關鍵字,派生類無法改變該函數(shù)是虛函數(shù)這一事實;選項B錯誤;答案為B。12、有如下類定義:classBasel{intm;public:Base(intm1)_m(m1){}};classBase2{intn;public:Base(imn1):n(n1){}};classDerived:publicBase2,publicBasel{intq;public:Derived(intm1,intn1,intq1):q(q1),Basel(m1),Base2(n1){};};在創(chuàng)建一個Derived對象時,數(shù)據(jù)成員lIl、rl和q被初始化的順序是()。A、m、n、qB、n、m、qC、q、m、nD、q、n、m標準答案:B知識點解析:C++中,派生類構造函數(shù)都是先調用基類構造函數(shù),再根據(jù)聲明次序定義數(shù)據(jù)成員,所以Derired構造函數(shù)的初始化列表中,最后初始化q;另外對于多繼承,派生類的構造函數(shù)初始化列表中,基類構造函數(shù)是按照基類在派生類的派生列表中出現(xiàn)的次序調用的;由于Derived類的派生列表中,Base2存前,所以應該先調用Base2的構造函數(shù);這樣Derived類中初始化順序為:基類Base2、基類Basel、數(shù)據(jù)成員q;所以數(shù)據(jù)成員m、n、q的初始化順序為:n、m、q,答案為B。13、有如下類聲明:classMau{intk;constintm;public:Mau(intk1,intm1);};則構造函數(shù)Mau的下列定義中,有編譯錯誤的是()。A、Mau::Mau(intk1,intm1):k(k1){m=m1;}B、Mau::Mau(intk1,intm1):m(m1){k=k1;}C、Mau::Mau(intk1,intm1):k(k1),m(m1){}D、Mau::Mau(intk1,intm1):m(m1),k(k1){}標準答案:A知識點解析:C++中,常數(shù)據(jù)成員必須在構造函數(shù)的初始化列表中完成初始化,答案為A。14、有如下類定義:classPa{intk;public:Pa():k(0){//①Pa(intn):k(11){}//②Pa(Pa&p):k(p.k){}//③};若執(zhí)行語句Paa[]={Pa(1),Pa(2)};則在標有號碼的構造函數(shù)中,被調用的包括()。A、①B、①和②C、②D、②和③標準答案:C知識點解析:對象數(shù)組,就是數(shù)組元素是類對象,不管對象數(shù)組在哪里定義,如果沒有顯式的調用構造函數(shù)初始化,編譯器將使用類的默認構造函數(shù)初始化對象元素,這里程序中顯式的使用構造函數(shù)Pa(intn)初始化各個元素,所以被調用的構造函數(shù)只有Pa(intn),沒有調用默認構造函數(shù)和復制構造函數(shù),答案為C。15、有如下程序:#includeusingnamespaeestd;classAA{public:AA(){eout<<"A";}~AA(){tout<<"~A";}};classBB{public:BB(){eout<<"B";}~BB(){tout<<"~B";}f;intmain(){AA*pa=newAA:BBb;deletepa;return0;}運行這個程序的輸出是()。A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A標準答案:A知識點解析:main()函數(shù)中首先動態(tài)創(chuàng)建AA類對象,調用AA類構造函數(shù),輸出“A”,創(chuàng)建BB類對象,調用BB類構造函數(shù),輸出“B”,使用delete顯式銷毀AA類對象,調用AA類析構函數(shù),輸出“~A”,程序結束時,銷毀BB類對象,編譯器自動調用BB類析構函數(shù),輸出“~B”,整個程序輸出結果為:“AB~A~B”,答案為A。16、有如下程序:#includeusingnamespaeestd;classShape{//圖形類public://圖形繪制函數(shù)(用顯示字母模擬)virtualvoiddraw()eonst{tout<<’S’;}};elassTriangle:publicShape{//三角形類public:voiddraw()eonst{eout<<’T’;}};voidplot(Shape*s){s->draw();}intmain(){Shapes;Trianglet;plot(&s);plot(&t);s=t:s.draw();return0;}運行這個程序的輸出是()。A、STTB、STSC、TSSD、TTT標準答案:B知識點解析:main函數(shù)中,plot函數(shù)的參數(shù)通過Shape對象引用和Triangle對象引用來調用虛函數(shù)draw(),由于形參s是基類引用,所以符合多態(tài)性調用,程序將在運行時期根據(jù)s引用對象的類型決定調用哪個draw(),這里實參s是Shape類類型,因而調用Shape類的draw()函數(shù),實參t是Triangle類類型,因而調用Triangle類的draw()函數(shù),輸出:“ST”;程序接著將派生類對象t賦給s,由于基類Shape沒有顯式的定義賦值運算符和將派生類對象作為參數(shù)的基類構造函數(shù),因而編譯器自動產(chǎn)生基類Shape的賦值運算符operator=(Shape&a),語句s=t將調用賦值運算符,a引用派生類對象t,完成賦值,此時s包含t中基類的副本,而t中剩下部分將被忽略,語句s.draw()將調用Shape類中的draw()函數(shù),輸出“s”,程序輸出結果為“STS”。答案為B。17、有如下的類聲明:#includeusingnamespacestd;classAA{public:virtualvoiddisp(){eout<<’A’;}};classBB:publicAA{public:voiddisp(){eout<<’B’;}};classCC:publicBB{public:virtualvoiddisp(){eout<<’C’;}};voidplot(AAa){a.disp();}intmltinf){BBbb;CCCC;BB&rb=CC:plot(bb);CC.disp();rb.disp();return0;}運行這個程序的輸出是()。A、ACCB、ACBC、BCCD、BCB標準答案:A知識點解析:程序定義了類AA,成員函數(shù)disp是虛函數(shù);類BB公有繼承AA,重新定義了函數(shù)disp,由虛函數(shù)的性質可知,即使BB中未使用virtual修飾disp,函數(shù)disp仍然是虛函數(shù);類CC公有繼承了BB,同樣重新定義了虛函數(shù)disp;main函數(shù)中定義了BB類對象bb,CC類對象cc,BB類引用rb,rb被初始化指向cc;然后調用plot函數(shù),由于plot函數(shù)的形參是AA類對象a,不滿足多態(tài)性中調用者必須要是引用或者指針類型的條件,所以無論實參是bb或cc,a.disp()調用的都是AA類中的函數(shù)disp,輸出“A”;cc.disp()顯然調用的是類cc中的函數(shù),輸出“c”;rb.disp(),由于rb是引用,指向的是類CC對象cc,所以這里由多態(tài)性司知調用的是cC類中的disp函數(shù),輸出“CC”;程序輸出結果為:“ACC”;答案為A。18、若目前E盤根目錄下不存在data.txt文件,則下列打開文件方式不會自動創(chuàng)建data.txt文件的是()。A、ifstreamfin;fin.open("e:\data.txt",ios_base::in);B、fstreamrio;rio.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);標準答案:A知識點解析:定義文件流對文件進行操作時,需要指定文件模式,選項B、c中,ios_base::out是打開文件進行寫操作,刪除文件所有數(shù)據(jù),如果文件不存在則創(chuàng)建它,不符合題意;選項D中,ios_base::app是扣開文件進行寫操作,在文件尾部追加數(shù)據(jù),由于文件與ofstream流關聯(lián),當文件不存在時創(chuàng)建文件,也不符合題意,選項A正確,ios_base::in是打開文件做讀操作,文件不存在時打開文件失敗。答案為A。19、要利用C++流進行文件操作,必須在程序中包含的頭文件是()。A、iomanipB、fstreamC、strstreamD、cstdlib標準答案:B知識點解析:iomanip是I/O流控制頭文件;strstream是輸入輸出字符串流頭文件;cstdlib是常用函數(shù)庫,提供一些函數(shù)和符號常量;選項A、C、D錯誤;fstream是輸入輸出文件流頭文件,答案為B。20、下列關于重載運算符錯誤的是A、運算符::不能被重載B、重載類型轉換運算符不需要聲明返回值C、-既可以作為一元運算符,又可以作為二元運算符被重載D、運算符[]不能被重載標準答案:A知識點解析:本題考查運算符重載,重載不能改變運算符運算對象的個數(shù);不能改變運算符的優(yōu)先級別;不能改變運算符的結合性;重載運算符的函數(shù)不能有默認值,否則就改變了運算符參數(shù)的個數(shù);不能定義新的運算符,不能重載的運算符只有5個:.、.*、::、sizeof、?:。所以本題選擇D。21、下列關于對象初始化的敘述中,正確的是A、定義對象的時候不能對對象進行初始化B、定義對象之后可以顯式地調用構造函數(shù)進行初始化C、定義對象時將自動調用構造函數(shù)進行初始化D、在一個類中必須顯式地定義構造函數(shù)實現(xiàn)初始化標準答案:B知識點解析:本題考查對象的定義和對象的初始化,定義對象時,自動調用構造函數(shù),不需要顯示調用,所以C選項正確。22、若MyClass為一個類,執(zhí)行語句"MyClassa[4],*p[5];"時會自動調用該類構造函數(shù)的次數(shù)是A、2B、4C、5D、9標準答案:A知識點解析:本題考查默認構造函數(shù),題中定義了包含4個元素的一維對象數(shù)組,而指針數(shù)組不占用空間,所以不調用構造函數(shù),那么構造函數(shù)就執(zhí)行4次,答案為B。23、下列關于運算符重載的描述中,錯誤的是A、通過運算符重載不可能在C++中創(chuàng)建新的運算符B、賦值運算符可以重載為友元函數(shù)C、運算符函數(shù)重載為類的成員函數(shù)時,第一操作數(shù)不出現(xiàn)在參數(shù)表中D、重載類型轉換運算符時不需要聲明返回類型標準答案:A知識點解析:本題考查運算符重載,重載運算符不能定義新的運算符,C++規(guī)定=,[],(),->這四個運算符只能被重載為類的非靜態(tài)成員函數(shù),其他的可以被友元重載,主要是因為其他的運算符重載函數(shù)都會根據(jù)參數(shù)類型或數(shù)目進行精確匹配,這四個不具有這種檢查的功能,用友元定義就會出錯,所以本題選擇B。24、下列有關類繼承的表述中,錯誤的是A、繼承可以實現(xiàn)軟件復用B、派生類構造函數(shù)要負責調用基類的構造函數(shù)C、虛基類可以解決由多繼承產(chǎn)生的二義性問題D、派生類沒有繼承基類的私有成員標準答案:D知識點解析:軟件方面的可重用性是通過繼承來實現(xiàn)的,A選項正確。派生類的構造函數(shù)負責調用基類的構造函數(shù),B選項正確。虛基類解決了由多繼承產(chǎn)生的二義性問題,所以C選項正確。派生類可以繼承基類的私有成員,但是不能直接訪問,所以D選項錯誤。25、在下列關鍵字中,不能用來表示繼承方式的是A、privateB、publicC、staticD、protected標準答案:C知識點解析:本題考查派生類定義時使用的關鍵字,三種繼承方式分別為private、public、protected,而C選項為靜態(tài)聲明關鍵字,故選擇C。26、有如下兩個類定義:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在類YY中保護成員變量的個數(shù)是A、1B、2C、3D、4標準答案:A知識點解析:本題考查派生類對基類成員的訪問屬性,派生類保護繼承基類,那么基類的公用成員和保護成員在派生類中成為保護成員,所以派生類YY總共有3個保護成員,C選項正確。27、有如下類定義:classCup{public:voidSetPrice(doubleval=5.8);doubleGetPrice(){returnprice;}doubleGetPrice()const{returnprice;}private:doubleprice;};voidCup::SetPrice(doubleval){price=val;}下列關于類中成員函數(shù)的敘述中,錯誤的是A、成員函數(shù)SetPrice不是內聯(lián)函數(shù)B、成員函數(shù)SetPrice的形參val具有默認值C、成員函數(shù)GetPrice可以重載D、類中沒有對成員函數(shù)GetPrice進行重載標準答案:D知識點解析:在類體中定義的成員函數(shù),C++系統(tǒng)會自動將它們作為內聯(lián)函數(shù)處理,而在類外定義的成員函數(shù),系統(tǒng)并不把它們默認為內聯(lián)函數(shù),所以SetPrice不是內聯(lián)函數(shù),SetPrice的形參val具有默認值5.8,類體中有兩個GetPrice,所以這是對GetPrice函數(shù)進行了重載,D選項錯誤。28、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}TV(constTV&r):size(r.size){}~TV(){}private:intsize;};TVfun(TV&u){TVt=u;returnt;}intmain(){TVx,y;x=fun(y);return0;}則TV類的復制構造函數(shù)被調用的次數(shù)是A、1次B、2次C、3次D、4次標準答案:B知識點解析:拷貝構造函數(shù),是一種特殊的構造函數(shù),它由編譯器調用來完成一些基于同一類的其他對象的構建及初始化??截悩嬙旌瘮?shù)要調用基類的拷貝構造函數(shù)和成員函數(shù)。本題中調用fun函數(shù)時調用了一次復制構造函數(shù),函數(shù)返回執(zhí)行x=fun(y)時又調用了一次復制構造函數(shù),所以總共2次。B選項正確。29、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr="ABC"):brand(br){cout<A、MyBagarrays[2];B、MyBag*array[2]=newMyBag[2];C、MyBag*array[2]={MyBag("ABC"),MyBag("ABC")};D、MyBagarray[2]={newMyBag("ABC"),newMyBag("ABC")};標準答案:C知識點解析:本題考查構造函數(shù)的應用,題目中要求輸出"ABCABC",那么就需要執(zhí)行兩次構造函數(shù),只有A選擇可以執(zhí)行兩次構造函數(shù),所以A選項正確。30、有如下程序:#include#includeusingnamespacestd;classWheel{public:Wheel(strings="W"):name(s){cout<A、GB、RGC、WRGD、RWG標準答案:A知識點解析:定義Bicyclebike時,執(zhí)行Wheel的構造函數(shù)輸出W,然后執(zhí)行Bicycle的構造函數(shù)輸出RG,最終輸出WRG,選項C正確。31、有如下類定義:classFather{//基類public:Father(strings):name(s){}private:stringname;};classMother{//基類public:Mother(strings):name(s){}private:stringname;};___________________________{//Father和Mother的派生類public:Child(strings1,strings2,strings3):Father(s1),Mother(s2),name(s3){}private:stringname;};若派生類Child從基類Father和基類Mother處公有繼承,則橫線處缺失的部分是A、classChildB、classChild:Father,MotherC、classChild:publicFather,MotherD、classChild:publicFather,publicMother標準答案:B知識點解析:一個派生類同時繼承兩個或者多個基類時稱為多重繼承,其一般形式為:class派生類名:[繼承方式]基類名1,[繼承方式]基類名2,所以D選項正確。32、有如下類定義:classPoint{public:voidSetX(intxx){x=xx;}protected:voidSetY(intyy){y=yy;}private:intx,y;};classCircle:Point{public:intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}intradius;};派生類Circle中不可訪問成員的個數(shù)為A、2B、3C、4D、6標準答案:C知識點解析:本題考查派生類對基類成員的訪問屬性,派生類無論何種繼承,派生類的成員函數(shù)都不能訪問基類的私有成員,所以Circle不可訪問的個數(shù)有2個,A選項正確。33、有如下程序:#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標準答案:B知識點解析:本題考查虛函數(shù)的運用,本題中定義Dogd;Type(d)時,執(zhí)行類class的Type函數(shù),輸出Dog,然后輸出speak,然后執(zhí)行基類的Speak函數(shù)輸出Voice,最后輸出-,同理cat輸出類似,所以結果為A選項正確。34、下列關于模板的表述中,正確的是A、如果一個類中存在純虛函數(shù),這個類就是類模板B、函數(shù)模板不能有形式參數(shù)表C、類模板是一種參數(shù)化類型的類,是類的生成器D、類模板中不能包含構造函數(shù)標準答案:B知識點解析:本題考查模板相關知識,一個類中存在純虛函數(shù),這個類不一定就是類模板。函數(shù)模板需要形式參數(shù)表,類模板中可以包含構造函數(shù)。所以C選項正確。35、有函數(shù)模板聲明和一些變量定義如下:templateT1sum(T2,T3);doubled1,d2;則下列調用中,錯誤的是A、sum(d1,d2);B、sum(d1,d2);C、sum(d1,d2);D、sum(d1,d2);標準答案:D知識點解析:本題考查函數(shù)模板的定義和使用,編譯器無法推演出T1的類型,D選項里沒有寫明T1的類型,而sum函數(shù)需要T1的類型去特化出一個函數(shù)能夠處理d1和d2這兩個參數(shù)的函數(shù)。其他的都可以。36、關于C++流,下面的表述中正確的是A、利用C++流能夠借助于流對象進行輸入輸出B、利用C++流只能進行格式化輸入輸出C、利用C++流只能借助于cin和cout進行輸入輸出D、利用C++流只能使用運算符>>和<<進行輸入輸出標準答案:B知識點解析:輸入輸出流出了cin和cout還有cerr、clog等,所以CD選項錯誤,C++流不只是進行格式化輸入輸出,所以B選項錯誤,A選項正確。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、下列關于棧和隊列的描述中,正確的是()。A、棧是先進先出B、隊列是先進后出C、隊列允許在隊頭刪除元素D、棧在棧頂刪除元素標準答案:D知識點解析:棧實際也是線性表,只不過是一種特殊的線性表。棧是只能在表的一端進行插入和刪除運算的線性表,通常稱插入、刪除的這一端為棧頂,另一端為棧底。隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。2、已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()。A、ABCDEB、ECABDC、EACDBD、CDEAB標準答案:C知識點解析:由于后序遍歷的最后一個元素為E,所以E為根結點,所以它的前序遍歷的首個元素為E,故排除A)和D)選項。由于中序遍歷中,元素B在元素根結點E的后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個元素,所以前序遍歷的最后一個元素應為B,故選項C)為正確選項,即該二叉樹的前序遍歷序列是EACDB。3、在數(shù)據(jù)流圖中,帶有箭頭的線段表示的是()。A、控制流B、數(shù)據(jù)流C、模塊調用D、事件驅動標準答案:B知識點解析:數(shù)據(jù)流圖中帶箭頭的線段表示數(shù)據(jù)流,沿箭頭方向傳遞數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。4、結構化程序設計的3種結構是()。A、順序結構,分支結構,跳轉結構B、順序結構,選擇結構,循環(huán)結構C、分支結構,選擇結構,循環(huán)結構D、分支結構,跳轉結構,循環(huán)結構標準答案:B知識點解析:程序設計語言僅僅使用順序、選擇和重復(循環(huán))三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。遵循程序結構化的設計原則,按結構化程序設計方法設計出的程序易于理解、使用和維護;可以提高編程工作的效率,降低軟件的開發(fā)成本。5、下列方法中,不屬于軟件調試方法的是()。A、回溯法B、強行排錯法C、集成測試法D、原因排除法標準答案:C知識點解析:軟件調試主要采用以下三種方法:強行排錯法:作為傳統(tǒng)的調試方法,其過程可概括為設置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序?;厮莘ǎ涸摲椒ㄟm合于小規(guī)模程序的排錯、即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。原因排除法:原因排除法是通過演繹和歸納,以及二分法來實現(xiàn)。6、下列選項中,不屬于模塊間耦合的是()。A、內容耦合B、異構耦合C、控制耦合D、數(shù)據(jù)耦合標準答案:B知識點解析:耦合可以分為下列幾種,它們之間的耦合度由高到低排列:內容耦合——若一個模塊直接訪問另一模塊的內容,則這兩個模塊稱為內容耦合。公共耦合——若一組模塊都訪問同一全局數(shù)據(jù)結構,則稱為公共耦合。外部耦合——若一組模塊都訪問同一全局數(shù)據(jù)項,則稱為外部耦合??刂岂詈稀粢荒K明顯地把開關量、名字等信息送入另一模塊,控制另一模塊的功能,則稱為控制耦合。標記耦合——若兩個以上的模塊都需要其余某一數(shù)據(jù)結構的子結構時,不使用其余全局變量的方式而全使用記錄傳遞的方式,這樣的耦合稱為標記耦合。數(shù)據(jù)耦合——若一個模塊訪問另一個模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),則這兩個模塊為數(shù)據(jù)耦合。非直接耦合——若兩個模塊沒有直接關系,它們之間的聯(lián)系完全是通過程序的控制和調用來實現(xiàn)的,則稱這兩個模塊為非直接耦合,這樣的耦合獨立性最強。7、下列特征中不是面向對象方法的主要特征的是()。A、多態(tài)性B、標識惟一性C、封裝性D、耦合性標準答案:D知識點解析:面向對象設計方法與面向過程設計方法有本質的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:標識惟一性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性好。8、在數(shù)據(jù)庫設計中,將.E-R圖轉換成關系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設計階段C、邏輯設計階段D、物理設計階段標準答案:C知識點解析:邏輯結構設計的任務:概念結構是各種數(shù)據(jù)模型的共同基礎,為了能夠用某一DBMS實現(xiàn)用戶需求,還必須將概念結構進一步轉化為相應的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結構設計所要完成的任務。它包括從E.R圖向關系模式轉換和邏輯模式規(guī)范化及調整、實現(xiàn)。9、在一棵二叉樹上,第5層的結點數(shù)最多是()。A、8B、9C、15D、16標準答案:D知識點解析:根據(jù)二叉樹的性質:二叉樹第i(i>1)層上至多有2i-1</sup>個結點。得到第5層的結點數(shù)最多是16個。10、下列有關數(shù)據(jù)庫的描述,正確的是()。A、數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)共享的問題C、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致標準答案:B知識點解析:數(shù)據(jù)庫設計的目的實質上是設計出滿足實際應用需求的實際關系模型。數(shù)據(jù)庫技術的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應用程序的獨立性,從而減少應用程序的開發(fā)和維護代價。11、以下程序的輸出結果是()。#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2),i,j,t=,1;for(i=0;i<3;i++)for([i=i;<=i;j++)t=c+1b[i][b[j][j]];cout<A、2B、3C、4D、5標準答案:C知識點解析:程序中通過for二重循環(huán)依次取二維數(shù)組中的數(shù)值進行與t的累加。取數(shù)組中的元素為i行和符合循環(huán)條件的b[i][j]列的數(shù)據(jù)。循環(huán)為0,1,2行,對應0,1,2列。即0,1,2。所以1+0+1+24。12、當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。這種情況稱為()。A、下溢B、上溢C、異常D、溢出標準答案:B知識點解析:由于頭尾指針不斷前移,超出向量空間。這時整個向量空間及隊列是滿的卻產(chǎn)生了“上溢"現(xiàn)象。13、以下程序的輸出的結果是()。#includevoidmain(){inti,k,a.[10],p[3];k=5;for(i=0;i<9;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;cout<A、20B、21C、22D、23標準答案:B知識點解析:程序中首先在第一個for循環(huán)中將數(shù)組a每一個元素賦值為0,1,2,……。然后在第二個循環(huán)中數(shù)組p的第i元素為a中的第i*(i+1),即0,2,6,第三個循環(huán)中數(shù)組p中的每個元素值乘以2,然后加上5,累加。14、以下程序的執(zhí)行結果是()。#includeintfun(intb[],intn){inti,r=1;for(i=0;iA、5B、6C、7D、8標準答案:B知識點解析:由程序的main函數(shù)入手,調用fun函數(shù),其中參數(shù)為數(shù)組a和3。fun函數(shù)的功能是for循環(huán)中由第一個數(shù)組元素開始到第三個元素進行累積。15、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;cout<<"Thevalueatp:"<<*p;return0:}編譯運行程序將出現(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:題目程序中“int*p;”是定義了一個指針變量p,“*p=9;”是將p當前指向的指針賦為9。指針p在執(zhí)行這個賦值操作前并沒有初始化這個變量p,所以會有p未初始化的警告錯誤。16、下列有關指針的用法中,錯誤的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*p;p=&i;標準答案:B知識點解析:‘‘inti:,,語句為定義了一個整型變量i。“int*p”為定義一個整型指針p。選項A)中的“int*p=&i;”是定義整型指針變量p,并指向整型i的地址。選項B)中“i=*p”語句是將p指向的變量賦值給i,而指針p沒有初始化,所以選項B)錯誤。選項C)中“p=0;”表示p指向0的地址。選項D)中“&i”為取i的地址,并賦值給p。17、如果有以下定義及初始化:inta=3,*p=&a;則由此可以推斷,*p的值是()。A、變量a的值,即3B、變量a的地址值C、變量P的地址值D、無意義標準答案:A知識點解析:題目中的定義初始化是定義一個整型變量a,初始化為3。而“int*p=&a;”是定義一個整型指針變量p,將變量a的地址作為指針變量p的初值。*p是指針變量p指向的存儲單元的內容,即變量值。所以*p指向a的值3。18、執(zhí)行語句序列intx=1,&y=x;cout<A、x—xB、1—1C、1一0D、異常標準答案:B知識點解析:程序中的“intx=1”定義x為int型變量,并賦值為1。語句“&y=x”中“&”為引用運算符,&y=x語句可以理解為y具有x的地址,所以y的值也是1,即輸出為:1-1。19、下列程序輸出的結果是()。#includefunl(chara,charb){charc;c=a;a=b;b=c;}fun2(char*a,charb){charc;c=*a;*a=b;b=c;}fun3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a=’A’;b=’B’;fun1(a,b);putchar(a);putchar(b);a=’A’;b=’B’;fun2(&a,b);putchar(a);putchar(b);a=’A’;b=’B’;fun3(&a,&b);putchar(a);putchar(b);putchar(’\n’);}A、BABBABB、ABBBBAC、ABBABAD、ABABBA標準答案:B知識點解析:由程序中的主函數(shù)main入手,分別調用fun1,fun2,fun3函數(shù),得到輸出結果。其中,三個函數(shù)都是實現(xiàn)兩個形參的交換功能,只是參數(shù)傳遞的方式不同,有的是地址,有的是傳值。第一個函數(shù)中參數(shù)采用的是值傳遞的方式,形參的變化不影響實參。所以調用fun1后,實參a和b并沒有交換,仍然是AB。第二個調用中,實參a采用的是地址,即傳遞的是地址,所以形參a的改變會影響實參a的值,即:BB。同理,調用fun3后為BA。20、下列程序將x、y和z按從小到大的順序排列,橫線處應添加語句()。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標準答案:C知識點解析:函數(shù)fun的類型為void沒有任何返回值,函數(shù)中變量的改變,即參數(shù)的改變應該影響實參。應該是地址傳遞方式,即把引用型作為函數(shù)形參。類T是類的抽象,可以利用模板建立各種數(shù)據(jù)類型的類。所以補全函數(shù)的定義為“T&x,T&y,T&z”。21、下面c++標識符中正確的是()。A、abeB、3abC、intD、+ab標準答案:A知識點解析:C++標識符命名的規(guī)則:只能由’a’-’z’、’A’-’Z’、’0’-’9’、’_’等字符組成,且數(shù)字不能開頭,不能與系統(tǒng)保留字沖突。22、下列哪項不是面向對象程序設計的主要特征()。A、封裝B、繼承C、多態(tài)D、結構標準答案:D知識點解析:面向對象程序設計的特點:標識惟一性,分類性,多態(tài)性,封裝性,模塊獨立性好。23、已知i=5,j=0,下列各式中運算結果為j=6的表達式是()。A、j=i+(++j)B、j=j+i++C、j=++i+jD、j=j+++i標準答案:C知識點解析:++在變量前面先執(zhí)行自身加1的運算,然后再進行其他運算。++在變量后面先做其他運算,再自身加1。選項D)的運算式是(j++)+i,因為++的優(yōu)先級比+高。24、若整型變量a、b、C、d中的值依次為:1、4、3、2。則條件表達式aA、1B、2C、3D、4標準答案:A知識點解析:酉先把c25、以下程序的輸出的結果是()。#includevoidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10:a*=2;b/=2;c%=2;cout<A、20,5,0B、20,7,0C、20,5,1D、5,20,0標準答案:A知識點解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0.所以輸出值20,5,0。26、以下程序的執(zhí)行結果是()。#includeclassTestClass2{public:TestClass2(){);TestClass2(inti,intj);voidprintb();private:inta,b;};classTestClass1{public:TestClass1(){}TestClass1(inti,intj);voidprinta();pfivate:TestClass2c;};TestClass1::TestClass1(inti,intj):c(i,j){}voidTestClass1::printa(){c.printb();}TestClass2::TestClass2(inti,intj){a=i;b=j;}voidTestClass2::printb(){cout<<"a="<A、a=7,b=8B、a=8,b=7C、a=7,b=9D、a=8,b=9標準答案:C知識點解析:由主函數(shù)main入手,定義了TestClass1的對象m,其中參數(shù)為7和9?!癿.printa();”中TestClass1中printa為“c.printb(),其中c為TestClass2的對象,所以printb為TestClass2中的“voidTestClass2::printb()”,即輸出為“a=7,b=9”。27、以下程序的輸出的結果是()。#includeintx=3;voidmain(){voidfun();inti;for(i=1;iA、3,3B、2,2C、2,6D、2,5標準答案:C知識點解析:由主函數(shù)入手,在for循環(huán)中調用fun函數(shù),其中調用次數(shù)為2次。fun中x為靜態(tài)變量,有效到文件結束,所以第一次調用為x=x*(x+1)=1*(1+1)=2,第二次調用2*(2+1)=6。28、閱讀下面程序:#includefun(inta,intb){intc;c=a+b:retumC;}voidmain(){intx=6,y:7,z=8,r;r=fun((x--,y++,x+y),z--);cout<A、11B、20C、21D、31標準答案:C知識點解析:由主函數(shù)入手,定義變量x、y、z,然后調用函數(shù)fun,其中的參數(shù)為(x-,y++,x+y)的計算結果和z-的計算結果,所以調用fun(13,8)計算結果為21。29、對虛函數(shù)的調用()。A、一定使用動態(tài)聯(lián)編B、必須使用動態(tài)聯(lián)編C、一定使用靜態(tài)聯(lián)編D、不一定使用動態(tài)聯(lián)編標準答案:D知識點解析:虛函數(shù)在運行階段和類的對象綁定在一起,這樣成為動態(tài)聯(lián)編。虛函數(shù)聲明只能出現(xiàn)在類聲明中虛函數(shù)原型中,而不能在成員的函數(shù)體實現(xiàn)的時候。必須由成員函數(shù)來調用或者通過指針、引用來訪問虛函數(shù)。如果通過對象名來訪問虛函數(shù),則聯(lián)編在編譯過程中認為是靜態(tài)聯(lián)編。30、下列函數(shù)的運行結果是()。#includeintadd(inta,intb);voidmain(){extemintx,y;cout<A、25B、30C、20D、15標準答案:A知識點解析:由主函數(shù)main入手,定義外部變量x和y,調用函數(shù)add。因為x,y為外部變量,所以“intx(20),y(5);”的賦值在add也是有效的,即add函數(shù)的運算結果為25。31、下面程序的輸出結果為()。#includeclassTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0:voidmain(){TestClasscsl;cout<A、03B、13C、14D、24標準答案:C知識點解析:由主函數(shù)main入手,定義TestClass類的對象cs1,執(zhí)行cs1.val,其中val為靜態(tài)變量,根據(jù)“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;}構造函數(shù)執(zhí)行后,val值為1。主函數(shù)中接著定義對象cs2,cs3,cs4。執(zhí)行“cout<32、下面程序的運行結果是()。

溫馨提示

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

評論

0/150

提交評論