全國計算機等級考試二級C++筆試歷年真題_第1頁
全國計算機等級考試二級C++筆試歷年真題_第2頁
全國計算機等級考試二級C++筆試歷年真題_第3頁
全國計算機等級考試二級C++筆試歷年真題_第4頁
已閱讀5頁,還剩116頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2006年9月考試真題(第24次).從工程管理角度,軟件設計般分為兩步完成,它們是.A、概要設計與詳細設計B、過程控制C、軟件結構設計與數據設計D、程序設計與數據設計從工程管理角度看,軟件設計分為兩步完成:概要設計與詳細設計。概要設計(又稱結構設計)將軟件需求轉化為軟件體系結構、確定系統級接口、全局數據結構或數據庫模式;詳細設計確立每個模塊的實現算法和局部數據結構,用適當方法表示算法和數據結構的細節.故本題答案為A。.數據庫技術的根本目標是解決數據的.A、存儲問題B、共享問題C、安全問題D、保護問題由于數據的集成性使得數據可為多個應用所共享,特別是在網絡發達的今大,數據庫與網絡的結合擴大了數據關系的應用范用。數據的共享本身又“I極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不致性。因此,數據庫設計的根本目標是要解決數據共享問題。故本題答案為B。.在數據庫系統中,用戶所見數據模式為.A、概念模式B、外模式C、內模式D、物理模式數據庫管理系統的三級模式結構III外模式、模式和內模式組成。外模式又稱為子模式,或用戶模式,是指數據庫用戶所看到的數據結構,是用戶看到的數據視圖。模式又稱為邏輯模式,是數據庫中對全體數據的邏輯結構和特性的描述,是所有用戶所見到的數據視圖的總和。外模式是模式的一部分.內模式又稱為存儲模式或物理模式,是指數據在數據庫系統內的存儲介質匕的表示,即時數據的物理結構和存取方式的描述。故本題答案為B。.在長度為64的有序線性表中進行順序查找,最壞情況下需耍比較的次數為 。A、63B、64C、6D、7在進行順序查找過程中,如果線性表中的第1個元素就是被查找元索,則只需做一次比較就查找成功,杏找效率最高;但如果被春找的元素是線性表中的最后一個元素,或者被杳找的元索根本就不在線性衣中,則為/音找這個元素需要5線性衣中所有的元素進行比較,這是順序有找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次. 故本題答案為B。.對下列二叉樹進行中序遍歷的結果是.A、ACBDFEGB、ACBDFGEC,ABDCGEFD、FCADBEG二叉樹的中序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。故本題答案為A。.卜.列選項中不屬于軟件生命周期開發階段任務的是.A、軟件測試 B、概要設計 C、軟件維護 D,詳細設計軟件生命周期分為軟件定義、軟件開發及軟件維護。其中軟件開發階段的任務中軟件設計階段可分解成概要設計階段和詳細設計階段:軟件維護不屬于軟件開發階段。 故木題答案為C。.下列敘述中正確的是。A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、上述三種說法都不對算法的復雜度主要包括時間復雜度和空間復雜度:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度:尊法的時間復雜度是指執行算法所需要的計算工作鼠,即算法執行過程中所需要的基本運算次數,為了能夠比較客觀地反映出一個算法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實現過程中的許多細節無關。為此,可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量.故本題答案為D。8.5列選項中不符合良好程序設計風格的是.A、源程序要文檔化 B、數據說明的次序耍規范化C、避免濫用goto語句D、模塊設計要保證高耦合、高內聚良好的程序設計風格可以使程序結構清晰合理,使程序代碼便于維護,因此,程序設計風格對保證程序的質量很重要。主要應注意和考慮卜,述一些因素:1、源程序要文檔化:2、數據說明的次序要規范化;3、語句的結構應該簡單直接,不應該為提高效率而把語句發雜化,避免濫用got。語句?模塊設計要保證低耦合、高內聚。 故本題答案為D。.設有如下三個關系表故本題答案為C。.數據庫設計的四個階段是:需求分析、概念設計、邏輯設計和 二A、編碼設計 B、測試階段 C、運行階段 D、物理設計數據庫設計分為以卜6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數據庫運行和維護階段。 故本題答案為及.下列運算符不能重載為友元函數的是A,=()[]->B、+-++—C,><>=<=D、+=-=*=/=本題考查的是運算符的取載。在C++中,可以通過兩種方式對運算符進行重載。--種是類成員函數的方式、一種是友元函數的方式。=0口->以及所有的類型轉換運算符只能作為成員函數重載,不能重載為友元函數。 故本題答案為A。.語句ofstreamf("SALARY.DAT",ios_base::app);的功能是建立流對象f,并試圖打開文件SALARY.DAT與f關聯,而且.A、若文件存在,將其置為空文件;若文件不存在,打開失敗B,若文件存在,將文件指針定位于文件尾:若文件不存在,建立一個新文件C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗D、若文件存在,打開失敗;若文件不存在,建立一個新文件

本題考查的是文件流的輸出。ofstreamf("SALARY.DAT",iosbase::app);是以iosbase::app方式打開文件,若文件存在,將文件指針定位于文件尾:若文件不存在,建立一個新文件。 故木題答案為B。.有如下程序#include<iostream>usingnamespacestd;classApublic:virtualvoidfund(){cout?,,AlM;}{cout?nA2M{cout?nA2M;}{cout?MBr,;){cout?HB2H;)classB:publicA{public:voidfund()voidfunc2()};intmain()(A*p=newB;p->funcl();p->func2();return0;)運行此程序,屏幕上將顯示輸出OA、B1B2B、A1A2C、B1A2D、A1B2本題考查的是派生類。派生類B由菸類A公有繼承而來。調用p->funcl();后,執行派生類B的函數voidfunclO:調用p-”unc2();后,執行基類的困數voidfunc2(),因為虛擬函數是根據對象的實際類型調用,非虛擬函數是根據指針類型調用。故通過指針p調用func2時將直接調用基類中的voidfunc2()。 故本題答案為C。.if語句的語法格式可描述為:格式1:if《條件>)<語句>或 格式2:if(<條件>)<語句l>else<語句2>關于上面的語法格式,下列表述中錯誤的是0A、〈條件>部分可以是一個if語句,例如if(if(a==0)…)…B、〈語句>部分可以是一個if語句,例如if(…)if(…)…C、如果在〈條件>前加上邏輯非運算符!并交換〈語句1>和〈語句2>的位置,語句功能不變D、〈語句>部分可以是一個循環語句,例如if(…)while(…)???本題考查的是if語句.if為美鍵字,(條件》通常是一個表達式;if子句和else子句可以是任何類型的語句,當然也可以是if…else語句本身和while語句.if…else語句的基本執行過程是:首先計算〈條件》的值,如果此值不為0("真”),則執行〈語句1>,然

