全國計算機二級C考題真題及答案_第1頁
全國計算機二級C考題真題及答案_第2頁
全國計算機二級C考題真題及答案_第3頁
全國計算機二級C考題真題及答案_第4頁
全國計算機二級C考題真題及答案_第5頁
已閱讀5頁,還剩151頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2006年9月考試真題(第24次)

i.從工程管理角度,軟件設計一般分為兩步完成,它們是____?

A、概要設計與詳細設計B、過程控制C、軟件結構設計與數據設計

D、程序設計與數據設計

從工程管理角度看,軟件設計分為兩步完成:概要設計與詳細設計。概要設計(又稱結構設計)將軟件需求轉化為軟件體

系結構、確定系統級接口、全局數據結構或數據庫模式;詳細設計確立每個模塊的實現算法和局部數據結構,用適當方法表示算

法和數據結構的細節。故本題答案為A。

2.數據庫技術的根本目標是解決數據的。

A、存儲問題B、共享問題C、安全問題D、保護問題

由于數據的集成性使得數據可為多個應用所共享,特別是在網絡發達的今天,數據庫與網絡的結合擴大了數據關系的應用

范圍。數據的共享本身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。因

此,數據庫設計的根本目標是要解決數據共享問題。

故本題答案為B。

3.在數據庫系統中,用戶所見數據模式為___。

A、概念模式B、外模式C、內模式D、物理模式

數據庫管理系統的三級模式結構由外模式、模式和內模式組成。外模式又稱為子模式,或用戶模式,是指數據庫用戶所看

到的數據結構,是用戶看到的數據視圖。模式又稱為邏輯模式,是數據庫中對全體數據的邏輯結構和特性的描述,是所有用戶所

見到的數據視圖的總和。外模式是模式的一部分。內模式又稱為存儲模式或物理模式,是指數據在數據庫系統內的存儲介質上的

表示,即對數據的物理結構和存取方式的描述。故本題答案為B。

4.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數為。

A、63B、64C、6D、7

在進行順序查找過程中,如果線性衣中的第1個元素就是被查找元素,則只需做?次比較就查找成功,查找效率最高;但

如果被查找的元素是線性表中的最后個元素,或者被查找的元索根本就不在線性表中,則為了查找這個元素需要與線性表中所

有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故

本題答案為B。

5.對下列二叉樹

進行中序遍歷的結果是。

A、ACBDFEGB、ACBDFGEC、ABDCGEFD、FCADBEG

二叉樹的中序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹:

并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。

故本題答案為鼠

6.下列選項中不屬于軟件生命周期開發階段任務的是o

A、軟件測試B、概要設計C、軟件維護D、詳細設計

軟件生命周期分為軟件定義、軟件開發及軟件維護。其中軟件開發階段的任務中軟件設計階段可分解成概要設計階段和詳

細設計階段;軟件維護不屬于軟件開發階段。故本題答案為C。

7.下列敘述中正確的是?

A、一個算法的空間復雜度大,則其時間復雜度也必定大

B、一個算法的空間復雜度大,則其時間復雜度必定小

C、一個算法的時間復雜度大,則其空間復雜度必定小D、上述三種說法都不對

算法的復雜度主要包括時間復雜度和空間復雜度:算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度:算法

的時間復雜度是指執行算法所需要的計算工作量,即算法執行過程中所需要的基本運算次數,為了能夠比較客觀地反映出一個算

法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實

現過程中的許多細節無關。為此,可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量。故本題答案為D。

8.下列選項中不符合良好程序設計風格的是。

A、源程序要文檔化B、數據說明的次序要規范化C、避免濫用goto語句

D、模塊設計要保證高耦合、高內聚

良好的程序設計風格可以使程序結構清晰合理,使程序代碼便于維護,因此,程序設計風格對保證程序的質量很重要。主

要應注意和考慮下述一些因素:1、源程序耍文檔化;2、數據說明的次序要規范化;3、語句的結構應該簡單直接,不應該為提高

效率而把語句復雜化,避免濫用goto語句。模塊設計要保證低耦合、高內聚。故本題答案為D。

9.設有如下三個關系表

故本題答案為C。

10.數據庫設計的四個階段是:需求分析、概念設計、邏輯設計和

A、編碼設計B、測試階段C、運行階段D、物理設計

數據庫設計分為以下6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數據庫運行和

