全國計算機二級C考題真題及答案_第1頁
全國計算機二級C考題真題及答案_第2頁
全國計算機二級C考題真題及答案_第3頁
全國計算機二級C考題真題及答案_第4頁
免費預覽已結(jié)束,剩余149頁可下載查看

下載本文檔

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

文檔簡介

2006年9月考試真題(第24次).從工程管理角度,軟件設計一般分為兩步完成,它們是.A、概要設計與詳細設計B、過程控制C、軟件結(jié)構(gòu)設計與數(shù)據(jù)設計D、程序設計與數(shù)據(jù)設計從工程管理角度看,軟件設計分為兩步完成:概要設計與詳細設計。概要設計(又稱結(jié)構(gòu)設計)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;詳細設計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適當方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。故本題答案為A。.數(shù)據(jù)庫技術(shù)的根本目標是解決數(shù)據(jù)的 」A、存儲問題B、共享問題C、安全問題D、保護問題由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應用所共享,特別是在網(wǎng)絡發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡的結(jié)合擴大了數(shù)據(jù)關(guān)系的應用范圍。數(shù)據(jù)的共享本身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。因此,數(shù)據(jù)庫設計的根本目標是要解決數(shù)據(jù)共享問題。故本題答案為B。.在數(shù)據(jù)庫系統(tǒng)中,用戶所見數(shù)據(jù)模式為.A、概念模式B、外模式C、內(nèi)模式D、物理模式數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。外模式又稱為子模式,或用戶模式,是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式又稱為邏輯模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和.外模式是模式的一部分。內(nèi)模式又稱為存儲模式或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。故本題答案為B..在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為 .A、63B、64C,6D、7在進行順序查找過程中,如果線性表中的第1個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高:但如果被杳找的元素是線性表中的最后一個元素,或者被杳找的元素根本就不在線性表中,則為了杳找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。 故本題答案為B。.對下列二叉樹進行中序遍歷的結(jié)果是.A、ACBDFEGB、ACBDFGEC、ABDCGEFD,FCADBEG二叉樹的中序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。故本題答案為A。.下列選項中不屬于軟件生命周期開發(fā)階段任務的是.A,軟件測試B、概要設計 C、軟件維護D、詳細設計軟件生命周期分為軟件定義、軟件開發(fā)及軟件維護。其中軟件開發(fā)階段的任務中軟件設計階段可分解成概要設計階段和詳細設計階段;軟件維護不屬于軟件開發(fā)階段。 故本題答案為C。.下列敘述中正確的是。A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、上述三種說法都不對算法的復雜度主要包括時間復雜度和空間復雜度:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度;算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,即算法執(zhí)行過程中所需要的基本運算次數(shù),為了能夠比較客觀地反映出一個算法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關(guān),而且還應該與算法實現(xiàn)過程中的許多細節(jié)無關(guān)。為此,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。 故本題答案為D。.下列選項中不符合良好程序設計風格的是.A、源程序要文檔化B、數(shù)據(jù)說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設計要保證高耦合、高內(nèi)聚良好的程序設計風格可以使程序結(jié)構(gòu)清晰合理,使程序代碼便于維護,因此,程序設計風格對保證程序的質(zhì)量很重要。主要應注意和考慮下述一些因素:1、源程序要文檔化;2、數(shù)據(jù)說明的次序要規(guī)范化;3、語句的結(jié)構(gòu)應該簡單直接,不應該為提高效率而把語句復雜化,避免濫用got。語句。模塊設計要保證低耦合、高內(nèi)聚。 故本題答案為D。.設有如下三個關(guān)系表從圖中可以看出,關(guān)系T是關(guān)系R和關(guān)系S的簡單擴充,而擴充的符號為X,所以答案為T=RXS。故本題答案為C。.數(shù)據(jù)庫設計的四個階段是:需求分析、概念設計、邏輯設計和一。A,編碼設計 B、測試階段C,運行階段D、物理設計數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數(shù)據(jù)庫運行和維護階段。 故本題答案為D。.下列運算符不能重載為友元函數(shù)的是.A,=()[]->B、+-++—C,><>=<=D、+=-=*=/=本題考查的是運算符的重載。在C++中,可以通過兩種方式對運算符進行重載。一種是類成員函數(shù)的方式、一種是友元函數(shù)的方式。=0口-〉以及所有的類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載,不能重載為友元函數(shù)。 故本題答案為A。.語句ofstreamf("SALARY.DAT",ios_base::app);的功能是建立流對象f,并試圖打開文件SALARY.DAT與f關(guān)聯(lián),而且.A、若文件存在,將其置為空文件;若文件不存在,打開失敗B,若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D,若文件存在,打開失?。喝粑募淮嬖?,建立一個新文件本題考查的是文件流的輸出。ofstreamf("SALARY.DAT*,ios_base::app);是以iosbase::app方式打開文件,若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件。 故本題答案為B..有如下程序#include<iostream>usingnamespacestd;classA{public:virtualvoidfunclO{cout?"Al";} voidfunc2(){cout?"A2":});classB:publicA{public: voidfund(){cout?"Bl";}voidfunc2(){cout?"B2";});intmain(){A*p=newB; p->funcl(); p->func2();return0;}運行此程序,屏幕上將顯示輸出.A、B1B2B、A1A2C、B1A2D,A1B2本題考查的是派生類。派生類B由基類A公有繼承而來。調(diào)用p->funcl();后,執(zhí)行派生類B的函數(shù)voidfunclO;調(diào)用p->func2();后,執(zhí)行基類的函數(shù)voidfunc2(),因為虛擬函數(shù)是根據(jù)對象的實際類型調(diào)用,非虛擬函數(shù)是根據(jù)指針類型調(diào)用。故通過指針p調(diào)用func2時將直接調(diào)用基類中的voidfunc2(). 故本題答案為C。.if語句的語法格式可描述為:格式1:if(〈條件〉)〈語句〉或 格式2:if《條件》)〈語句Delse〈語句2>關(guān)于上面的語法格式,下列表述中錯誤的是.A、〈條件>部分可以是一個if語句,例如if(if(a==0)…)???B、〈語句〉部分可以是一個if語句,例如if(…)if(-)…C、如果在〈條件>前加上邏輯非運算符!并交換<語句1>和〈語句2>的位置,語句功能不變D,〈語句〉部分可以是一個循環(huán)語句,例如if(…)while(…)…本題考杳的是if語句。if為關(guān)鍵字,〈條件》通常是一個表達式;if子句和else子句可以是任何類型的語句,當然也可以是if…else語句本身和while語句。if…else語句的基本執(zhí)行過程是:首先計算〈條件〉的值,如果此值不為0("真”),則執(zhí)行〈語句1>,然后忽略《語句2》,而去執(zhí)行if語句之后的下一條語句;如果此值為0("假”),則執(zhí)行〈語句2>,然后忽略〈語句1>,然后繼續(xù)執(zhí)行if語句之后的下一條語句。 故本題答案為A。.下列語句中,錯誤的是.A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D>double*constpoint;本題考查的是符號常量定義。constintbuffer=256;〃聲明常量bufferconstdouble*point; 〃聲明常量指針*poinl,*point不可變,但point的值可以改變intconstbuffer=256;〃聲明常量bufferdouble*constpoint; 〃聲明的point是常量,*point可變,但point的值不可以改變,point不是外部的,必須在聲明初始化常量對象??筛臑椋篸oubleaa=123.45;double*constpoint=&aa;故本題答案為D。.關(guān)于運算符重載,下列表述中正確的是oA、C++已有的任何運算符都可以重載 B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符本題考查的是運算符重載。運算符重:載是針對C++中原有的運算符進行的,不可能通過重載創(chuàng)造出新的運算符,故選項D錯誤。除了.、.*、->*、::、?:這5個運算符外,其它運算符都可以重載,故選項A錯誤。運算符函數(shù)的返回類型可以聲明為基本數(shù)據(jù)類型,故選項B錯誤。在重載類型轉(zhuǎn)換符時,由于運算符本身已經(jīng)表示出返回值類型,因此不需要返回值類型的聲明。 故本題答案為C。.關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列敘述正確的是。A、對于虛擬類型參數(shù)所對應的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略B、對于虛擬類型參數(shù)所對應的模板實參,如果他們是參數(shù)表中的最后的若干參數(shù),則都可以省略C、對于虛擬類型參數(shù)所對應的模板實參,若能夠省略則必須省略D、對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略本題考查的是函數(shù)模板中模板實參的省略。對于虛擬類型參數(shù)所對應的模板實參,如果從模板函數(shù)的實參表中獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類型參數(shù),而且它們又正好是參數(shù)表中最后的若干參數(shù),則模板實參表中的那幾個參數(shù)可以省略。反之,對于某個模板實參,如果從模板函數(shù)的實參表中無法獲得相同的信息、,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有不能省略的實參,則其自身還是不能省略,故選項A和B錯誤。對于虛擬類型參數(shù)所對應的模板實參,若能夠省略可以省略,也可以不省略,故選項C錯誤。常規(guī)參數(shù)的信息無法從模板函數(shù)的實參表中獲得,因此在調(diào)用時必須顯式的說明。 故本題答案為D。.若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n-1,b))則fun的實參個數(shù)是.A、3B、4C、5D、6本題考查的是函數(shù)的調(diào)用。在C++中,〈形參列表〉是由逗號分開的,分別說明函數(shù)的各個參數(shù)。在fun()函數(shù)中它包括3個形參,a+b,3和max(nT,b);當調(diào)用一個函數(shù)時,實參與形參一對一地匹配,所以實參個數(shù)也是3個。 故本題答案為A。.下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是.A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移 B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句本題考查的是內(nèi)聯(lián)函數(shù)。在C++中使用inline關(guān)鍵字來定義內(nèi)聯(lián)函數(shù)。inline關(guān)鍵字放在函數(shù)定義中函數(shù)類型之前。不過編譯器會將在類的說明部分定義的任何函數(shù)都認定為內(nèi)聯(lián)函數(shù),即使它們沒有inline說明。一個內(nèi)聯(lián)函數(shù)可以有,也可以沒有return語句。內(nèi)聯(lián)函數(shù)在程序執(zhí)行時并不產(chǎn)生實際函數(shù)調(diào)用,而是在函數(shù)調(diào)用處將函數(shù)代碼展開執(zhí)行。內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的。 故本題答案為C。.在公有繼承的情況下,允許派生類直接訪問的基類成員包括.A,公有成員B、公有成員和保護成員C、公有成員、保護成員和私有成員D、保護成員本題考查的是派生類。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。此時派生類對基類中各成員的訪問能力與繼承方式無關(guān),但繼承方式將影響基類成員在派生類中的訪問控制屬性。故本題答案為B。.有如下程序:#inc1ude<iostream> usingnamespacestd;classObj{staticinti;public: Obj(){i++;}\Obj(){i一;}staticintgetVal0{returni;)};intObj::i=0;voidf(){Objob2;cout?ob2.getVal();}intmainO{Objobi;f();0bj*ob3=newObj;cout?ob3->getVal();deleteob3;cout?0bj::getVal0;return0;)程序的輸出結(jié)果是.A、232B、231C、222D、221本題主要考查了C++中類的靜態(tài)成員.由于i是類Obj的靜態(tài)成員,該成員被類的所有實例共享。當定義obi時,系統(tǒng)自動調(diào)用構(gòu)造函數(shù)Obj(),i的值將加1;調(diào)用函數(shù)f()時,在定義ob2時系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)Obj(),i的值將再加1;調(diào)用ob2.getVal();后,將i的值輸出,輸出值為2;當調(diào)用函數(shù)f()即將結(jié)束時,系統(tǒng)自動調(diào)用析構(gòu)函數(shù)、Obj(),i的值將減1;當定義ob3時,系統(tǒng)自動調(diào)用構(gòu)造函數(shù)Obj(),i的值將加1,調(diào)用cout?ob3->getVal();后,將i的值輸出,輸出值為2;調(diào)用deleteob3后將執(zhí)行Obj的析構(gòu)函數(shù)、Obj(),執(zhí)行后,i的值將減1,Obj::getVal()為類的一個靜態(tài)成員函數(shù),其作用是返回私有靜態(tài)成員變量i的值1。 故本題答案為D。.下列有關(guān)繼承和派生的敘述中,正確的是.A、如果一個派生類私有繼承其基類,則該派生類中的成員不能訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員 C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類本題考查的是拷貝構(gòu)造函數(shù)??截悩?gòu)造函數(shù)通常在以下3種情況下會被調(diào)用:(1)用類的一個已知的對象去初始化該類的另一個正在創(chuàng)建的對象。(2)采用傳值調(diào)用方式時,對象作為函數(shù)實參傳遞給函數(shù)形參.(3)對象作為函數(shù)返回值。 故本題答案為B。.下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是.A、用一個對象去初始化同一類的另一個新對象時B,將類的一個對象賦值給該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時D,函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時本題考查的是拷貝構(gòu)造函數(shù)??截悩?gòu)造函數(shù)通常在以下3種情況下會被調(diào)用:(1)用類的一個已知的對象去初始化該類的另一個正在創(chuàng)建的對象。(2)采用傳值調(diào)用方式時,對象作為函數(shù)實參傳遞給函數(shù)形參。(3)對象作為函數(shù)返回值。故本題答案為B。.有如下程序#include<iostream> #inc1ude<iomanip> usingnamespacestd;intmain(){cout<<setprecision(3)?fixed<<setfill('*')?setw(8);cout?12.345??34.567; return0;}若程序的輸出是: **12.345**34.567則程序中下劃線處遺漏的操作符是 .。A,setprecisionB、fixedC,setfillC*')D、setw(8)本題考查的是輸入輸出寬度的控制和輸出精度的控制。setw(intn);設置輸入輸出的寬度。setprecision(intn);設置浮點數(shù)的精度(有效位數(shù)或小數(shù)位數(shù))。setfill(charc);設置填充字符。由程序可以看出,本題設置小數(shù)的輸出寬度為8,小數(shù)位數(shù)為3。輸出數(shù)據(jù)時,如果數(shù)據(jù)寬度小于8,則空閑的位置用*填充。故本題答案為九.有如下的運算符重載函數(shù)定義:doubleoperator+(inti,intk){returndouble(i+k);}但定義有錯誤,對這個錯誤最準確的描述是0A、+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的B、兩個int型參數(shù)的和也應該是int型,而這里將+的返回類型聲明為doubleC、沒有將運算符重載函數(shù)聲明為某個類的友元D、C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,不能再定義同樣的運算符本題考查的是運算符的重載。在C++中可以對用戶自定義類的運算符進行重載,但不能諸如int,char,double等內(nèi)置類型運算符進行重載。 故本題答案為D。.有如下程序#include<iostream>usingnamespacestd;classBase{protected: BaseO{cout?'A';}Base(charc)(cout<<c;});classDerived:publicBase{public: Derived(charc){cout?c;});intmain(){Deriveddl(B);return0;}執(zhí)行這個程序屏幕上將顯示輸出-A、BB、BAC、ABD、BB本題考查的是派生的構(gòu)造函數(shù)和基類的構(gòu)造函數(shù)的調(diào)用順序。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:(1)執(zhí)行基類的構(gòu)造函數(shù)。(2)執(zhí)行成員對象的構(gòu)造函數(shù)。(3)執(zhí)行派生類的構(gòu)造函數(shù)。派生類Derived由基類Base公有派生而來。在派生類構(gòu)造函數(shù)聲明時系統(tǒng)會自動調(diào)用基類的缺省構(gòu)造函數(shù)。調(diào)用Deriveddl(B);后,執(zhí)行類Derived的構(gòu)造函數(shù)的Derived(charc)定義,系統(tǒng)會自動調(diào)用基類的缺省構(gòu)造函數(shù)Base。,輸出字母A;再執(zhí)行派生類的構(gòu)造函數(shù)Derived(charc),輸出字母B。故本題答案為C。.關(guān)于關(guān)鍵字class和typename,下列表述中正確的是 一。A、程序中的typename都可以替換為class B、程序中的class都可以替換為typenameC、在模板形參表中只能用typename來聲明參數(shù)的類型D、在模板形參表中只能用class或typename來聲明參數(shù)的類型本題考查的是模板形參。模板形參分為兩種類型:虛擬類型參數(shù)和常規(guī)參數(shù)。虛擬類型參數(shù)須用typename或class定義。常規(guī)參數(shù)用具體的類型修飾符(如int、double,char*等)定義,故選項C和D錯誤。在定義模板時,關(guān)鍵字typename與class可以互相交換,但在定義類時,只能使用class。typename僅僅用于定義模板,故程序中所有的typename都可以替換成class,但對于用于類定義的class不能使用typename來替換。 故本題答案為A。.在一個派生類對象結(jié)束其生命周期時.A、先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù)B,先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù)C、如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)D、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)本題考查的是派生類析構(gòu)函數(shù)的執(zhí)行順序。當主函數(shù)結(jié)束時,派生類析構(gòu)函數(shù)的執(zhí)行順序是:先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行成員對象的析構(gòu)函數(shù),最后執(zhí)行基類的析構(gòu)函數(shù)。 故本題答案為A。.有如下類定義:

classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;});classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){)intgetK()const{returnk;}intgetj()const{returnj;});編譯時發(fā)現(xiàn)有?處語法錯誤,對這個錯誤最準確的描述是. OA、函數(shù)getK試圖訪問基類的私有成員變量kB、在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或privateC、類MyDerived缺少一個無參的構(gòu)造函數(shù)D、類MyDerived的構(gòu)造函數(shù)沒有對基類數(shù)據(jù)成員k進行初始化本題考查的是派生類訪問權(quán)限。在一個派生類中,其成員由兩部分構(gòu)成:一部分是從基類繼承得到的,另一部分是自己定義的新成員,所有這些成員仍然分為公有、私有和保護三種訪問屬性。其中,從基類繼承下來的全部成員構(gòu)成派生類的基類部分,這部分的私有成員是派生類不能直接訪問的,公有成員和保護成員則是派生類可以直接訪問的。故本題答案為A。30.有如下程序#include<iostream>#include<iomanip>usingnamespacestd;classMyClass{public:MyClassO(cout<<,A,;)MyClass(charc){cout?c;}^MyClass0{cout?'B';}};intmainO{MyClasspl,*p2; p2=newMyClass('X');deletep2;return0;)執(zhí)行這個程序屏幕上將顯示輸出.0A、ABXB、ABXBC、AXBD、AXBB本題考查的是析構(gòu)函數(shù)和構(gòu)造函數(shù)。在定義對象pl時由系統(tǒng)自動調(diào)用構(gòu)造函數(shù)MyClassO,輸出字母A;用new創(chuàng)建單個對象MyClass(X)時,要根據(jù)參數(shù)調(diào)用相應的構(gòu)造函數(shù)MyClass(charc),輸出字母X:在執(zhí)行delete時,系統(tǒng)會自動調(diào)用析構(gòu)函數(shù)?MyClassO,輸出字母B,當對象的生存周期即將結(jié)束時系統(tǒng)會自動調(diào)用析構(gòu)函數(shù)?MyClass。,輸出字母B。 故本題答案為D。31.以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是 oA、publicB、staticC、protectedD、private本題考查的是類的定義。類定義的一般格式如下:class<類名)(public:<成員函數(shù)或數(shù)據(jù)成員的說明》〃公有成員,外部接口<成員函數(shù)或數(shù)據(jù)成員的說明》〃公有成員,外部接口protected:《數(shù)據(jù)成員或成員函數(shù)的說明》 〃保護成員private:〈數(shù)據(jù)成員或成員函數(shù)的說明) 〃私有成員};關(guān)鍵字public、private和protected稱為訪問權(quán)限修飾符,他們限制了類成員的訪問控制范圍。故本題答案為B。.有如下程序#include<iostream>usingnamespacestd;inti=l;classFun{public:staticinti;intvalue(){returni-l;)intvalue()const{returni+1;));intFun::i=2;intmainO{inti=3;Funfunl;constFunfun2;return0;)若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語句是.A、cout?funl.value()?Fun::i?fun2.value();B、cout?Fun::i?funl.value()?fun2.value();C、cout?funl.value()?fun2.value()?Fun::i;D、cout?fun2.value()?Fun::i?funl.value();本題主要考查了常對象的一些概念。由于i是類Fun的靜態(tài)成員,該成員被類的所有實例共享。對于類中的靜態(tài)成員函數(shù),可以通過"類名::函數(shù)名”的方法來調(diào)用,并且該函數(shù)只能訪問類中的靜態(tài)成員。在C++中,對于常對象的成員函數(shù)調(diào)用,將自動調(diào)用其常成員函數(shù)。在本題中執(zhí)行funl.value(),將調(diào)用原型為"intvalue。;”的函數(shù),i的值返回1;執(zhí)行fun2.value。;,將調(diào)用原型為"intvalue()const;"的函數(shù),i的值返回3:執(zhí)行Fun::i時,調(diào)用類的靜態(tài)成員i,i的值返回2。 故本題答案為A。.有如下說明inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是.A、*p+9B、*(p+8)C、*p+=9D、p+8本題考查的是指針與數(shù)組。數(shù)組的下標是從0到數(shù)組的長度減1。*(p+i)是取數(shù)組的第i+1個元素,即下標為i的元素。因此*(p+8)取數(shù)組的第9個元素,即元素9。 故本題答案為B。.下列符號中,正確的C++標識符是oA、enumB、2bC、foo-9D、32本題考查的是標識符。標識符是一個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符串。標識符不能與任意一個關(guān)鍵字同名。 故本題答案為D。.下列關(guān)于輸入流類成員函數(shù)getlineO的描述中,錯誤的是。A、該函數(shù)是用來讀取鍵盤輸入的字符串的 B、該函數(shù)讀取的字符串長度是受限制的C、該函數(shù)讀取字符串時,遇到終止符便停止 D、該函數(shù)讀取字符串時,可以包含空格本題考查的是文件流的輸入輸出。函數(shù)getline(char_type*s,streamsizen,char_typedelim)的作用是從當前位置開始提取字符存入s所指向的具有n各字節(jié)的字符空間。字符的提取與存儲在遇到下列情況時停止:(1)已提取并存儲了nT個字符;(2)到流尾,無字符可提??;(3)下一個要提取的字符等于結(jié)束標志delim。故本題答案為B。.按"先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是。標準答案為:棧 考生答案為:棧棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種“先進后出''的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表。.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為。標準答案為:3或三 考生答案為:3軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。.的任務是診斷和改正程序中的錯誤。標準答案為:程序調(diào)試或調(diào)試考生答案為:軟件測試程序調(diào)試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于一定的調(diào)試工具去找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調(diào)試主要在開發(fā)階段。.一個關(guān)系表的行稱為o標準答案為:元組或記錄考生答案為:元組設計數(shù)據(jù)庫的目的實質(zhì)上是設計出滿足實際應用需求的實際關(guān)系模型:關(guān)系中的行稱為元組,對應存儲文件中的記錄,關(guān)系中的列稱為屬性,對應存儲文件中的字段。.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于o標準答案為:線性結(jié)構(gòu) 考生答案為:線性結(jié)構(gòu)與棧類似,隊列也是線性表,也可以采用鏈式存儲結(jié)構(gòu)。.創(chuàng)建對象數(shù)組時,對數(shù)組的每一個元素都將調(diào)用一次構(gòu)造函數(shù),如果沒有顯式給出數(shù)組元素的初值,則調(diào)用缺省構(gòu)造函數(shù)。下列程序涉及到對象數(shù)組的創(chuàng)建和單個對象的創(chuàng)建,其輸出結(jié)果是。#include<iostream>usingnamespacestd;classFoo{public:Foo(intx){cout<<*A>;}FooO{});intmain()(Foof[3],g(3);return0;)標準答案為:A 考生答案為:AAAA本題考查的是類的對象數(shù)組和成員對象。從程序可以看出f[3]是類Foo的一個對象數(shù)組,因為f[3]沒有顯式的給定初值,所以系統(tǒng)自動調(diào)用缺省構(gòu)造函數(shù)Foo();在定義類Foo的對象g(3)時,執(zhí)行相應的構(gòu)造函數(shù)Foo(intx),輸出字母A。.插入排序算法的主要思想是:每次從未排序序列中取出的一個數(shù)據(jù),插入到已排序序列中的正確位置。InsertSort類的成員函數(shù)sort0實現(xiàn)了插入排序算法。請將畫線處缺失的部分補充完整。classInsertSort{public:InsertSort(int*aO,intnO):a(aO),n(nO){}〃參數(shù)aO是某數(shù)組首地址,n是數(shù)組元素個數(shù)voidsort0{〃此函數(shù)假設已排序序列初始化狀態(tài)只包含a[0],未排序序列初始為a[l]…for(inti=l;i<n;++i){intt=a[i];intj;for(:j>0;-j){if(t>=a[j-l])break;a[j]=a[j-l];}a[j]=t;}}protected:int*a,n;〃指針a用于存放數(shù)組首地址,n用于存放數(shù)組元素個數(shù));標準答案為:j=I 考生答案為:j=iT本題考查的是插入排序.在Sort函數(shù)中,實現(xiàn)函數(shù)的插入排序算法,若隊列中已有i個數(shù),則向其中插入第i+1個數(shù)時,依次與從下標為iT到下標為0的數(shù)比較,如果后面的數(shù)小于前面的數(shù),則交換這兩個數(shù),否則說明該數(shù)已排好序,直接跳出內(nèi)層循環(huán),故此空應填j=i..如果不使用多態(tài)機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。下列程序沒有使用多態(tài)機制,其輸出結(jié)果是。#include<iostream>usingnamespacestd;classBase{public:voidprint(){cout?'B';}};classDerived:publicBase{public:voidprint(){cout?,D';}};intmain()(Derived*pd=newDerived();Base*pb=pd;pb->print();pd->print();deletepd;return0;)標準答案為:BD考生答案為:BD本題考查的是派生類。派生類Derived由基類Base公有繼承而來,是基類的子類型。調(diào)用pb->print();后,執(zhí)行基類的函數(shù)voidprint(),因為盡管pb的函數(shù)prinlO可以對類Base的公有派生類Derived的對象pd進行操作,但是只能使用從基類Base中繼承的成員;調(diào)用pd->print();后,執(zhí)行派生類的函數(shù)voidprint()o.若有定義語句:int*a,b;,則變量b的數(shù)據(jù)類型是o標準答案為:整型或int考生答案為:int本題考查的是變量的定義。int*a,b;把a定義為一個int類型的指針;把b定義為一個整型變量。.在聲明派生類時,如果不顯式地給出繼承方式,缺省的類繼承方式是私有繼承private。已知有如下類定義:classeBase{protected:voidfun(){});classDerived:Base{};則Base類中的成員函數(shù)fun(),在Derived類中的訪問權(quán)限是一 。(注意:要求填寫private、protected或public中的一項)。標準答案為:private考生答案為:private46.下列程序的輸出結(jié)果是。#include<iostream>usingnamespacestd;classA{inta;public:A0:a(9){)virtualvoidprint()const{cout<<a;};);classB:publicA{charb;public:B(){b=S;)voidprint()const{cout?b;});voidshow(A&x){x.print();}intmainO{Adl,*p;Bd2;p=&d2;dl.print();d2.print();p->print();show(dl);show(d2);return0;)標準答案為:9SS9S 考生答案為:9SS9S本題主要考查了缺省構(gòu)造函數(shù)。在dl、d2定義時分別調(diào)用它們的構(gòu)造函數(shù)。調(diào)用dl.print。;后,執(zhí)行類A的virtualvoidprint。函數(shù);調(diào)用d2.print();后,執(zhí)行派生類B的構(gòu)造函數(shù)voidprint。:調(diào)用p->print();后,執(zhí)行執(zhí)行派生類B的構(gòu)造函數(shù)voidprint():調(diào)用show(dl);后,調(diào)用函數(shù)show(A&x),再調(diào)用類A的virlualvoidprinlO函數(shù);調(diào)用show(d2);后,調(diào)用函數(shù)show(A&x),再調(diào)用派生類B的構(gòu)造函數(shù)voidprint()。.已知遞歸函數(shù)f的定義如下:intf(intn)(if(n<=l)return1;〃遞歸結(jié)束情況elsereturnn*f(n-2);〃遞歸}則函數(shù)調(diào)用語句f(5)的返回值是 o標準答案為:15考生答案為:120本題主要考查了遞歸算法。函數(shù)每次將f(n)的值轉(zhuǎn)換成相應的關(guān)系式n*f(n-2),直到f(l)時為止。所以f(5)=5*f(5-2)=5*3*f(1)=5*3*1=15。.已知數(shù)組a中的元素個數(shù)為n,下列語句的作用是將下標為i的元素移動到下標為iT的單元,其中k=i<n。例如,當n:4,a中原有的數(shù)據(jù)為1,2,3,4時,則移動后a中元素變?yōu)?,3,4,4。請將語句補充完整:for(inti=0;i<n-l;i++)a[i]=a[];標準答案為:i+1或1+1考生答案為:i+1本題考查循環(huán)的基本應用。解題思路為:循環(huán)條件是i<n-L循環(huán)的結(jié)果是把將下標為i的元素移動到下標為i-1的單元,即a[i+l]的值賦給a[i],所以答案是i+1。.己知下列程序的輸出結(jié)果是42,請將畫線處缺失的部分補充完整。#include<iostream>usingnamespacestd;classFootintvalue;public:Foo():value(0){}voidsetValue(intvalue){=value;} 〃給Foo的數(shù)據(jù)成員value賦值voidprint(){cout?value;});intmain()(Foof;f.setValue(42);f.print();return0;)標準答案為:this->value或Foo::value或(*this).value 考生答案為:本題考查的是this指針。this指針,它是成員函數(shù)的所屬對象的指針,它指向類對象的地址。本題要輸出42,也就是要把f.setValue(42);中的42賦值給Foo的數(shù)據(jù)成員value,因此橫線處缺少的是給Foo的數(shù)據(jù)成員value賦值的語句,所以答案為this->value或Foo::value。50.在MyClass類的定義中,對賦值運算符二進行重載。請將畫線處缺失的部分補充完整。MyClass::operator=(constMyClass&rhs)(if(this==&rhs)return*this;value=rhs.value;return*this;)標準答案為:MyClass&考生答案為:本題考查的是運算符的重載。一個類如果要重載運算符=,通常也就需要定義自己特有的拷貝構(gòu)造函數(shù)??梢栽陬愺w中增加:(const&operatorMyClassftrhs);然后在MyClass的類體外給出它的完整定義:MyClass&MyClass::operator=(constMyClass&rhs)因此在MyClass類的定義中缺少MyClass&語句。2010年3月考試真題(第31次).數(shù)據(jù)流程圖(DFD圖)是.A、軟件概要設計的工具B、軟件詳細設計的工具C,結(jié)構(gòu)化方法的需求分析工具D、面向?qū)ο蠓椒ǖ男枨蠓治龉ぞ叱R姷男枨蠓治龇椒ㄓ校航Y(jié)構(gòu)化分析方法和面向?qū)ο蟮姆治龇椒?。結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結(jié)構(gòu)化英語、判定表和判定樹等工具,來建立一種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標文檔。 故本題答案為C..軟件(程序)調(diào)試的任務是.A、診斷和改正程序中的錯誤B、盡可能多地發(fā)現(xiàn)程序中的錯誤C、發(fā)現(xiàn)并改正程序中的所有錯誤D、確定程序中錯誤的性質(zhì)程序調(diào)試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯

誤,然后借助于一定的調(diào)試工具去執(zhí)行找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調(diào)試主要在開發(fā)階段. 故本題答案為A。.軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于系統(tǒng)軟件的是.A、編輯軟件B、操作系統(tǒng)C、教務管理系統(tǒng)D、瀏覽器軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件).應用軟件是為解決特定領(lǐng)域的應用而開發(fā)的軟件。例如,事務處理軟件,工程與科學計算軟件,實時處理軟件,嵌入式軟件,人工智能軟件等應用性質(zhì)不同的各種軟件。系統(tǒng)軟件是計算機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件.如操作系統(tǒng),編譯程序,匯編程序,網(wǎng)絡軟件,數(shù)據(jù)庫管理系統(tǒng)等,所以選項B屬于系統(tǒng)軟件。 故本題答案為B。.軟件生命周期可分為定義階段,開發(fā)階段和維護階段。詳細設計屬于.A、定義階段B、開發(fā)階段C、維護階段 D、上述三個階段軟件生命周期可分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。軟件開發(fā)階段包括概要設計、詳細設計、實現(xiàn)和測試四個活動階段。 故本題答案為B。.下列敘述中正確的是A、對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為nB、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為D、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為Slogan)對于長度為n的有序線性表,在最壞情況下,二分杳找只需要比較log2n次,而順序杳找需要比較n次。二分法查找只適用于順序存儲的有序表,如果采用鏈式存儲結(jié)構(gòu),也只能用順序查找,所以選項A是正確的。故本題答案為A。.有兩個關(guān)系R和T如下:R TABABCa12b22c32d32ABCc32d32則由關(guān)系R得到關(guān)系T的操作是 。A、選擇B、投影C、交D、并從關(guān)系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進行的運算,即從水平方向抽取記錄。由圖可知關(guān)系R通過運算得到關(guān)系T,關(guān)系T與關(guān)系R相比,屬性的個數(shù)沒有發(fā)生變化,記錄的條數(shù)發(fā)生了變化。因此所使用的運算應該是選擇。 故本題答案為鼠.算法的時間復雜度是指.A、算法的執(zhí)行時間 B、算法所處理的數(shù)據(jù)量C,算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的基本運算次數(shù)所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。為了能夠比較客觀地反映出一個算法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關(guān),而且還應該與算法實現(xiàn)過程中的許多細節(jié)無關(guān)。為此,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。 故本題答案為D。.數(shù)據(jù)庫設計中,用E-R圖來描述信息結(jié)構(gòu)但不涉及信息在計算機中的表示,它屬于數(shù)據(jù)庫設計的1.A、需求分析階段B、邏輯設計階段C,概念設計階段 D、物理設計階段E-R圖是E-R模型的一種非常直觀的圖的形式表示,它描述信息結(jié)構(gòu)但不涉及信息在計算機中的表示,它是數(shù)據(jù)庫概念設計階段的工具。 故本題答案為c。.在學生管理的關(guān)系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是一 oA、文件 B、數(shù)據(jù)庫C、字段D、記錄實體是概念世界中的基本單位,屬性附屬于實體,它本身并不構(gòu)成獨立單位。屬性有屬性域,每個實體可取屬性域內(nèi)的值。一個實體的所有屬性取值組成了一個值集叫元組(或稱記錄)。在概念世界中,可以用元組表示實體,也可用它區(qū)別不同的實體。所以在學生管理的關(guān)系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是元組(或記錄)。 故本題答案為D。.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)模式定義的語言是oA、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言數(shù)據(jù)定義語言(DDL):該語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。數(shù)據(jù)操縱語言(DML):該語言負責數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作。數(shù)據(jù)控制語言(DCL):該語言負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。故本題答案為A。.有如下兩個類定義classXX{private:doublexl;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubleyl;protected:doubley2;public:doubley3;);在類YY中保護成員變量的個數(shù)是。A,1B、2C、3D、4本題主要考查了類的繼承與派生。類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。當派生類從基類保護繼承時,基類的公有成員和保護成員在派生類中都為保護成員。本題派生類YY從基類XX保護繼承,因此基類XX的公有成員x3和保護成員x2都成為派生類YY的保護成員,再加上派生類YY自身的保護成員y2,因此類YY中有3個保護成員。 故本題答案為C。.在C++中,cin是一個.A、類B、對象C、模板D、函數(shù)本題主要考查了I/O流。在C++中,數(shù)據(jù)的輸入與輸出是通過I/O流來實現(xiàn),cin和cout是預定義的流類對象。故本題答案為B。.若x和y是程序中的兩個整型變量,則下列if語句中正確的是 。A,if(x==0)y=l;elsey=2; B,if(x==0)theny=lelsey=2;C、if(x==0)y-1elsey-2; D,ifx==0y=l;elsey-2;本題主要考杳了if語句。if語句的語法形式為:if(表達式)語句1else語句2在C++中,if語句中沒有then,語句最后必須有一個分號,因此選項A正確,選項B和選項C錯誤;在選項D中,表達式x==0應該用圓括號括起來,因此選項D錯誤。 故本題答案為A。.將運算符重載為非成員函數(shù),下列原型聲明中,錯誤的是.A、MyClockoperator+(MyClock,long);B、MyClockoperator+(MyClock,MyClock);C、MyClockoperator+(long,long);D、MyClockoperator+(long,MyClock);本題主要考查了運算符的重載。運算符的重載是針對新類型數(shù)據(jù)的實際需要,對原有運算符進行適當?shù)母脑?。一般來講,重載的功能應當與原有功能類似,不能改變原運算符的操作對象個數(shù),同時至少要有一個操作對象是自定義類型。選項A、選項B和選項D的兩個參數(shù)中至少有一個參數(shù)是自定義類型,因此選項A、選項B和選項D正確。選項C中兩個參數(shù)都是基本數(shù)據(jù)類型,沒有自定義類型,因此選項C錯誤。故本題答案是C。.要定義整型數(shù)組x,使之包括初值為0的三個元素,下列語句中錯誤的是.A、intx[3]={0,0,0):B、intx[]={0};C、staticintx[3]={0};D、intx[]={0,0,0};本題主要考查了一維數(shù)組的定義與初始化。一維數(shù)組的定義形式為:數(shù)據(jù)類型數(shù)組名[數(shù)組元素個數(shù)];數(shù)組的初始化就是在聲明數(shù)組時給部分或全部元素賦初值。選項A定義了有三個元素的整型數(shù)組x,并初始化三個元素的值為0,因此選項A正確;當聲明數(shù)組時沒有給出數(shù)組元素個數(shù),但是有初始化列表,數(shù)組元素個數(shù)由列表中元素個數(shù)來確定,因此選項D正確;選項B沒有給出數(shù)組元素個數(shù),并且在初始化列表中只給一個元素值,因此選項B定義了只有一個元素的整型數(shù)組,故選項B錯誤;對于數(shù)值類型數(shù)組,如果給定的數(shù)值不夠,則沒有指定數(shù)值的元素將初始化為0,因此選項C正確。 故本題答案為&.下列控制格式輸入輸出的操作符中,能夠設置浮點數(shù)精度的是 。A,setprecisionB、setwC、setfillD、showpoint本題主要考查了輸出流的格式控制。setprecision(intn)用于控制輸出流顯示浮點數(shù)的精度,整數(shù)n代表顯示的浮點數(shù)數(shù)字的個數(shù)。因此選項A正確。setw(intn)用于預設輸入輸出寬度。setfill(charc)用于預設填充字符。showpoint用于給浮點數(shù)顯示小數(shù)點和尾部的0。因此選項B、選項C和選項D不正確。 故本題答案為A。.若MyTemp是一個只有一個虛擬類型參數(shù)的類模板,且有如下語句序列MyTemp<double>p2;MyTemp<long>p3[2];編譯系統(tǒng)在處理上面的語句序列時,所生成的模板MyTemp的實例的個數(shù)是.A,1B、2C、3D、0本題主要考核類模板。類模板聲明的語法形式為:template〈模板參數(shù)表》class類名{類成員聲明}使用類模板來建立對象時,應按如下形式聲明:類名〈模板實參表》對象名1,…,對象名n;在定義對象的過程中,編譯系統(tǒng)會自動地根據(jù)需要生成相應的類定義,這種依據(jù)類模板生成類定義的過程稱為類模板的實例化。類模板實例化所生成的每一個類定義就是相應類模板的一個實例,因此類模板的實例個數(shù)由類型參數(shù)的種類決定。本題使用類模板MyTemp定義對象時指定了兩種類型參數(shù):double和long,因此所生成的實例個數(shù)是2。 故本題答案為B。.下列代碼段聲明了3個類classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列關(guān)于這些類之間關(guān)系的描述中,錯誤的是oA、類Person是類Undergraduate的基類 B、類Undergraduate從類Student公有繼承C、類Student是類Person的派生類 D、類Undergraduate是類Person的派生類本題主要考查了類的繼承與派生。在C++中,定義派生類的一般語法形式為:class派生類名:繼承方式基類名1,繼承方式基類名2,…,繼承方式基類名n{派生類成員聲明;};類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。如果不顯式地給出繼承方式,缺省的類繼承方式是私有(private)繼承。在聲明派生類Undergraduate時缺省繼承方式,因此類Undergraduale從類Student私有繼承,故選項B錯誤。 故本題答案為B。.將前綴運算符重載為非成員函數(shù),下列原型中,能正確用于類中說明的是oA、Decr&operator-(int);B、Deeroperator―(Decr&,int);C、friendDecrftoperator—(Decr&);D、friendDeeroperator—(Decr&,int);本題主要考查了運算符的重載。運算符一既可以是前綴運算符(前減1),又可以是后綴運算符(后減1)o為了區(qū)分這兩種情況,重載這兩個運算符時必須在格式上有所區(qū)別:重載后綴一時必須多一個虛擬參數(shù):into如果將前綴一和后綴一作為非成員函數(shù)重載,那個唯一的操作數(shù)必須作為第一參數(shù)提供。又因為要修改第一操作數(shù),對應的參數(shù)必須聲明為引用。前綴一作為非成員函數(shù)重載的一般形式為:friendDecrftoperator—(Decrft);后綴一作為非成員函數(shù)重載的一般形式為:friendDeeroperator—(Decr&,int);當運算符重載為類的成員函數(shù)時,函數(shù)的參數(shù)個數(shù)比原來的參數(shù)個數(shù)少一個。前綴一作為成員函數(shù)重載的一般形式為:Decr&operator-();后綴一作為成員函數(shù)重載的一般形式為:Deeroperator-(int);因此選項C正確,選項D是后綴一作為非成員函數(shù)重載的形式。故本題答案為C。.有如下程序:#include<iostream>usingnamespacestd;classBase{public:Base(intx=0):valB(x){cout?valB;}?Base。{cout?valB;}private:intvalB;);classDerived:pub1icBase(public:Derived(intx=0,inty=0):Base(x),valD(y)(cout?valD;}^Derived(){cout?valD;}private:intvalD;};intmainO{Derivedobj12(2,3);return0;)運行時的輸出結(jié)果是OA、2332B、2323C、3232D、3223本題主要考查了派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)。構(gòu)造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調(diào)用,建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:(1)執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右);(2)執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序(自上而下);(3)執(zhí)行派生類的構(gòu)造函數(shù)。析構(gòu)函數(shù)用來完成對象被刪除前的一些清理工作,在對象的生存期即將結(jié)束的時刻被系統(tǒng)自動調(diào)用。派生類的析構(gòu)函數(shù)在執(zhí)行過程中也要對基類和成員對象進行操作,但它的執(zhí)行過程與構(gòu)造函數(shù)嚴格相反,即:(1)對派生類新增普通成員進行清理。(2)調(diào)用成員對象析構(gòu)函數(shù),對派生類新增的成員對象進行清理。(3)調(diào)用基類析構(gòu)函數(shù),對基類進行清理。main。函數(shù)中,第一條語句Derivedobjl2(2,3);創(chuàng)建派生類對象objl2時,先以第一個實參2初始化基類Base成員valB,執(zhí)行基類Base的構(gòu)造函數(shù),輸出valB的值2:然后以第二個實參值3初始化派生類Derived成員valD,執(zhí)行派生類Derived的構(gòu)造函數(shù),輸出valD的值3:在對象objl2的生存期即將結(jié)束時,先調(diào)用派生類Derived的析構(gòu)函數(shù),輸出valD的值3,然后調(diào)用基類析構(gòu)函數(shù),輸出valB的值2。因此本程序運行時的輸出結(jié)果是2332。 故本題答案為A。.有如下程序#include<iostream>usingnamespacestd;classA)public:A(inti=0):rl(i){}voidprint(){cout?,E><<rl?* ;}voidprint()const{cout?,C*?rl*rl?,;}voidprint(intx){cout?,P*?rl*rl*rl?,;}private:intrl;};intmain(){Aal;constAa2(4);al.print(2);a2.print();return0;運行時的輸出結(jié)果是.A、P8-E4B、P8-C16-C、P0-E4-D、P0-C16-本題主要考查了函數(shù)的重載、常對象和常成員函數(shù)。使用const關(guān)鍵字修飾的對象稱為常對象,使用const關(guān)鍵字說明的成員函數(shù)稱為常成員函數(shù),通過常對象只能調(diào)用它的常成員函數(shù),而不能調(diào)用其他成員函數(shù)。兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)的最佳匹配,自動確定調(diào)用哪一個函數(shù),這就是函數(shù)的重載。const關(guān)鍵字可以用于對重載函數(shù)的區(qū)分。在main。函數(shù)中,第一條語句定義類A的時象al,系統(tǒng)自動調(diào)用類A的構(gòu)造函數(shù),以默認形參值0初始化對象al的數(shù)據(jù)成員rl;第二條語句定義常對象a2,系統(tǒng)自動調(diào)用類A的構(gòu)造函數(shù),以實參值4初始化對象a2的數(shù)據(jù)成員rl:第三條語句通過對象al調(diào)用帶一個整型形參的沒用const修飾的print。函數(shù),表達式rl*rl*rl=0*0*0=0,因此輸出P0-,第四條語句常對象a2調(diào)用的是用const修飾的常成員函數(shù)print。,表達式rl*rl的值為:4*4=16,因此輸出C16:故程序運行時的輸出結(jié)果是P0-C16- 故本題答案為D。.若MyClass是一個類名,且有如下語句序列MyClasscl,*c2;MyClass*c3=newMyClass;MyClass&c4=cl;上面的語句序列所定義的類對象的個數(shù)是.A、1 B、2C、3D,4本題主要考查了對象的定義。第1條語句定義了MyClass類的對象cl和MyClass類的對象指針變量c2。因為定義對象指針只是得到了用于存儲對象地址的指針變量,不會創(chuàng)建對象,因此第1條語句只定義了一個類對象cl;第2條語句定義了對象指針變量c3。并初始化c3指向用new運算符動態(tài)創(chuàng)建的對象,因此第2條語句用new運算符動態(tài)定義了一個對象;第3條語句聲明了對象引用c4,并將其初始化為對象cl的一個別名。因為創(chuàng)建對象引用只是為已有對象創(chuàng)建別名,不會創(chuàng)建對象,因此第3條語句沒有創(chuàng)建類對象。因此這3條語句所定義的類對象的個數(shù)是2。故本題答案為B。.下列關(guān)于類模板的描述中,錯誤的是oA、類模板的成員函數(shù)都是模板函數(shù) B、可以為類模板參數(shù)設置默認值C、類模板描述了一組類 D、類模板中只允許有一個類型參數(shù)本題主要考查了類模板.使用類模板可以為類聲明一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)、某些成員函數(shù)的返回值能取任意類型。因此選項C正確;類模板聲明的語法形式為:template<模板參數(shù)表》class類名{類成員聲明}其中“模板參數(shù)表”由用逗號分隔的若干類型標識符或常量表達式構(gòu)成,因此選項D錯誤:可以為類模板中的類型參數(shù)和非類型參數(shù)提供默認值,如果某個類模板參數(shù)有默認值,該列表中的所有后續(xù)參數(shù)也都必須指定默認值。因此選項B正確。類模板的成員函數(shù)都是模板函數(shù),因此選項A正確。 故本題答案為D。.有如下程序^include<iostream>usingnamespacestd;classTest{public:TestO{}Test(constTest&t){cout<<l;}Testfun(Test&u){Testt=u;returnt;}intmain(){Testx,y;x=fun(y);return0;}運行這個程序的輸出結(jié)果是.A、無輸出B、1C、11D、111本題主要考查了拷貝構(gòu)造函數(shù)??截悩?gòu)造函數(shù)是?種特殊的構(gòu)造函數(shù),具有?般構(gòu)造函數(shù)的所有特性,其形參是本類的對象的引用。作用是使用一個已知的對象初始化一個正在創(chuàng)建的同類對象.拷貝構(gòu)造函數(shù)在以下三種情況下都會被調(diào)用:1)當用類的一個對象初始化該類的另一個對象時;2)如果函數(shù)的形參是類的對象,調(diào)用函數(shù)時,進行形參和實參結(jié)合時:3)如果函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成返回調(diào)用者時。函數(shù)fun的形參為類Test的對象的引用,main。函數(shù)中,第二條語句x=fun(y);調(diào)用函數(shù)fun()。使引用u為實參y的別名,然后執(zhí)行函數(shù)CunO的第一條語句Testt=u;,即用Test類的對象u去初始化該類的另一個對象I,系統(tǒng)將自動調(diào)用拷貝構(gòu)造函數(shù),輸出1,然后執(zhí)行函數(shù)fun()的第二條語句returnt;,函數(shù)fun()的返回值為Test類的對象t,函數(shù)執(zhí)行完成返回調(diào)用者時,系統(tǒng)將第二次自動調(diào)用拷貝構(gòu)造函數(shù),輸出1,程序執(zhí)行結(jié)束。故運行這個程序的輸出結(jié)果是11。 故本題答案為C。.要定義一個引用變量p,使用引用類MyClass的一個對象,正確的定義語句是 。A、MyClassp=MyClass;B、MyClassp=newMyClass;C、MyClass&p=newMyClass;D、MyClassa,&p=a;本題主要考查了引用的聲明。引用的聲明形式:類型標識符&引用名=目標變量名;說明:(1)&在此不是求地址運算,而是起標識作用。(2)類型標識符是指目標變量的類型.(3)聲明引用時,必須同時對其進行初始化。(5)聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數(shù)據(jù)類型,因此引用本身不占存儲單元,系統(tǒng)也不給引用分配存儲單元。選項A和選項B在變量p的左邊沒有標識&,不符合引用聲明形式,因此選項A和選項B錯誤;選項C中,賦值號右邊不是已存在的變量名,不符合引用聲明的語法形式,因此選項C錯誤:選項D先聲名對象a,然后聲明引用為己聲明變量名a的別名,符合引用聲明形式,因此選項D正確。 故本題答案為D。.下列關(guān)于函數(shù)的描述中,錯誤的是。A、函數(shù)可以沒有返回值 B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板本題主要考查了函數(shù)。函數(shù)定義的語法形式:類型標識符函數(shù)名(形式參數(shù)列表)(語句序列無返回值的函數(shù)其類型標識符為void。故選項A正確;函數(shù)可以沒有參數(shù),當函數(shù)定義時沒有形參,則函數(shù)調(diào)用時,〈實參表〉亦為空,故選項B正確;函數(shù)可以是類的成員,故選項C正確:模板是C++支持參數(shù)化多態(tài)性的工具,函數(shù)模板實現(xiàn)了類型參數(shù)化,將函數(shù)處理的數(shù)據(jù)類型作為參數(shù),提高了代碼的可重用性,故選項D錯誤。 故本題答案為D..下列程序段中包含4個函數(shù),其中具有隱含this指針的是 。intfunl();classTest{public:intfun2();friendintfun3();staticintfun4(););A、funlB、fun2C、fun3D、fun4本題主要考查了this指針。this指針是一個隱含于每一個非靜態(tài)成員函數(shù)中的特殊指針。它是一個指向正在被該成員函數(shù)操作的對象,也就是要操作該成員函數(shù)的對象。因此類Test的非靜態(tài)成員函數(shù)fun2中具有隱含this指針,故選項B正確。函數(shù)funl和函數(shù)fun3均不是成員函數(shù),因此不具有隱含this指針,故選項A和選項C不正確;靜態(tài)成員不屬于類的任何一個對象,而是屬于整個類,因此靜態(tài)成員沒有this指針,故靜態(tài)成員函數(shù)fun4中沒有this指針,故選項D錯誤。 故本題答案為B。.下面是類Shape的定義:classShape{public:virtualvoidDraw()=0;1;下列關(guān)于Shape類的描述中,正確的是.A、類Shape是虛基類 B、類Shape是抽象類C、類Shape中的Draw函數(shù)聲明有誤 D、語句"Shapes;”能夠建立Shape的一個對象s本題主要考查了純虛函數(shù)和抽象類。聲明純虛函數(shù)的語法形式為:virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;所以函數(shù)Draw。是純虛函數(shù)。帶有純虛函數(shù)的類是抽象類,所以類Shape是抽象類,因此選項B正確;抽象類不能實例化,即不能定義一個抽象類的對象,因此選項D錯誤。 故本題答案是B。.關(guān)于函數(shù)中的〈返回類型),下列表述中錯誤的是.A、〈返回類型》中有可能包含關(guān)鍵字int B、〈返回類型》中有可能包含自定義標識符C,〈返回類型》中有可能包含字符* D、〈返回類型》中有可能包含口本題主要考查了函數(shù)的返回類型。函數(shù)的定義形式為:返回類型函數(shù)名(形參列表){函數(shù)體}返回類型又稱函數(shù)類型,表示一個函數(shù)所計算(或運行)的結(jié)果值的類型。因為函數(shù)的結(jié)果值可以為整型,因此返回類型可能包含關(guān)鍵字int,選項A正確;函數(shù)的返回類型可以為類,因此返回類型可能包含自定義標識符,選項B正確;函數(shù)的返回類型可以為指針,因此返回類型可能包含字符*,選項C正確;但返回類型不能為數(shù)組,因此返回類型中不可能包含口,因此選項D錯誤。故本題答案為D。.打開文件時可單獨或組合使用下列文件打開模式@iosbase::app @iosbase::binary③ios_base::in ?ios_base::out若要以二進制讀方式打開一個文件,需使用的文件打開模式為 」A,①③B、①④C、②③D、②④本題主要考查了I/O流。打開一個與輸出流關(guān)聯(lián)的文件時,通常要指定文件模式?ios_base::app模式的功能:以寫方式打開文件,若文件不存在則創(chuàng)建文件,若文件已存在則向文件尾添加數(shù)據(jù);ios_base::binary模式:以二進制模式打開文件(缺省為文本模式);ios_base::in模式:以讀方式打開文件;iosbase::out模式:以寫方式打開文件,若文件不存在則創(chuàng)建,若文件已存在則清空原內(nèi)容(ofstream默認的打開方式)。因此若要以二進制讀方式打開一個文件,需使用的文件打開模式為:ios_base::binaryIiosbase::in.故本題答案為C。.下列關(guān)于繼承方式的描述中,錯誤的是.A、如果不顯式地指定繼承方式,缺省的繼承方式是私有(private)B、采用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員C、采用保護繼承方式時,基類中的保護成員在派生類中仍然是保護成員D、采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員本題主要考查了類的繼承與派生.類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。如果不顯式地給出繼承方式,缺省的類繼承方式是私有(private)繼承。因此選項A正確:當派生類從基類公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,仍作為派生類的公有成員和保護成員,因此選項B正確;當派生類從基類保護繼承時,基類的公有成員和保護成員在派生類中都為保護成員,因此選項C正確;當派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都改變?yōu)樗接谐蓡T:無論哪種繼承方式,派生類中的成員都不能訪問基類中的私有成員,因此選項D錯誤。故本題答案為D。.下列關(guān)于運算符重載的描述中,錯誤的是。A、可以通過運算符重載在C++中創(chuàng)建新的運算符 B、賦值運算符只能重載為成員函數(shù)C、運算符函數(shù)重載為類的成員函數(shù)時,第一操作數(shù)是該類對象D、重載類型轉(zhuǎn)換運算符時不需要聲明返回類型本題主要考查了運算符重載?!边\算符重載”是針對C++中原有運算符進行的,不可能通過重載創(chuàng)造出新的運算符,因此選項A錯誤;在C++中,運算符的重載方式有兩種:(1)重載為成員函數(shù);(2)重載為友元函數(shù)。"="、"口"、"0"、以及所有的類型轉(zhuǎn)換運算符只能重載為成員函數(shù),因此選項B正確;運算符重載為成員函數(shù)時,第一操作數(shù)就是對象本身,并不顯式地出現(xiàn)在參數(shù)表中,因此選項C正確;重載類型轉(zhuǎn)換運算符的格式為:operator類型名0,其中"類型名”就代表了返回類型,因此重載類型轉(zhuǎn)換運算符時不需要聲明返回類型,因此選項D正確。故本題答案為A。.有以下程序:#include<iostream>usingnamespacestd;classB)public:B(intxx):x(xx){++count;x+=10;}virtualvoidshow()const{cout?count?*?x<<endl;}protected:staticintcount;private:intx;)■:classD:publicB{public:D(intxx,intyy):B(xx),y(yy){++count;y+=100;}virtualvoidshow()const{cout?count?,><<y<<endl;}private:inty;intB::count=0;intmain(){B*ptr=newD(10,20);ptr->show();deleteptr;return0;)運行時的輸出結(jié)果是.A、l_120B、2_120C、l_20D、2_20本題主要考杳了派生類的構(gòu)造函數(shù)、靜態(tài)成員函數(shù)以及虛函數(shù)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:(1)執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右);(2)執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序(自上而下);(3)執(zhí)行派生類的構(gòu)造函數(shù)。用static關(guān)鍵字聲明的數(shù)據(jù)成員為靜態(tài)數(shù)據(jù)成員,靜態(tài)成員在每個類只有一個拷貝,由該類的所有對象共同維護和使用。在成員函數(shù)聲明的前面加上virtual修飾,即把該函數(shù)聲明為虛函數(shù)。在C++中,一個基類指針(或引用)可以用于指向它的派生類對象,而且通過這樣的指針(或引用)調(diào)用虛函數(shù)時,被調(diào)用的是該指針(或引用)實際所指向的對象類的那個重定義版本.本題中,函數(shù)show在基類B和派生類D中都聲明為

溫馨提示

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

評論

0/150

提交評論