后忽略<語句2>,而去執行if語句之后的下?條語句;如果此值為0("假”),則執行〈語句2>,然后忽略<語句1》,然后繼續執行if語句之后的下一條語句。 故木題答案為A。.下列語句中,錯誤的是。A、constintbuffer=256; B、constdouble*point;C、intconstbuffer=256; D、double*constpoint;本題考查的是符號常量定義。constintbuffer=256;〃聲明常量bufferconstdouble*point; 〃聲明常量指針*point,*point不可變,但point的值可以改變intconstbuffer=256;〃聲明常量bufferdouble*constpoint; 〃聲明的point是常量,*point可變,但point的值不可以改變,point不是外部的,必須在聲明初始化常量對象。可改為:doubleaa=123.45;double*constpoint=&aa;故本題答案為D。.關于運算符重載,下列表述中正確的是oA、C++已有的任何運算符都可以重載B、運算符函數的返回類型不能聲明為基本數據類型C、在類型轉換符函數的定義中不需要聲明返回類型D、可以通過運算符重載來創建C++中原來沒有的運算符本題考查的是運算符重載。運算符重載是針對C++中原有的運算符進行的,不可能通過重載創造出新的運算符,故選項D錯誤。除了.、.*、->*、::、?:這5個運算符外,其它運算符都可以重載,故選項A錯誤。運算符函數的返回類型可以聲明為基本數據類型,故選項B錯誤。在近載類型轉換符時,由于運算符本身C經表示出返回值類型,因此不需要返回值類型的聲明。 故本題答案為C。.關于在調用模板函數時模板實參的使用,卜.列敘述正確的是。A、對于虛擬類型參數所對應的模板實參,如果能從模板函數的實參中獲得相同的信息,則都可以省略B、對于虛擬類型參數所對應的模板實參,如果他們是參數表中的最后的若干參數,則都可以省略C、對于虛擬類型參數所對應的模板實參,若能夠省略則必須省略D、對于常規參數所對應的模板實參,任何情況下都不能省略本題考簧的是函數模板中模板實參的省略。對于虛擬類型參數所對應的模板實參,如果從模板函數的實參表中獲得的信息已經能夠判定其中部分或全部虛擬類型參數,而且它們又正好是參數表中最后的若干參數,則模板實參表中的那幾個參數可以省略。反之,對于某個模板實參,如果從模板函數的實參表中無法獲得相同的信息,就不能省略:或者雖然能夠獲得同樣的信息,但在它后面還仃不能省略的實參,則其自身還是不能省略,故選項A和B錯誤。對于虛擬類型參數所對應的模板實參,若能夠省略可以省略,也可以不省略,故選項C錯誤.常規參數的信息無法從模板函數的實參表中獲得,因此在調用時必須顯式的說明. 故本題答案為D。.若有下面的函數調用:fun(a+b,3,raax(n-1,b))則fun的實參個數是.A、3B、4C、5D、6本題考查的是函數的調用。在C++中,〈形參列表>是由逗號分開的,分別說明函數的各個參數。在fun()函數中它包括3個形參,a+b,3和mx(n-l,b);當調用一個函數時,實參與形參?對?地匹配,所以實參個數也是3個。故本題答案為A。

.下列有關內聯函數的敘述中,正確的是。A、內聯函數在調用時發生控制轉移B、內聯函數必須通過關鍵字inline來定義C、內聯函數是通過編譯器來實現的D、內聯函數函數體的最后一條語句必須是return語句木題考查的是內聯函數。在C++中使用inline關鍵字來定義內聯函數。iniine關鍵字放在函數定義中函數類型之前。不過編譯器會將在類的說明部分定義的任何函數都認定為內聯函數,即使它們沒有inline說明。一個內聯函數可以有,也可以沒有return語句。內聯函數在程序執行時并不產生實際函數調用,而是在函數調用處將函數代碼展開執行。內聯函數是通過編譯器來實現的。 故本題答案為C。.在公有繼承的情況下,允許派生類直接訪問的基類成員包括 一A、公有成員B、公有成員和保護成員C、公有成員、保護成員和私有成員D、保護成員本題考查的是派生類。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。此時派生類對基類中各成員的訪問能力與繼承方式無關,但繼承方式將影響基類成員在派生類中的訪問控制屬性。故木題答案為B。.有如下程序:#include<iostream>usingnamespacestd;classObj{staticinti;public:ObjO{i++;}、Obj(){—;}staticintgetVal(){returni;});intObj::i=0;voidf(){Objob2;cout<<ob2.getVal();}intmain(){Objobi;f();0bj*ob3=newObj;cout<<ob3->getVal();deleteob3;cout<<Obj::getVal();return0;)程序的輸出結果是。A、232B、231C、222D、221本題主要考查了C++中類的價態成員。由于i是類Obj的靜態成員,該成員被類的所有實例共享。當定義obi時,系統自動調用構造函數Obj(),i的值將加1;調用函數£()時,在定義ob2時系統會自動調用構造函數Obj(),i的值將再加1;調用ob2.getVal();后,將i的值輸出,輸出值為2;當調用函數f()即將結束時,系統自動調用析構函數、Obj(),i的值將減1;當定義ob3時,系統自動調用構造函數Obj(),i的值將加1,調用cout〈<ob3->getVal0;后,將i的值輸出,輸出值為2;調用deleteob3后將執行Obj的析構函數、Ob_j(),執行后,i的值將減1,Obj::getVal()為類的一個靜態成員函數,其作用是返回私有靜態成員變量i的值1。 故本題答案為D。.下列有關繼承和派生的敘述中,正確的是 .A、如果一個派生類私有繼承其基類,則該派生類中的成員不能訪問基類的保護成員B、派生類的成員函數可以訪問基類的所有成員 C、基類對象可以賦值給派生類對象D、如果派生類沒有實現基類的?個純虛函數,則該派生類是?個抽象類.下列情況中,不會調用拷貝構造函數的是.A、用一個對象去初始化同一類的另一個新對象時B、將類的一個時象賦值給該類的另一個對象時C、函數的形參是類的對象,調用函數進行形參和實參結合時D、函數的返回值是類的對象,函數執行返回調用時本題考查的是拷貝構造函數。拷貝構造函數通常在以下3種情況下會被調用:(1)用類的一個已知的時象去初始化該類的另一個正在創建的對象。(2)采用傳值調用方式時,對象作為函數實參傳遞給函數形參.(3)對象作為函數返回值。故本題答案為B。.有如下程序#include<iostream>#include<iomanip>usingnamespacestd;intmainO{cout<<setprecision(3)?fixed?setfill(**')<<setw(8);cout?12.345??34.567;return0;若程序的輸出是: **12.345**34.567則程序中下劃線處遺漏的操作符是oA、setprecisionB、fixedC、setfill('*')D、setw(8)本題考杏的是輸入輸出寬度的控制和輸出精度的控制。setw(intn);設置輸入輸出的寬度。setprecision(intn);設置浮點數的精度(有效位數或小數位數)。setfill(charc);設置填充字符。由程序可以看出,本題設置小數的輸出寬度為8,小數位數為3。輸出數據時,如果數據寬度小于8,則空閑的位置用*填充。 故本題答案為D。.有如下的運算符重載函數定義:doubleoperator+(inti,intk){returndouble(i+k);}但定義有錯誤,對這個錯誤最準確的描述是OA、+只能作為成員函數重載,而這里的+是作為非成員函數重載的B、兩個int型參數的和也應該是int型,而這里將+的返回類型聲明為doubleC、沒有將運算符重載函數聲明為某個類的友元D、C++已經提供了求兩個int型數據之和的運算符+,不能再定義同樣的運算符本題考查的是運算符的重載。在C++中可以對用戶自定義類的運算符進行重載,但不能諸如int,char,double等內置類型運算符進行重載。 故本題答案為D。.有如下程序#include<iostream>usingnamespacestd;classBase{protected:BaseO{cout?*A*;}Base(charc){cout?c;)};classDerived:publicBase{public:Derived(charc){cout<<c;}};intmain(){Deriveddl(B);return0;}執行這個程序屏幕上將顯示輸出。A、BB、BAC、ABD、BB木題考查的是派生的構造函數和基類的構造函數的調用順序。建立.派生類對象時,構造函數的執行順序如卜.:(1)執行基類的構造函數。(2)執行成員對象的構造函數。(3)執行派生類的構造函數。派生類Derived由基類Base公有派生而來。在派生類構造函數聲明時系統會自動調用基類的缺省構造函數。調用Deriveddl(B);后,執行類Derived的構造函數的Derived(charc)定義,系統會自動調用基類的缺省構造函數BaseO,輸出字母A:再執行派生類的構造函數Derived(charc),輸出字母B。故本題答案為C。.關于關鍵字class和lypename,卜列表述中正確的是。A、程序中的typename都可以替換為class B、程序中的class都可以替換為typenameC、在模板形參表中只能用typename來聲明參數的類型D、在模板形參表中只能用class或typename來聲明參數的類型本題考查的是模板形參。模板形參分為兩種類型:虛擬類型參數和常規參數。虛擬類型參數須用lypename或class定義。常規參數用具體的類型修飾符(如int、double、char*等)定義,故選項C和D錯誤。在定義模板時,關鍵字typename與class可以互相交換,但在定義類時,只能使用class。typename僅僅用于定義模板,故程序中所有的typename都可以替換成class,但對于用于類定義的class不能使用typename來替換。 故本題答案為A。.在一個派生類對象結束其生命周期時 。A、先調用派生類的析構函數后調用基類的析構函數B、先調用基類的析構函數后調用派生類的析構函數C、如果基類沒有定義析構函數,則只調用派生類的析構函數D、如果派生類沒有定義析構函數,則只調用基類的析構函數本題考查的是派生類析構函數的執行順序。當主函數結束時,派生類析構函數的執行順序是:先執行派生類的析構函數,再執行成員對象的析構函數,最后執行基類的析構函數。 故本題答案為A。.有如下類定義:classMyBase{

intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetKOconst{returnk;}intgetjOconst{returnj;});編譯時發現有?處語法錯誤,對這個錯誤最準確的描述是. 。A、函數getK試圖訪問基類的私有成員變量kB、在類MyDerived的定義中,基類名MyBase前缺少關鍵字public、protected或privateC、類MyDerived缺少一個無參的構造函數D、類MyDerived的構造函數沒有對基類數據成員k進行初始化本題考在的是派生類訪問權限。在個派生類中,其成員由兩部分構成:?部分是從基類繼承得到的,另部分是自己定義的新成員,所有這些成員仍然分為公有、私有和保護三種訪問屬性。其中,從基類繼承下來的全部成員構成派生類的基類部分,這部分的私有成員是派生類不能宜接訪問的,公有成員和保護成員則是派生類可以直接訪問的。故本題答案為A。.有如下程序#include<iostream>#include<iomanip>usingnamespacestd;classMyClass{ public:MyClass(){cout<<*A,;}MyClass(charc){cout?c;}'MyClassOfcout?'B';}};intmain(){MyClasspl,*p2; p2=newMyClass(*X*);deletep2;return0;}執行這個程序屏幕上將顯示輸出oA、ABXB、ABXBC、AXBD、AXBB本題考查的是析構函數和構造函數。在定義對象P1時由系統自動調用構造函數MyClass。,輸出字母A:用new創建單個對象MyClass(X)時,要根據參數調用相應的構造函數MyClass(charc),輸出字母X;在執行delete時,系統會自動調用析構函數、MyClass。,輸出字母B,當對象的生存周期即將結束時系統會自動調用析構函數、MyClass(),輸出字母Bo 故本題答案為D。.以下關鍵字不能用來聲明類的訪問權限的是oA、publicB、staticC、protectedD、private本題考查的是類的定義。類定義的一般格式如下:class〈類名〉(public:〈成員函數或數據成員的說明》〃公有成員,外部接口〈成員函數或數據成員的說明》〃公有成員,外部接口protected:<數據成員或成員函數的說明〉 〃保護成員private:〈數據成員或成員函數的說明) 〃私有成員};關鍵字public、private和protected稱為訪問權限修飾符,他們限制了類成員的訪問控制范圍。故本題答案為B。.有如下程序#include<iostream>usingnamespacestd;inti=l;classFun(pubIic:staticinti;intvalue0{returni_l;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfunl;constFunfun2;return0;)若程序的輸出結果是:123則程序中下劃線處遺漏的語句是OA、cout?funl.value()?Fun::i?fun2.valueO;B、cout?Fun::i<<funl.value0?fun2.valueO;C、cout?funl.value()?fun2.value()?Fun::i;D、cout?fun2.value()?Fun::i<<funl.value();本題主要考查了常對象的?些概念。由于i是類Fun的郵態成員,該成員被類的所有實例共享。對于類中的靜態成員函數,可以通過“類名::函數名”的方法來調用,并且該函數只能訪問類中的崢態成員。在C++中,對于常對象的成員函數調用,將自動調用其常成員函數。在本題中執行funl.value。,將調用原型為"intvalue。;”的函數,i的值返回1;執行fun2.value。;,將調用原型為"intvalue()const;"的函數,i的值返何3;執行Fun::i時,調用類的靜態成員i,i的值返回2。 故本題答案為A。.有如下說明inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;則數值為9的表達式是。A、*p+9B、*(p+8)C、*p+=9D、p+8本題考查的是指針與數組。數組的下標是從0到數組的長度減1。*(p+i)是取數組的第i+1個元素,即下標為i的元素。因此*(p+8)