維護階段。故本題答案為D.

11.下列運算符不能重載為友元函數的是。

A、=()□->B、+-++—C>><>=<=D、+=-=*=/=

本題考查的是運算符的重載。

在C++中,可以通過兩種方式對運算符進行重載。一種是類成員函數的方式、一種是友元函數的方式。=0[]->以及所有的

類型轉換運算符只能作為成員函數重投,不能重載為友元函數。故本題答案為A。

12.語句ofstreamf("SALARY.DAT",ios_base::app);的功能是建立流對象f,并試圖打開文件SALARY.DAT與f關聯,而且____.

A、若文件存在,將其置為空文件;若文件不存在,打開失敗

B、若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件

C、若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗

D、若文件存在,打開失敗;若文件不存在,建立一個新文件

本題考查的是文件流的輸出。

ofstreamf("SALARY.DAT^,iosbase::app);

是以ios_base::app方式打開文件,若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件。故本題答

案為B。

13.有如下程序

#include<iostream>usingnamespacestd;

classA{public:virtualvoidfunclO{cout<<"Al";}voidfunc2(){cout?"A2";)

);

classB:publicA{public:voidfunclO{cout?"Bl";}voidfunc2(){cout<<"B2";)

);

intmainO{A*p=newB;p->funcl0;p->func2();return0;}

運行此程序,屏幕上將顯示輸出。

A、B1B2B、A1A2C、B1A2D、A1B2

本題考查的是派生類。

派生類B由基類A公有繼承而來。調用p->funcl();后,執行派生類B的函數voidfuncl();調用p-〉func2();后,執行基類的函

數voidfunc2(),因為虛擬函數是根據對象的實際類型調用,非虛擬函數是根據指針類型調用。故通過指針p調用func2時將直接

調用基類中的voidfunc2()o故本題答案為C。

14.if語句的語法格式可描述為:

格式1:if(〈條件>)〈語句>

或格式2:if(〈條件>)<語句l>else〈語句2〉

關于上面的語法格式,下列表述中錯誤的是_____O

A、〈條件>部分可以是一個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(〃真〃),則執行〈語句D,然后忽略《語句2》,而去

執行if語句之后的下一條語句;如果此值為0("假〃),則執行〈語句2〉,然后忽略《語句1>,然后繼續執行if語句之后的下一條語

句。故本題答案為A。

15.下列語句中,錯誤的是___o

A、constintbuffer=256;B、constdouble*point;

C、intconstbuffer=256;D、double*constpoint;

本題考查的是符號常量定義。

constintbuffer=256;〃聲明常量buffer

constdouble*point;〃聲明常量指針*point,*point不可變,但point的值可以改變

intconstbuffer=256;〃聲明常量buffer

double*constpoint;〃聲明的point是常量,*point可變,但point的值不可以改變,point不是外部的,必須在聲明初

始化常量對象。可改為:

doubleaa=123.45;

double*constpoint=&aa;

故本題答案為D。

16.關于運算符重載,下列表述中正確的是<,

A、C++已有的任何運算符都可以重載B、運算符函數的返回類型不能聲明為基本數據類型

C、在類型轉換符函數的定義中不需要聲明返回類型

D、可以通過運算符重載來創建C++中原來沒有的運算符

本題考查的是運算符重載。

運算符重載是針對C++中原有的運算符進行的,不可能通過重載創造出新的運算符,故選項D錯誤。除了.、.*、->*、::、?:

這5個運算符外,其它運算符都可以重載,故選項A錯誤。運算符函數的返回類型可以聲明為基本數據類型,故選項B錯誤。在重載

類型轉換符時,由于運算符本身已經表示出返回值類型,因此不需要返回值類型的聲明。故本題答案為C。

17.關于在調用模板函數時模板實參的使用,下列敘述正確的是。

A、對于虛擬類型參數所對應的模板實參,如果能從模板函數的實參中獲得相同的信息,則都可以省略

B、對于虛擬類型參數所對應的模板實參,如果他們是參數表中的最后的若干參數,則都可以省略

C、對于虛擬類型參數所對應的模板實參,若能夠省略則必須省略

D、對于常規參數所對應的模板實參,任何情況下都不能省略

本題考查的是函數模板中模板實參的省略。

對于虛擬類型參數所對應的模板實參,如果從模板函數的實參表中獲得的信息已經能夠判定其中部分或全部虛擬類型參數,

而且它們又正好是參數表中最后的若干參數,則模板實參表中的那幾個參數可以省略。反之,對于某個模板實參,如果從模板函

數的實參表中無法獲得相同的信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有不能省略的實參,則其自身還

是不能省略,故選項A和B錯誤。對于虛擬類型參數所對應的模板實參,若能夠省略可以省略,也可以不省略,故選項C錯誤。常規

參數的信息無法從模板函數的實參表中獲得,因此在調用時必須顯式的說明。故本題答案為D。

18.若有下面的函數調用:

fun(a+b,3,max(n-l,b))

貝ijfun的實參個數是。A、3B、4C、5D、6

本題考查的是函數的調用。

在C++中,〈形參列表》是由逗號分開的,分別說明函數的各個參數。在fun()函數中它包括3個形參,a+b,3和max(n-l,b);當

調用一個函數時,實參與形參一對一地匹配,所以實參個數也是3個。故本題答案為A。

19.下列有關內聯函數的敘述中,正確的是。

A、內聯函數在調用時發生控制轉移B、內聯函數必須通過關鍵字inline來定義

C、內聯函數是通過編譯器來實現的I)、內聯函數函數體的最后一條語句必須是return語句

本題考查的是內聯函數。

在C++中使用inline關鍵字來定義內聯函數。inline關鍵字放在函數定義中函數類型之前。不過編譯器會將在類的說明部分定

義的任何函數都認定為內聯函數,即使它們沒有inline說明。?個內聯函數可以有,也可以沒有return語句。內聯函數在程序執

行時并不產生實際函數調用,而是在函數調用處將函數代碼展開執行。內聯函數是通過編譯器來實現的。故本題答案為C。

20.在公有繼承的情況下,允許派生類直接訪問的基類成員包括。

A、公有成員B、公有成員和保護成員C、公有成員、保護成員和私有成員D、保護成員

本題考查的是派生類。

派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。此時派生類對基類中各成員的訪問能

力與繼承方式無關,但繼承方式將影響基類成員在派生類中的訪問控制屬性。

故本題答案為B。

21.有如下程序:

#include<iostream>usingnamespacestd;

classObj{staticinti;

public:Obj(){i++;}~Obj(){i一;}

staticintgetVal(){returni;}

);

intObj::i=0;

voidf0{Objob2;cout?ob2.getVal();)

intmain(){Objobi;f();

0bj*ob3=newObj;cout?ob3->getVal();

deleteob3;cout<<0bj::getVal();

return0;

}

程序的輸出結果是一.A、232B、231C、222I)、221

本題主要考查了C++中類的靜態成員。

由于i是類Obj的靜態成員,該成員被類的所有實例共享。當定義obi時,系統自動調用構造函數Obj(),i的值將加1;調用函

數f()時,在定義ob2時系統會自動調用構造函數Obj(),i的值將再加1;調用ob2.getVal();后,將i的值輸出,輸出值為2;當調

用函數f()即將結束時,系統自動調用析構函數"bj(),i的值將減1;當定義ob3時,系統自動調用構造函數Obj。,i的值將加1,

調用cout〈〈ob3->getVal();后,將i的值輸出,輸出值為2;調用deleteob3后將執行Obj的析構函數'Obj(),執行后,i的值將減1,

Obj::getVal()為類的一個靜態成員函數,其作用是返回私有靜態成員變量i的值1。故本題答案為D.

22.下列有關繼承和派生的敘述中,正確的是_____o

A、如果一個派生類私有繼承其基類,則該派生類中的成員不能訪問基類的保護成員

B、派生類的成員函數可以訪問基類的所有成員C、基類對象可以賦值給派生類對象

1)、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類

本題考查的是拷貝構造函數。

拷貝構造函數通常在以卜3種情況卜一會被調用:

(1)用類的一個已知的對象去初始化該類的另一個正在創建的對象。

(2)采用傳值調用方式時,對象作為函數實參傳遞給函數形參。

(3)對象作為函數返回值。故本題答案為B。

23.下列情況中,不會調用拷貝構造函數的是。

A、用一個對象去初始化同一類的另一個新對象時

B、將類的一個對象賦值給該類的另個對象時

C、函數的形參是類的對象,調用函數進行形參和實參結合時

1)、函數的返回值是類的對象,函數執行返回調用時