取數組的第9個元素,即元素9。 故本題答案為B..下列符號中,正確的C++標識符是.A、enumB、2bC、foo-9D,32本題考查的是標識符。標識符是一個以字母或卜劃線開頭的,由字母、數字、卜劃線組成的字符串。標識符不能與任意一個關鍵字同名. 故本題答案為D。.下列關于輸入流類成員函數getlineO的描述中,錯誤的是.A,該函數是用來讀取鍵盤輸入的字符串的 B、該函數讀取的字符串長度是受限制的C、該函數讀取字符串時,遇到終止符便停止D、該函數讀取字符串時,可以包含空格本題考查的是文件流的輸入輸出。函數getline(char_type*s,streamsizen,char_typedelim)的作用是從當前位置開始提取字符存入s所指向的具有n各字節的字符空間。字符的提取與存儲在遇到卜列情況時停止:(1)已提取并存儲了nT個字符;(2)到流尾,無字符可提取;(3)下一個要提取的字符等于結束標志delim.故本題答案為B。.按"先進后出"原則組織數據的數據結構是o標準答案為:棧棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。:者的區別是:棧只允許在表的一端進行插入或刪除操作,是種“先進后出''的線性表;而隊列只允許在表的端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表。.下列軟件系統結構圖的寬度為。標準答案為:3或三軟件系統結構圖的寬度:整體控制跨度(最大模塊數的層)的表示..的任務是診斷和改正程序中的錯誤。標準答案為:程序調試或調試程序:調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于一定的調試工具去找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發階段。.一個關系表的行稱為。標準答案為:元組或記錄設計數據庫的目的實質上是設計出滿足實際應用需求的實際關系模型;關系中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性,對應存儲文件中的字段。.數據結構分為線性結構和非線性結構,帶鏈的隊列屬丁。標準答案為:線性結構與棧類似,隊列也是線性表,也可以采用鏈式存儲結構。.創建對象數組時,對數組的每一個元素都將調用一次構造函數,如果沒有顯式給出數組元素的初值,