本題考查的是據貝構造函數。

拷貝構造函數通常在以下3種情況下會被調用:

(1)用類的個已知的對象去初始化該類的另一個正在創建的對象。

(2)采用傳值調用方式時,對象作為函數實參傳遞給函數形參。

(3)對象作為函數返回值。

故本題答案為B。

24.有如下程序

#include<iostream>#include<iomanip>usingnamespacestd;

intmain(){cout<<setprecision(3)?fixed<<setfi11('*')?setw(8);

cout?12_345??34.567;return0;

)

若程序的輸出是:**12.345**34.567

則程序中下劃線處遺漏的操作符是_____。

A、setprecisionB、fixedC、setfillC)D、setw(8)

本題考查的是輸入輸出寬度的控制和輸出精度的控制。

setw(intn);設置輸入輸出的寬度。

setprecision(intn);設置浮點數的精度(有效位數或小數位數)。

setfill(charc);設置填充字符。

由程序可以看出,本題設置小數的輸出寬度為8,小數位數為3。輸出數據時,如果數據寬度小于8,則空閑的位置用*填充。

故本題答案為D。

25.有如下的運算符重載函數定義:

doubleoperator+(inti,intk){returndouble(i+k);}

但定義有錯誤,對這個錯誤最準確的描述是_____O

A、+只能作為成員函數重載,而這里的+是作為非成員函數重載的

B、兩個int型參數的和也應該是int型,而這里將+的返回類型聲明為double

C、沒有將運算符重載函數聲明為某個類的友元

D、C++已經提供了求兩個int型數據之和的運算符+,不能再定義同樣的運算符

本題考杳的是運算符的重載。

在C++中可以對用戶自定義類的運算符進行重載,但不能諸如int,char,double等內置類型運算符進行重載。故本題

答案為D。

26.有如下程序

#include<iostream>usingnamespacestd;

classBase{protected:BaseO{cout<<'A*;)Base(charc){cout<<c;}

};

classDerived:publicBase{

public:Derived(charc){cout?c;}

);

intmain(){Deriveddl('B');return0;}

執行這個程序屏幕上將顯示輸出oA、BB、BAC、ABD、BB

本題考查的是派生的構造函數和基類的構造函數的調用順序。

建立派生類對象時,構造函數的執行順序如下:

(1)執行基類的構造函數。

(2)執行成員對象的構造函數。

(3)執行派生類的構造函數。

派生類Derived由基類Base公有派生而來。在派牛.類構造函數聲明時系統會自動調用基類的缺省構造函數。調用Derived

后,執行類Derived的構造函數的Derived(charc)定義,系統會自動調用基類的缺省構造函數BaseO,輸出字母A;再執

行派生類的構造函數Derived(charc),輸出字母B°

故本題答案為C。

27.關于關鍵字class和typename,下列表述中正確的是。

A、程序中的typcname都可以替換為classB、程序中的class都可以替換為typename

C、在模板形參表中只能用typename來聲明參數的類型

D、在模板形參表中只能用class或typename來聲明參數的類型

本題考查的是模板形參。

模板形參分為兩種類型:虛擬類型參數和常規參數。虛擬類型參數須用typename或class定義。常規參數用具體的類型修飾符

(如int、double、char*等)定義,故選項C和D錯誤。在定義模板時,關鍵字typename與class可以互相交換,但在定義類時,只

能使用class。typename僅僅用于定義模板,故程序中所有的typename都可以替換成class,但對于用于類定義的class不能使用

typenatne來替換。故本題答案為A。

28.在一個派生類對象結束其生命周期時。

A、先調用派生類的析構函數后調用基類的析構函數

B、先調用基類的析構函數后調用派生類的析構函數

C、如果基類沒有定義析構函數,則只調用派生類的析構函數

D、如果派生類沒有定義析構函數,則只調用基類的析構函數

本題考查的是派生類析構函數的執行順序。

當主函數結束時,派生類析構函數的執行順序是:先執行派生類的析構函數,再執行成員對象的析構函數,最后執行基類的

析構函數。故本題答案為A。

29.有如下類定義:

classMyBase{

intk;

public:

MyBase(intn=0):k(n){}

intvalue0const{returnk;}

);

classMyDerived:MyBase{

intj;

public:

MyDerived(inti):j(i){}

intgetK()const{returnk;}

intgetj()const{returnj;}

};

編譯時發現有一處語法錯誤,對這個錯誤最準確的描述是。

A、函數getK試圖訪問基類的私有成員變量k

B、在類MyDerived的定義中,基類名MyBase前缺少關鍵字public、protected或private

C、類MyDerived缺少—^無參的構造函數

1)、類MyDerived的構造函數沒有對基類數據成員k進行初始化

本題考查的是派生類訪問權限。

在一個派生類中,其成員由兩部分構成:一部分是從基類繼承得到的,另?部分是自己定義的新成員,所有這些成員仍然分

為公有、私有和保護三種訪問屬性。其中,從基類繼承下來的全部成員構成派生類的基類部分,這部分的私有成員是派生類不能

直接訪問的,公有成員和保護成員則是派生類可以直接訪問的。

故本題答案為A。

30.有如下程序

#include<iostream>#include<iomanip>usingnamespacestd;

classMyClass{public:

MyClassO{cout?*A';}

MyClass(charc){cout?c;}

^MyClassO{cout<<*B';}

);

intmain(){MyClasspl,*p2;p2=newMyClass('X');deletep2;return0;)

執行這個程序屏幕上將顯示輸出______。A、ABXB、ABXBC、AXBI)、AXBB

本題考查的是析構函數和構造函數。

在定義對象P1時由系統自動調用構造函數MyClassO,輸出字母A;用new創建單個對象MyClass(X)時,要根據參數調用相應

的構造函數MyClass(charc),輸出字母X;在執行delete時,系統會自動調用析構函數、MyClass(),輸出字母B,當對象的生存周

期即將結束時系統會自動調用析構函數~MyClass(),輸出字母B。故本題答案為D。

31.以下關鍵字不能用來聲明類的訪問權限的是___。

A、publicstaticC、protectedD、private

本題考查的是類的定義。

類定義的一般格式如下:

class〈類名>

(

pub1ic:

〈成員函數或數據成員的說明》〃公有成員,外部接口

protected:

<數據成員或成員函數的說明〉〃保護成員

private:

《數據成員或成員函數的說明》〃私有成員

};

關鍵字public、private和protected稱為訪問權限修飾符,他們限制了類成員的訪問控制范圍。

故本題答案為B。

32.有如下程序

#include<iostream>

usingnamespacestd;

inti=l;

classFun{

public:

staticinti;

intvalue(){returni-1;}

intvalue()const{returni+1;}

};

intFun::i=2;

intmainO{

inti=3;

Funfunl;

constFunfun2;

return0;

)

若程序的輸出結果是:

123

則程序中下劃線處遺漏的語句是o

ANcout<<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的靜態成員,該成員被類的所有實例共享。咐于類中的靜態成員函數,可以通過〃類名::函數名〃的方法來調用,

并且該函數只能訪問類中的靜態成員。在C++中,對于常對象的成員函數調用,將自動調用其常成員函數。在本題中執行

funl.valueO,將調用原型為〃intvalue。;〃的函數,i的值返回1;執行fun2.value。;,將調用原型為"intvalue。const;"的

函數,i的值返回3;執行Fun::i時,調用類的靜態成員i,i的值返回2。故本題答案為A。

33.有如下說明

inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;

則數值為9的表達式是o

A、*p+9B、*(p+8)C、*p+=9D、p+8

本題考查的是指針與數組。

數組的下標是從。到數組的長度減1。*(p+i)是取數組的第i+1個元素,即下標為i的元素。因此*8+8)取數組的笫9個元素,即

元素9。故本題答案為B。

34.下列符號中,正確的C++標識符是____。

A、enumB、2bC、foo-9D、_32

本題考查的是標識符。

標識符是一個以字母或下劃線開頭的,由字母、數字、下劃線組成的字符串。標識符不能與任意一個關鍵字同名。故

本題答案為D。

35.下列關于輸入流類成員函數getlineO的描述中,錯誤的是.

A、該函數是用來讀取鍵盤輸入的字符串的B、該函數讀取的字符串長度是受限制的

C、該函數讀取字符串時,遇到終止符便停止D、該函數讀取字符串時,可以包含空格

本題考查的是文件流的輸入輸出。

函數getline(char_type*s,streamsizen,chajtypedelim)的作用是從當前位置開始提取字符存入s所指向的具有n各字節

的字符空間。字符的提取與存儲在遇到下列情況時停止:

(1)已提取并存儲了n-1個字符;

(2)到流尾,無字符可提取;

(3)下一個要提取的字符等于結束標志delim。

故本題答案為B。

36.按"先進后出”原則組織數據的數據結構是。

標準答案為:棧考生答案為:棧

棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區別是:棧只允許在表的一端進行插

入或刪除操作,是一種“先進后出''的線性表:而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”

的線性表。

37.下列軟件系統結構圖

的寬度為。

標準答案為:3或三考生答案為:3

軟件系統結構圖的寬度:整體控制跨度(最大模塊數的層)的表示。

38.的任務是診斷和改正程序中的錯誤。

標準答案為:程序調試或調試考生答案為:軟件測試

程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟

件的錯誤,然后借助于一定的調試工具去找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發階段。

39.一個關系表的行稱為。

標準答案為:元組或記錄考生答案為:元組

設計數據庫的目的實質上是設計出滿足實際應用需求的實際關系模型;關系中的行稱為元組,對應存儲文件中的記錄,關

系中的列稱為屬性,對應存儲文件中的字段。

40.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于。

標準答案為:線性結構考生答案為:線性結構

與棧類似,隊列也是線性表,也可以采用鏈式存儲結構。

41.創建對象數組時,對數組的每一個元素都將調用一次構造函數,如果沒有顯式給出數組元素的初值,則調用缺省構造函數。

下列程序涉及到對象數組的創建和單個對象的創建,其輸出結果是。

#include<iostream>

usingnamespacestd;

classFoo{

public:

Foo(intx){cout<<>AJ;}

Foo(){}

);

intmainO

(

Foof[3],g(3);

return0;

)

標準答案為:A考生答案為:AAAA

本題考查的是類的對象數組和成員對象。

從程序可以看出f[3]是類Foo的一個對象數組,因為f[3]沒有顯式的給定初值,所以系統自動調用缺省構造函數Foo();在定

義類Foo的對象g(3)時,執行相應的構造函數Foo(intx),輸出字母A。

42.插入排序算法的主要思想是:每次從未排序序列中取出的一個數據,插入到已排序序列中的正確位置。InsertSort類的成員

函數sort()實現了插入排序算法。請將畫線處缺失的部分補充完整。