則調用缺省構造函數。下列程序涉及到對象數組的創建和單個對象的創建,其輸出結果是一 一。#include<iostream>usingnamespacestd;classFoo{public:Foo(intx){cout?,A);}Foo(){}};intmainO(Foof[3],g(3);return0;)標準答案為:A木題考查的是類的對象數組和成員對象。從程序可以看出f[3]是類Foo的一個對象數組,因為f[3]沒有顯式的給定初值,所以系統自動調用缺省構造函數Foo():在定義類Foo的對象g(3)時,執行相應的構造函數Foo(intx),輸出字母A。.插入排序算法的主要思想是:每次從未排序序列中取出的一個數據,插入到已排序序列中的正確位置。InserlSort類的成員函數sort。實現了插入排序算法。請將畫線處缺失的部分補充完整。classInsertSort{public:InsertSort(int*aO,intnO):a(a0),n(n0){}//參數aO是某數組首地址,n是數組元素個數voidsort0{〃此函數假設已排序序列初始化狀態只包含a[0],未排序序列初始為a[l]…a[nT]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用于存放數組首地址,n用于存放數組元素個數);標準答案為:j=i本題考查的是插入排序。在Sort函數中,實現函數的插入排序算法,若隊列中已有i個數,則向其中插入第i+1個數時,依次與從下標為iT到下標為0的數比較,如果后面的數小于前面的數,則交換這兩個數,否則說明該數已排好序,直接跳出內層循環,故此空應填j=i。.如果不使用多態機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。下列程序沒有使用多態機制,其輸出結果是.#include<iostream>usingnamespacestd;classBase{publie:voidprintO{cout<<'B';}};classDerived:publicBase{public:voidprint(){cout?,D*;}};intmain()(Derived*pd=newDerivedO;Base*pb=pd;pb->print();pd->print();deletepd;return0;)標準答案為:BD本題考查的是派生類。派生類Derived由基類Base公有繼承而來,是基類的子類型.調用pb->print();后,執行基類的函數voidprint。,因為盡管pb的函數print。可以對類Base的公有派生類Derived的對象pd進行操作,但是只能使用從基類Base中繼承的成員;調用pd->print();后,執行派生類的函數voidprintO..若有定義語句:int*a,b;,則變量b的數據類型是.標準答案為:整型或int本題考查的是變量的定義.int*a,b;把a定義為一個int類型的指針:把b定義為一個整型變量。.在聲明派生類時,如果不顯式地給出繼承方式,缺省的類繼承方式是私有繼承private。已知有如下類定義:classeBase{protected:voidfun(){}};classDerived:Base{};則Base類中的成員函數fun(),在Derived類中的訪問權限是。(注意:要求填寫private、protected或public中的一項)。標準答案為:private.下列程序的輸出結果是o#include<iostream>usingnamespacestd;classA{inta;publie:A():a(9){}virtualvoidprint()const{cout<<a:};};classB:publieA{charb;publie:B(){b='S';}voidprintOconst{cout?b;)};voidshow(A&x){x.print();}intmain(){Adl,*p;B62;p=&d2;dl.printO:d2.printO;p->print();show(dl);show(d2);return0;)標準答案為:9SS9S本題主要考杏了缺省構造函數。在dl、d2定義時分別調用它們的構造函數。調用dl.print。;后,執行類A的virtualvoidprintO函數;調用d2.printO;后,執行派生類B的構造函數voidprint(生調用p->print();后,執行執行派生類B的構造函數voidprint0:調用show(dl);后,調用函數sho*(A&x),再調用類A的virtualvoidprint0函數:調用show(d2);后,調用函數show(A&x),再調用派生類B的構造函數voidprintO..已知遞歸函數f的定義如下:intf(intn){if(n<=l)return1;〃遞歸結束情況elsereturnn*f(n-2);〃遞歸}則函數調用語句f(5)的返回值是 。標準答案為:15本題主要考查了遞力算法。函數每次將f(n)的值轉換成相應的關系式n*f(n-2),直到f(l)時為止。所以f(5)=5*f(5-2)=5*3*f(1)=5*3*1=15..已知數組a中的元素個數為n,卜一列語句的作用是將卜一標為i的元素移動到卜標為i-1的單元,其中K=i<no例如,當n=4,a中原有的數據為1,2,3,4時,則移動后a中元素變為2,3,4,4。請將語句補充兀%:for(inti=0;i<n-l;i++)a[i]=a[];標準答案為:i+1或1+1本題考查循環的基本應用.解題思路為:循環條件是循環的結果是把將下標為i的元素移動到下標為iT的單元,即a[i+l]的值賦給a[i],所以答案是i+L.己知下列程序的輸出結果是42,請將畫線處缺失的部分補充完整。#include<iostream>usingnamespacestd;classFoo{intvalue;public:Foo0:value(0){}voidsetValue(intvalue){=value;} 〃給Foo的數據成員value賦值voidprint(){cout?value;});intmain()(Foof;f.setValue(42);f.print();return0;)標準答案為:this->value或Foo::value或(*this).value本題考查的是this指針。this指針,它是成員函數的所屬對象的指針,它指向類對象的地址。本題要輸出42,也就是要把f.setValue(42);中的42賦值給Foo的數據成員value,因此橫線處缺少的是給Foo的數據成員value賦值的語句,所以答案為this->value或Foo::value。50.在MyClass類的定義中,對賦值運算符二進行重載。請將畫線處缺失的部分補充完整。MyClass::operator=(constMyClass&rhs)(if(this==&rhs)return*this;value=rhs.value;return*this;)標準答案為:MyClass&本題考查的是運算符的重載。一個類如果要重載運算符。通常也就需要定義自己特有的拷貝構造函數。可以在類體中增加:(const&operatorMyClassArhs);然后在MyClass的類體外給出它的完整定義:MyClass&MyClass::operator=(constMyClass&rhs){……}因此在MyClass類的定義中缺少MyClass&語句。2007年4月考試真題(第25次).下列敘述中正確的是。A、算法的效率只與問題的規模有關,而與數據的存儲結構無關B、算法的時間復雜度是指執行算法所需要的計算工作量C、數據的邏輯結構與存儲結構是一一對應的D,算法的時間復雜度與空間復雜度一定相關我們通常用時間復雜度和空間復雜度來衡量算法效率,嵬法的時間復雜度是指執行算法所需要的計算工作鼠;算法所執行的基本運算次數與問題的規模有關,而一個算法的空間復雜度,一般是指執行這個算法所需要的內存空間;一般來說,一種數據的邏輯結構根據需要可以表示成多種存儲結構。故本題答案為B。2.對下列二叉樹

A進行前序遍歷的結果為A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ在先左后右的原則下,根據訪問根結點的次序,二義樹的遍歷可以分為3種:前序遍歷、中序遍歷和后序遍歷。前序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。 故本題答案為C。.下列敘述中正確的是.A,軟件測試的主要目的是發現程序中的錯誤B、軟件測試的主要目的是確定程序中錯誤的位置C、為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作D、軟件測試是證明軟件沒有錯誤關于軟件測試的目的,GrenfordJ.Myers在(TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發現錯誤而執行程序的過程:一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的用例;一個成功的測試是發現了至今尚未發現的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發現程序中的錯誤。故本題答案為A。.某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為.A、n+1B、n-1C、2nD、n/2二叉樹的性質3:在任意-?棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。木題中度為2的結點數為n,故葉子結點數為n+1個.故本題答案為A..下面選項中不屬于面向對象程序設計特征的是.A,繼承性B、多態性C、類比性D、封裝性對象是由數據和容許的操作組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳遞消息互相聯系,以模擬現實世界中不同事物彼此之間的聯系。面向對象技術有三個重要特性,封裝性、繼承性和多態性。故本題答案為C。.下列對隊列的敘述正確的是.A、隊列屬于非線性表 B、隊列按"先進后出”原則組織數據C、隊列在隊尾刪除數據 D、隊列按"先進先出”原則組織數據隊列是指允許在端進行插入、而在另?端進行刪除的線性表,允許插入的端稱為隊尾,允許刪除的端稱為隊頭.它乂稱為“先進先出"或"后進后出”的線性表,體現了"先來先服務”的原則。故本題答案為D。7.在結構化程序設計中,模塊劃分的原則是 。A、各模塊應包括盡量多的功能 B、各模塊的規模應盡量大C、各模塊之間的聯系應盡量緊密 D、模塊內具有高內聚度、模塊間具有低耦合度軟件設計中通常采用結構化設計方法,模塊的獨立程度是評價設計好壞的重要度量標準。耦合性與內聚性是模塊獨立性的兩個定性標準。內聚性是?個模塊內部各個元素間彼此結合的緊密程度的度量;耦合性是

模塊間互相連接的緊密程度的度量。一般較優秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利了提高模塊的獨立性。故木題答案為D。.下列敘述中錯誤的是.A、在數據庫系統中,數據的物理結構必須與邏輯結構一致B、數據庫技術的根本目標是要解決數據的共享問題C、數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫D、數據庫系統需要操作系統的支持數據庫系統具有數據獨立性的特點,數據獨立性一般分為物理獨立性與邏輯獨立性兩級。物理獨立性即是數據的物理結構的改變都不影響數據庫的邏輯結構;邏輯獨立性即數據庫總體邏輯結構的改變,不需要相應修改應用程序。所以,在數據系統中,數據的物理結構并不一定與邏輯結構一致。故本題答案為A。.在E-R圖中,用來表示實體之間聯系的圖形是A、矩形B、橢圓形C、菱形D、平行四邊形E-R圖中用矩形發示實體集,用橢圓表示屬性,用菱形發示聯系。故本題答案為C。.在下列關系運算中,不改變關系表中的屬性個數但能減少元組個數的是 一。A、并B、交C、投影D、笛卡兒乘積對關系數據庫進行查詢時,需要找到用戶感興趣的數據,這就需要對關系進行一定的關系運算。關系的基本運算有兩類:一類是傳統的集合運算(并、交、差),另一類是專門的美系運算(選擇、投影、連接).集合的并、交、差:設有兩個關系R和S,它們具有相同的結構,R和S的并是由屬于R和S,或者同時屬于R和S的所有元組成的集合,記作RUS;R和S的交是由既屬于R又屬于S的所有元組組成的集合,記作RCS;R和$的差是由屬于R但不屬于S的所有元組組成的集合,記作R-S.故本題答案為B。.有如下程序段:inti=0,j=l:TOC\o"1-5"\h\zint&r=i: // ①r=j: // ②int*p=&i; //③*p=&r; // ④其中會產生編譯錯誤的語句是.A、④B、③C、②D、①本題考查的是引用。&r是指一個指向整型變鼠的地址,p為一個指向整型變最的指針,*p則是一個整型變量,將地址賦值給整型變量是非法的。故本題答案為A。.使用輸入輸出操作符setw,可以控制.A、輸出精度 B、輸出寬度C、對齊方式D、填充字符本題考查的是輸入輸出操作符。使用輸入輸出操作符setw,可以控制輸入輸出寬度。故本題答案為B..若有如下類聲明classMyClass{public:MyClassO{cout?l;}};執行下列語句MyClassa,b[2],*p[2];以后,程序的輸出結果是.a、iib、inc、mid、mu本題考查的是對象數組。"MyClassa,b[2],*p[2]執行時,將初始化一個變量名為a的MyClass實例,其為"1”,然后又初始化一個含有兩個MyClass實例的數組,它將執行兩次MyClass的構造函數,輸出兩個"1”,對于P,它是一個含有2個指向MyClass類型的指針,它不會調用MyClass的構造函數。故本題答案為B。.有如下函數模板:template<classT>Tsquare(Tx){returnx*x;}其中T是oA、函數形參B、函數實參C、模板形參 D、模板實參本題考查的是函數模板格式。聲明一個函數模板格式是:template”模板形參表聲明>〉《函數聲明》其中<模板形參表聲明》是由一個或多個〈模板形參)組成(如果是多個需要用逗號隔開)。每個<模板形參》具有卜.面幾種形式:(l)lypename<參數名>(2)class(參數名〉(3)〈類型修飾〉〈參數名〉這里的<參數名》可以是任意的標識符。故本題答案為C。.有如下程序:#include<iostream>usingnamespacestd;classtest{private:inta;publie:test(){cout<<l,constructorH?endl;}test(inta){cout?a<<endl;}test(consttest&_test){a=_test.a;cout<<McopyconstruetorH?endl;}-test(){cout?**destructorM?endl;}};intmain(){testA(3);return0;)運行時輸出的結果是oA、3constructordestructorcopyconstructordestructorD、3destructor本題考查的是構造函數和析構函數。"testA(3);”利用整數3來初始化類型A的實例,它將調用構造函數test::test(inta);輸出"3”,當主函數結束后,將執行A的析構函數,輸出"destruetor"。故本題答案為D。.通過運算符重載,可以改變運算符原有的」A、操作數類型 B、操作數個數C、優先級D、結合性本題考查的是重載運算符.C++允許重載運算符,在重載運算符時,不能改變操作數的個數,優先級,結合性,但可以改變操作數的類型,但對于有些運算符是不允許重載的,如":等,有些則不建議重裁,如等。故本題答案為A。.執行下列語句段后,輸出字符"*"的個數是 .for(inti=50;i>l:—i)cout?A,48B、49C、50D、51本題考杏的是for循環語句。本程序的for語句中,循環控制變量i的初始值為50,條件表達式"i〉l"規定當i的值大于1時重復執行循環體;"一i”我示每循環次i的值減1。當i等于1的時候終止循環,此時循環次數為49次。故本題答案為B。.在語句cin>>data;中,cin是。A、C++的關鍵字 B、類名C、對象名D、函數名本題考查的是基本輸入/輸出流對象。C++程序的輸入輸出操作是通過標準庫中的輸入/輸出流對象來完成的。在頭文件iostream中定義了代表屏幕的標準輸出流對象coin和代表鍵盤的標準輸入流對象cin。由此可知cin是一個ioslream類型的對象。故本題答案為C。.有如下程序:#include<iostream>usingnamespacestd;intmainO{charstr[100],*p;cout?"Pleaseinputastring:";cin>>str;p=str;for(inti=0;*p!='\0,;p++,i++);cout?i<<endl;return0;)運行這個程序時,若輸入字符串為abedefgabed則輸出結果是。A、7B、12C、13D、100本題考杳的是流對象。在采用cin輸入字符串時,將以空格分割各字符串,因此在輸入"abedefgabce”,只耨"abedefg”賦值給str,而下面for循環的目的是計算該字符串的長度,不難得出該字符的長度為7。故本題答案為A..卜列關于派生類構造函數和析構函數的說法中,錯誤的是 .A、派生類的構造函數會隱含調用基類的構造函數B、如果基類中沒有缺省構造函數,那么派生類必須定義構造函數C、在建立派生類對象時,先調用基類的構造函數,再調用派生類的構造函數D、在銷毀派生類對象時,先調用基類的析構函數,再調用派生類的析構函數本題考查的是派生類構造函數和析構函數。在派生類實例化時,派生類的構造函數將隱式調用基類的構造函數,完成基類的初始化,如果基類沒有缺省構造函數,派生類必須顯式定義構造函數,以使得基類能夠調用基類的構造函數,以完成基類的初始化,在對象銷毀時,將首先執行派生類的析構函數,然后執行基類的析構函數。故本題答案為D。.下列函數模板的定義中,合法的是.template<typenameT>Tabs(Tx){returnx<0?-x:x;}templateclass<T>Tabs(Tx){returnx<0?-x:x;}templateT<classT>abs(Tx){returnx<0?-x:x;}templateTabs(Tx){returnx<0?-x:x;}本題考查的是函數模板格式。聲明一個函數模板格式是:template<〈模板形參表聲明〉》〈函數聲明)其中〈模板形參表聲明》是由?個多多個〈模板形參〉組成(如果是多個需要用逗號隔開)。每個(模板形參〉具有下面幾種形式:typename〈參數名)class〈參數名〉(3)〈類型修飾〉〈參數名〉這里的〈參數名〉可以是任意的標識符。 故本題答案為A..有如下程序:#include<iostream>usingnamespacestd;classPoint{public:staticintnumber;public:Point(){number++;}-Point(){number―;}};intPoint::number=0;voidmain(){Point*ptr;PointA,B;(Point*ptr_point=newPoint[3];ptr=ptr_point;)PointC;cout?Point::number<<endl;delete[]ptr;}運行時輸出的結果是.A,3B、4C、6D、7本題考查的是對象數組與靜態數據成員。在程序運行時,首先將靜態變量初始化為0,當實例化A、B時,將執行兩次構造函數,number的值將變為2,語句"ptr_point=newPoint[3]定義了?個長度為3的Point型數組,從而乂執行二次構造函數,number值為5,定義變量C時,再次執行Point的構造函數,最終number的值為6。 故木題答案為C.23.字面常量42、4.2、42L的數據類型分別是.A,long、double,intB、long,float,intC,int、double-,longD、int,float,long本題考杳的是數據類型。對于整型數,如不采用后綴說明符,默認為int類型,L表示長整型;對于浮點數,不加后綴標識符默認類型為double類型,對于單精度浮點數要加"F”后綴。 故本題答案為C..下列關于類定義的說法中,正確的是.A、類定義中包括數據成員和函數成員的聲明B、類成員的缺省訪問權限是保護的C、數據成員必須被聲明為私有的D、成員函數只能在類體外進行定義本題考杳的是類的格式。類的定義格式?般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含數據成員的說明和成員函數的說明。成員函數可以在類體外進行定義也可以在類體內進行。從訪問權限上來分,類的成員又分為:公有的(public),私有的(private)和保護的(protected)三類。類成員的缺省訪問權限是私有的. 故本題答案為A。.有如下函數定義:voidfunc(inta,int&b){a++;b++;}若執行代碼段:intx=0,y=l;func(x,y):則變量x和y的值分別是 。A,0和1B、1和1C、0和2 D、1和2本題考查的是函數調用。本題中定義了一個func函數,當調用func(x,y);函數時,形參a和b被初始化為實參x和y的引用,參數a為非引用類型,參數b為引用類型,在執行該函數時,對形參a的改變不會影響到實參,形參b的改變將會影響到實參,因此調用func函數后,形參變量a=l,b=2,實參變量x=0,y=2。 故本題答案為C。26.虛函數支持多態調用,一個基類的指針可以指向派生類的對象,而且通過這樣的指針調用虛函數時,被調用的是指針所指的實際對象的虛函數。而非函數不支持多態調用。有如下程序:#include<iostream>usingnamespacestd;classBase(public:virtualvoidf(){cout<<"f0+":}voidg(){cout?"g0+";});classDerived:publicBase{public:voidf(){cout?"f+":}voidg(){cout?"g+";}};intmain()Derivedd:Base*p=&d;p->f();p->g();return0;}運行時輸出的結果是0A、f+g+B、f0+g+C、f+g0+D、f0+g0+本題考查的是多態與虛擬函數。Derived::f()在基類中被定義為虛擬函數,故在執行p->f()時,將根據該指針所指對象的實際類型調用成員函數,而P是指向一個Derived類型的指針,故在調用時,將調用Derived::f(),輸出對于p->g(),由于g()沒有被定義成虛擬函數,將直接依據指針類型調用該成員函數,p是一個Base類的指針,故將調用Base::g(),從而輸出"g0+”,故本題輸出為"f+gO+J故本題答案為C。.下面程序中對一維坐標點類Point進行運算符重載^include<iostream>usingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;return*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;)intGetX0const{returnx;}private:intx;);intmain()(Pointa(10);cout?(++a).GetX();cout?a++.GetX();return0;)編譯和運行情況是OA、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯本題考查的是運算符重載。 對于++,一運算符有前置與后置兩種方式,在以成元函數方式重載該運算符時,對于前置運算符可以以通常的一元運算的方式進行重載,對于后置運算符,則需在參數列表中加一個輔助類型的參數,以便于前置運算符區別。本題的輸出結果為1111。 故本題答案為B。.下列字符串中,不可以用作C++標識符的是。A、y_2006B、_TEST_H C、ReturnD、switch本題考查的是C++標識符。 C++標識符是用字母、數字、下劃線組成的字符串。標識符不能與任何一個關鍵字同名,因此switch不能作為標識符。 故本題答案為D。30.有如下程序:#include<iostream>usingnamespacestd;classSample(friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1;returns.x*fun(Sample(s.xT));)intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<<sum;return0;)運行時輸出的結果是OA、120B、16C、154D、34本題考查的是友元函數。令funl(i)=fun(Sample(i));則i=0或i=l時,由于s.x<2,故funl(i)均返回1;當i>=2時,funl(i)=i*funl(i-l);故sum=funl(0)+funl(1)+funl(2)+funl(3)+funl(4)+funl(5)=1+l+2*funi(1)+3*funl(2)+4*funl(3)+5*funl(4)=0!+1!+2!+3!+4!+5!=1+1+2+6+24+120=154o 故本題答案為C。.如果不使用多態機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。有如下程序,沒有使用多態機制。#include<iostream>usingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<a?\*?b<<endl;});classDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;}voidshow(){cout<<c?\*?d<<endl;});intmain()(BaseBl(50,50),*pb;DerivedDI(10,20,30,40);pb=&Dl;pb->show();return0;}運行時輸出的結果是oA、10,20B、30,40C、20,30D、50,50本題考查的是繼承與多態。 由于函數show是非虛擬的,故其調用依據其指針類型決定,而pb是一個指向Base的指針,故在調用show時,將調用Base::show,輸出成員變量a,b,而pb是指向變量D1的,D1在實例化時,將基類中a,b初始化為10、20,故木題的輸出為10,20。故本題答案為A。.有如下程序:^include<iostream>usingnamespacestd;classA{public:staticinta;voidinitO{a=l;}A(inta=2){init0;a++;)};intA::a=0;Aobj;intmain(){cout<<obj.a;return0;}運行時輸出的結果是OA、0B>1C、2D、3本題考查的是靜態成員變量。由于定義了全局變量obj,它將導致執行A的構造函數,而A的構造函數調用了其成員函數init,該函數負責將成員變量(靜態)初始化為1,對于語句,其a是指構造函數的形參a,而不是成員變量a,它不會影響類的靜態成員值。 故本題答案為B。.有如下程序:#include<iostream>usingnamespacestd;classA{public:A(inti){x=i;}voiddispa(){cout<<x?private:intx;);classB:publicA{public:B(inti):A(i+10){x=i;}voiddispbO{dispa0;cout<<x?endl;}private:intx:);intmain()(Bb(2);b.dispbO;return0;}運行時輸出的結果是OA、10,2B、12,10C、12,2D、2,2本題考查的是類的繼承與實例化。"Bb(2):"以整數2實例化變量b,在執行B的構造函數時,以i+10即12去調用類B的父類的構造函數,從而將A::x初始化為12,然后將B::x賦值為2。在執行b.dispbO時,先調用了父類中dispa,輸出A::x,即12,再輸出B::x,即2,從而運行結果為"12,2"。 故本題答案為C。.下列有關繼承和派生的敘述中,正確的是oA、派生類不能訪問基類的保護成員 B、作為虛基類的類不能被實例化C、派生類應當向基類的構造函數傳遞參數 D、虛函數必須在派生類中市:新實現本題考查的是繼承和派生。派生類可以訪問基類中的保護、公有成員。當基類有默認構造函數時,派生類可以不必向某類傳遞參數,直接調用派生類的默認構造函數,僅純虛函數必需要在非抽象的子類中實現,虛基類不能被實例化。故本題答案為B。.為了取代C中帶參數的宏,在C++中使用.A、重載函數 B、內聯函數 C、遞歸函數 D、友元函數本題考查的是內聯函數。內聯函數就是小型函數,犧牲空間來節省函數調用的開銷,一般用作比較小的函數,即函數內部沒有循環、開關語句等。內聯函數被發明出來就是為了取代C中的宏。 故本題答案為B。.軟件生命周期可分為多個階段,一般分為定義階段、開發階段和維護階段。編碼和測試屬于階段。軟件生命周期分為軟件定義、軟件開發及軟件運行維護3個階段。本題中軟件編內和軟件測試都屬于軟件開發階段;維護是軟件生命周期的最后個階段,也是持續時間最長,花費代價最大的個階段,軟件工程學的一個目的就是提高軟件的可維護性,降低維護的代價。.軟件測試分為白箱(盒)測試和黑箱(盒)測試。等價類劃分法屬于測試。軟件測試的方法有3種:動態測試、靜態測試和正確性證明.設計測試實例的方法一般有兩類:黑盒測試方法和白盒測試方法。黑盒測試方法主要有:等價類劃分法、邊界值分析法、錯誤推測法、因果圖等,主要用于軟件確認測試。

.在結構化分析使用的數據流圖(DFD)中,利用對其中的圖形元素進行確切解釋。數據字典是結構化分析方法的核心。數據字典是對所有與系統相關的數據元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶和系統分析員對了輸入、輸出、存儲成分和中間計算結果有共同的理解。數據字典把不同的需求文檔和分析模型緊密地結合在一起,與各模型的圖形表示配合,能清楚地表達數據處理的要求。概括地說。數據字典的作用是對DFD中出現的被命名的圖形元素的確切解釋。.在深度為7的滿:叉樹中,度為2的結點個數為。所謂滿二義樹是指這樣的?種二又樹:除最后?層外,每層上的所有結點都有兩個子結點.這就是說,在滿二叉樹中,每一層上的結點數都達到最大值,即在滿二叉樹的第K層上有2卜1個結點,且深度為m的滿二叉樹有2111T個結點。在滿二叉樹中,最后一層的結點個數就是葉子結點的個數,本題中深度為7,故葉子結點數為27-1=127,且第七層的葉子結點數為27T=64。由二叉樹的性質3:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個,可知:本題中度為2的結點數為127-64=63個。.在數據庫系統中,實現各種數據管理功能的核心軟件稱為。數據庫管理系統是數據庫的機構,它是一種系統軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等.數據庫管理系統是數據庫系統的核心。.已知一個函數的原型是:intfn(doublex);若要以5.27為實參調用該函數,應使用表達式o函數的調用形式為:<函數名)(<實參表))當調用一個函數時,其實參的個數、類型及排列次序必須與函數定義時的形參一致,也就是說實參與形參應該一對一地匹配。.有如下程序:#include<iostream>usingnamespacestd;classDA{intk;public:DA(intx=l):k(x){}?DA(){cout?k;}};intmain(){DAd[]={DA(3),DA(3),DA(3)}:DA*p=newDA[2];delete[]p;return0;)這個程序的輸出結果是°定義DA型數組d時,將導致DA的構造函數被執行三次,每次執行時,其傳入參數為3,定義DA指針p時,將執行兩次默認構函數,其參數為1,執行"delete[]p”時,將執行DA的構造函數,輸出p[0].k,p[l].k(兩者均為1),在程序運行結束后,將釋放局部變量,從而導致數組d中的三個元素被析構,輸出中的a值(均為3)。 標準答案為:11333.有如下程序:

#include<iostream>usingnamespacestd;classCA{public:CAO{cout?'A';});classCB:privateCA(public:CBO{cout?'B*;)};intmain(){CAa;CBb;return0;)這個程序的輸出結果是O"CA語句將導致CA的構造函數被執行,輸出"A","CAb;〃語句將導致CB的構造函數執行,由于CB私有繼承CA,故在執行CB的構造函數前,先執行CA的構造函數,輸出“A”,然后執行CB的構造函數,輸出"B"。 標準答案為:AAB.用來派生新類的類稱為,而派生出的新類稱為它的子類或派生類。當類A繼承自或派生于類B時,類B稱為類A的基類或父類,類A稱為類B的子類或派生類。.若要訪問指針變量p所指向的數據,應使用表達式。本題考查的是指針的應用。 要訪問一個指針所指向的數據,應該用*運算符。.C++中只有兩個邏輯常量:true和。本題考查的是邏輯變量。 在C++中引進了兩個邏輯變量,true與false。.如下類定義中包含了構造函數和拷貝構造函數的原型聲明,請在橫線處填寫正確的內容,使拷貝構造函數的聲明完整。classmyClass{private:intdata;public:myClass(intvalue);〃構造函數myClass(constanotherObject);〃拷貝構造函數}拷貝函數的參數必須為其所對應類的引用類型。要實現拷貝,首先要保證前后類型一致,其次,不能為非引用類型,否則將遞歸調用拷貝構造函數。 標準答案為:myClass&.若將一個二元運算符重載為類的成員函數,其形參個數應該是個。函數可以以成員函數與友元函數這兩種不同的方式來重載。對于二元運算符來說,當采用成員函數方式重我時,其實參的第?個參數為該對象本身,即a.operatorx(b)等價于axb,當采用友元函數重載時,必須要具有兩個參數。peratorx(a,b)等價于axb。(其中x表示運算符)。標準答案為:一或1.C++語言中的多態性分為編譯時的多態性和時的多態性。C++的多態表現在編譯時多態與運行時多態兩個方面,所謂編譯時多態是指源代碼在編譯時必須能夠確定要執行的代碼,如函數的重載,模板等,在編譯時必須要知道函數的參數類型,模板的實參等,以使編譯器生成唯?的內部標識,對于運行時多態,在程序運行時,根據程序當前的數據環境選擇執行不同的代碼,如虛擬函數。.有如下定義:classMA{intvalue;public:MA(intn=0):value(n){});MA*ta,tb;其中MA類的對象名標識符是ota是一個指向MA對象的指針,它不是對象名標識,tb是一個MA對象的標識。2007年9月考試真題(第26次).下列敘述中正確的是.A、數據庫系統是一個獨立的系統,不需要操作系統的支持B,數據庫技術的根本目標是要

溫馨提示

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

評論

0/150

提交評論