classInsertSort{

public:

InsertSort(int*a0,intnO):a(a0),n(nO){}〃參數aO是某數組首地址,n是數組元素個數

voidsort0

{〃此函數假設已排序序列初始化狀態只包含a[0],未排序序列初始為a[l]…a[nT]

for(inti=l;i<n;++i){

intt=a[i];

intj;

for(;j>O;-j){

if(t>=a[j-1])break;

a[j]=a[j-l];}

protected:

int*a,n;〃指針a用于存放數組首地址,n用于存放數組元素個數

);

標準答案為:尸I考生答案為:j=i-1

本題考查的是插入排序。

在Sort函數中,實現函數的插入排序算法,若隊列中已有i個數,則向其中插入第i+1個數時,依次與從下標為i-1到下標為0

的數比較,如果后面的數小于前面的數,則交換這兩個數,否則說明該數已排好序,直接跳出內層循環,故此空應填

43.如果不使用多態機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。下列程序沒有使用

多態機制,其輸出結果是。

#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公有繼承而來,是基類的子類型。調用pb->print();后,執行基類的函數voidprint。,因為盡

管pb的函數print()可以對類Base的公有派生類Derived的對象pd進行操作,但是只能使用從基類Base中繼承的成員;調用

pd-〉print();后,執行派生類的函數voidprint0?

44.若有定義語句:int*a,b;,則變量b的數據類型是___.

標準答案為:整型或int考生答案為:int

本題考查的是變量的定義。

int*a,b;把a定義為一個int類型的指針;把b定義為一個整型變量。

45.在聲明派生類時,如果不顯式地給出繼承方式,缺省的類繼承方式是私有繼承private。已知有如下類定義:

classeBase{

protected:

voidfun(){}

);

classDerived:Base{};

則Base類中的成員函數fun(),在Derived類中的訪問權限是^_____。(注意:要求填寫private、protected或public中的一項)。

標準答案為:private考生答案為:private

46.下列程序的輸出結果是o

#include<iostream>

usingnamespacestd;

classA{

inta;

public:

A():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

本題主要考查了缺省構造函數。

在dl、d2定義時分別調用它們的構造函數。調用dl.print();后,執行類A的virtualvoidprint()函數;調用d2.print();

后,執行派生類B的構造函數voidprint。;調用p-〉print();后,執行執行派生類B的構造函數voidprint();調用show(dl);后,

調用函數show(A&x),再調用類A的virtualvoidprint。函數;調用show(d2);后,調用函數show(A&x),再調用派生類B的構造函

數voidprint()。

47.已知遞歸函數f的定義如下:

intf(intn)

(

if(n<=l)return1;〃遞歸結束情況

elsereturnn*f(n-2);〃遞歸}

則函數調用語句f(5)的返回值是o

標準答案為:15

考生答案為:120

本題主要考查了遞歸算法。

函數每次將f(n)的值轉換成相應的關系式n*f(n-2),直到f(l)時為止。所以f(5)=5*f(5-2)=5*3*f(1)=5*3*1=15。

48.已知數組a中的元素個數為n,下列語句的作用是將下標為i的元素移動到下標為iT的單元,其中例如,當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+1

本題考查循環的基本應用。

解題思路為:循環條件是i〈nT,循環的結果是把將下標為i的元素移動到下標為iT的單元,即a[i+l]的值賦給a[i],所以答

案是i+1。

49.己知下列程序的輸出結果是42,請將面線處缺失的部分補充完整。

#include<iostream>

usingnamespacestd;

classFoo{

intvalue;

public:

Foo():value(0){}

voidsetValue(intvalue)

{=value;}〃給Foo的數據成員value賦值

voidprint0{cout<<value;}

};

intmainO

(

Foof;

f.setValue(42);

f.print0;

return0;

)

標準答案為:this->value或Foo:rvalue或(*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&operatorMyClass&

rhs);然后在MyClass的類體外給出它的完整定義:

MyClass&MyClass::operator=(constMyClassferhs)

因此在MyClass類的定義中缺少MyC1ass&語句。

2010年3月考試真題(第31次)

1.數據流程圖(DFD圖)是。

A、軟件概要設計的工具B、軟件詳細設計的工具

C、結構化方法的需求分析工具D、面向對象方法的需求分析工具

常見的需求分析方法有:結構化分析方法和面向對象的分析方法。結構化分析就是使用數據流圖(DFD)、數據字典(DD)、結構

化英語、判定表和判定樹等工具,來建立一種新的、稱為結構化規格說明的目標文檔。故本題答案為C。

2.軟件(程序)調試的任務是___。

A、診斷和改正程序中的錯誤B、盡可能多地發現程序中的錯誤

C、發現并改正程序中的所有錯誤D、確定程序中錯誤的性質

程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯

誤,然后借助于一定的調試工具去執行找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要在開發階段。故

本題答案為A。

3.軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是。

A、編輯軟件B、操作系統C、教務管理系統I)、瀏覽器

軟件按功能可以分為:應用軟件、系統軟件、支撐軟件(或工具軟件)。應用軟件是為解決特定領域的應用而開發的軟件。例如,

事務處理軟件,工程與科學計算軟件,實時處理軟件,嵌入式軟件,人工智能軟件等應用性質不同的各種軟件。系統軟件是計算

機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件。如操作系統,編譯程序,匯編程序,網絡軟件,數

據庫管理系統等,所以選項B屬于系統軟件。故本題答案為B。

4.軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬于。

A、定義階段B、開發階段C、維護階段D、上述三個階段

軟件生命周期可分為軟件定義、軟件開發及軟件運行維護三個階段。軟件開發階段包括概要設計、詳細設計、實現和測試四個活

動階段。故本題答案為B。

5.下列敘述中正確的是___.

A、對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為n

B、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)

C、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為Cogan)

D、對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為缶匕取11)

對于長度為n的有序線性表,在最壞情況"二分查找只需要比較bg2n次,而順序查找需要比較n次。二分法杳找只適用于順序

存儲的有序表,如果采用鏈式存儲結構,也只能用順序查找,所以選項A是正確的。

故本題答案為A。

6.有兩個關系R和T如卜:

A、選擇B、投影C、交D、并

從關系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進行的運算,即從水平方向抽取記錄。由圖可知關系R通過

運算得到關系T,關系T與關系R相比,屬性的個數沒有發生變化,記錄的條數發生了變化。因此所使用的運算應該是選擇。故

本題答案為A。

7.算法的時間復雜度是指。

A、算法的執行時間B、算法所處理的數據量C、算法程序中的語句或指令條數

D、算法在執行過程中所需要的基本運算次數

所謂算法的時間復雜度,是指執行算法所需要的計算工作量。為了能夠比較客觀地反映出個算法的效率,在度量?個算法的工

作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實現過程中的許多細節無關。為此,

可以用算法在執行過程中所需基本運算的執行次數來度量算法的工作量。故本題答案為1)。

8.數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數據庫設計的。

A、需求分析階段B、邏輯設計階段C、概念設計階段D、物理設計階段

E-R圖是E-R模型的一種非常直觀的圖的形式表示,它描述信息結構但不涉及信息在計算機中的表示,它是數據庫概念設計階段的

工具。故本題答案為c。

9.在學生管理的關系數據庫中,存取一個學生信息的數據單位是o

A、文件B、數據庫C、字段D、記錄

實體是概念世界中的基本單位,屬性附屬于實體,它本身并不構成獨立單位。屬性有屬性域,每個實體可取屬性域內的值。一個

實體的所有屬性取值組成了一個值集叫元組(或稱記錄)。在概念世界中,可以用元組表示實體,也可用它區別不同的實體。所

以在學生管理的關系數據庫中,存取一個學生信息的數據單位是元組(或記錄)。故本題答案為D。

10.數據庫管理系統中負責數據模式定義的語言是O

A、數據定義語言B、數據管理語言C、數據操縱語言I)、數據控制語言

數據定義語言(DDL):該語言負責數據的模式定義與數據的物理存取構建。

數據操縱語言(DML):該語言負責數據的操縱,包括查詢及增、冊IJ、改等操作。

數據控制語言(DCL):該語言負責數據完整性、安全性的定義與檢查以及并發控制、故障恢復等功能。

故本題答案為A。

11.有如下兩個類定義

classXX{

private:

doublexl;

protected:

doublex2;

public:

doublex3;

);

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

);

在類YY中保護成員變量的個數是。

A、1B、2C、3D、4

本題主要考查了類的繼承與派生。

類的繼承方式有三種:公有(public)繼承、保護(protected)繼承和私有(private)繼承。當派生類從基類保護繼承時,

基類的公有成員和保護成員在派生類中都為保護成員。本題派生類YY從基類XX保護繼承,因此基類XX的公有成員x3和保護成員x2

都成為派生類YY的保護成員,再加上派生類YY自身的保護成員y2,因此類YY中有3個保護成員。故本題答案為C。

12.在C++中,cin是一個o

A、類B、對象C、模板D、函數

本題主要考查了I/O流。

在C++中,數據的輸入與輸出是通過I/O流來實現,cin和cout是預定義的流類對象。

故本題答案為B。

13.若x和y是程序中的兩個整型變量,則下列if語句中正確的是o

A、if(x==0)y=l;elsey=2;B、if(x==0)theny=lelsey=2;

C、if(x-0)y=lelsey=2;D、ifx==0y=l;elsey=2;

本題主要考查了if語句。

if語句的語法形式為:

if(表達式)語句1

else語句2

在C++中,if語句中沒有then,語句最后必須有一個分號,因此選項A正確,選項B和選項C錯誤;在選項D中,表達式x==0應該

用圓括號括起來,因此選項D錯誤。故本題答案為A。

14.將運算符重載為非成員函數,下列原型聲明中,錯誤的是。

A^MyClockoperator+(MyClock,long);B、MyClockoperator+(MyClock,MyClock);

C、MyClockoperator+(long,long);D、MyClockoperator+(long,MyClock);

本題主要考查了運算符的重載。

運算符的重載是針對新類型數據的實際需要,對原有運算符進行適當的改造。一般來講,重載的功能應當與原有功能類似,

不能改變原運算符的操作對象個數,同時至少要有一個操作對象是自定義類型。選項A、選項B和選項D的兩個參數中至少有一個參

數是自定義類型,因此選項A、選項B和選項D正確。選項C中兩個參數都是基本數據類型,沒有自定義類型,因此選項C錯誤。

故本題答案是C。

15.要定義整型數組x,使之包括初值為0的三個元素,卜列語句中錯誤的是。

A、intx[3]={0,0,0};B、int

溫馨提示

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

評論

0/150

提交評論