二級C++筆試373-真題(含答案與解析)-交互_第1頁
二級C++筆試373-真題(含答案與解析)-交互_第2頁
二級C++筆試373-真題(含答案與解析)-交互_第3頁
二級C++筆試373-真題(含答案與解析)-交互_第4頁
二級C++筆試373-真題(含答案與解析)-交互_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

二級C++筆試373(總分94,做題時間90分鐘)一、選擇題1.

有如下程序:

#include<iostream.h>

usingnamespacestd;

class

Base

{

protected:

inti:

public:

intj;

};

class

Derived:publicBase

{

intm:

public:

int

n;

}

intmain()

{

Derivedd:

d.i=0;

//[1]

d.J=0;

//[2]

d.m=0;

//[3]

d.n=0:

//[4]

return0;

}

其中主函數(shù)中有兩個賦值語句有錯,這兩個錯誤的賦值語句是A

[1]和[2]B

[1]和[3]C

[2]和[3]D

[2]和[4]

分值:2答案:B[解析]本題考核類和派生類的訪問權(quán)限。類Derived共有繼承Base,那么d對基類Base成員變量的訪問權(quán)限不變,由于數(shù)據(jù)成員i為保護的,不能通過對象訪問。派生類Derived中變量m為私有的,同樣不能通過對象訪問,所以錯誤的賦值語句為[1]和[3]。2.

函數(shù)定義為Fun(int&i),變量定義n=100,則下面調(diào)用正確的是A

Fun(20)B

Fun(20+;C

Fun(;D

Fun(&;

分值:2答案:C[解析]本題考核函數(shù)的調(diào)用。當(dāng)函數(shù)的參數(shù)是引用類型時,參數(shù)不能是常量、表達式和變量地址,只能是變量本身。3.

C++流中重載的運算符>>是一個A

用于輸出操作的非成員函數(shù)B

用于輸入操作的非成員函數(shù)C

用于輸出操作的成員函數(shù)D

用于輸入操作的成員函數(shù)

分值:2答案:B[解析]本題考核運算符重載。C++中重載輸入流運算符>>和輸出流運算符<<只能作為非類成員函數(shù)重載,且必須使用如下原形:

istream&operator>>(istream&,<類名>&);

ostream&operator<<(ostream&,<類名>);4.

已知類Myst有一個只需要一個double型參數(shù)的構(gòu)造函數(shù),且將運算符“-”重載為友元函數(shù)。要使語句序列

Mystx{3.2),y(5.5),z(0.0);

z=8.9-y;

y=x-6.3;

能夠正常運行,運算符函數(shù)operator-應(yīng)該在類中聲明為,A

friendMystoperator-(Myst&,Myst&);B

friendMystoperator-(Myst,Mys;C

friendMystoperator-(Myst,Myst&);D

friendMystoperator-(Myst&,Mys;

分值:2答案:B[解析]本題考核運算符的重載。題中將運算符“-”重載為友元函數(shù),其聲明格式如B選項所描述的。5.

有以下程序

#include<iostream>

usingnamespace

std;

classComplex

{

public:

Complex(double

r=0,double

i=0:re(r)

,im(i){}

double

real()

const{return

re;}

double

imag()

const{

return

im;}

Complex

operator

+

(Complex

c}

const

{return

Complex(re+c.re,im+c.im);}

privane:

doublere,im;

};

intmain

{

Complex

a=Complex(1,1)+Complex(5);

cout<<a.real()<<'+'<<a.imag()<<'i'<<endl

return0;

}

程序執(zhí)行后的輸出結(jié)果是A

6+6iB

6+1iC

1+6iD

1+1i

分值:2答案:B[解析]本題考核類與對象、運算符重載。運算符“+”在類Complex中作為成員函數(shù)重載,實現(xiàn)兩個對象的數(shù)據(jù)成員的相加。所以main函數(shù)中語句“Complex

a

=Complex(1,1)+Complex(5);”的作用相當(dāng)于“Complexa(1+5,1);”即對象a的數(shù)據(jù)成員re的值為6,imag的值為1,所以輸出為6+1i。6.

下列關(guān)于棧的敘述正確的是A

在棧中只能插入數(shù)據(jù)B

在棧中只能刪除數(shù)據(jù)C

棧是先進先出的線性表D

棧是先進后出的線性表

分值:2答案:D[解析]棧是一種特殊的線性表,其插入與刪除運算都只在線性表的一端進行。在這種線性表的結(jié)構(gòu)中,一端封閉;不允許插入與刪除元素;另一端開口,允許插入與刪除元素。

在棧中不僅能插入數(shù)據(jù),也能刪除數(shù)據(jù),選項A與B都錯。棧是后進先出的線性表,而不是先進先出的線性表,選項C的說法錯誤,選項D正確。7.

要定義一個具有5個元素的一維數(shù)組vect,并使其各元素的初值依次是30,50,-88,0和0,則下列定義語句中錯誤的是A

intvect[]={30,50,-88};B

intvect[]={30,50,-88,0,0};C

intveer[5]={30,50,-88};D

intvect[5]={30,50,-88,0,0};

分值:2答案:A[解析]本題考核一維數(shù)組在定義時的初始化。當(dāng)數(shù)組聲明時沒有給出數(shù)組的大小,但是有初始化列表時,數(shù)組的大小就由列表中元素的個數(shù)來確定,

由此可知A)選項中數(shù)組vect只有3個元素,與題目要求不符。8.

有以下程序:

#include<iostream>

usingnamespace

std;

classsample

{

private:

intn:

public:

sample(){}

sample(intm)

{

n=m;

}

sampleadd(samples1,samples2)

this->n=s1.n+s2.n;

return(*this);

}

voiddisp()

{

cout<<"n="<<n<<end1;

}

};

intmain()

samples1(1)0,s2(5),s3;

s3.add(s1,s2);

s3.disp();

return

0;

}

程序運行后,輸出的結(jié)果是A

n=10B

n=5C

n=20D

n=15

分值:2答案:D[解析]本題考核this指針的使用。類成員函數(shù)add中通過this指針實現(xiàn)私有數(shù)據(jù)成員n的賦值。9.

設(shè)有a、b、c、d、m、n均為血型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>B)&&(n=c>D)運算后,n的值為A

0B

1C

2D

3

分值:2答案:C[解析]在&&運算中,如果第1個表達式的值為假時,第2個表達式將不再計算。在表達式中第1個表達式m=a>b的值為0,也就是假,所以第2個表達式的將不再計算。所以n的值沒有變。10.

下面不屬于軟件設(shè)計原則的是A

抽象B

模塊化C

自底向上D

信息隱蔽

分值:2答案:C[解析]軟件設(shè)計遵循軟件王程的基本目標和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。它們是:抽象、模塊化、信息隱蔽、模塊獨立性。沒有自底向上,所以,本題的正確答案是C。11.

下列關(guān)于類和對象的敘述中,錯誤的是A

一個類只能有一個對象B

對象是類的具體實例C

類是對某一類對象的抽象D

類和對象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系

分值:2答案:A[解析]本題考核類和對象的概念.類是用戶定義的一種類型,程序員可以使用這個類型來說明多個變量,即對象。12.

在C++中用來實現(xiàn)運行時多態(tài)性的是A

重載函數(shù)B

析構(gòu)函數(shù)C

構(gòu)造函數(shù)D

虛函數(shù)

分值:2答案:D[解析]本題考核虛函數(shù)。在C++語言中,多態(tài)性可分為兩類:編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過函數(shù)重載和模板體現(xiàn)。其實現(xiàn)機制稱為靜態(tài)聯(lián)編(也譯為靜態(tài)綁定),即在編譯階段決定執(zhí)行哪個同名的被調(diào)用函數(shù);運行時的多態(tài)性是通過體現(xiàn)的,其實現(xiàn)機制稱為動態(tài)聯(lián)編(也譯為動態(tài)綁定),印在編譯階段不能決定執(zhí)行哪個同名的被調(diào)用函數(shù),只在執(zhí)行階段才能依據(jù)要處理的對象類型來決定執(zhí)行哪個類的成員函數(shù)。用來實現(xiàn)運行時多態(tài)性的是虛函數(shù)。13.

在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為A

31B

32C

16D

15

分值:2答案:C[解析]二叉樹的一個性質(zhì)是,在二叉樹的第k層上,最多有2k-1(k≥1)個結(jié)點.對于滿二叉樹,每一層上的結(jié)點數(shù)都達到最大值,即在滿二叉樹的第k層上有2k-1個結(jié)點。所以,在深度為5的滿二叉樹中,所有葉子結(jié)點在第5層上,即其結(jié)點數(shù)為2k-1=25-1=16。14.

下列程序的輸出結(jié)果是

#include<iostream>

using

namespace

std;

intmain()

{

char

a[]

=

"Hello,World":

char*ptr=

a;

while(*ptr)

{

if(*ptr>='a'&&*ptr

<='z'

cout<<char{*ptr+'A'-'a');

elsecout<<*ptr;

ptr++;

}

return0;

}A

HELLWORLDB

Hello,WorldC

hELLO,wORLDD

hello,world

分值:2答案:A[解析]本題考核while語句和if語句,while語句中if語句的作用是將小寫字母變成大寫字母輸出、所以main函數(shù)的字符串通過while語句全部輸出為大寫字母。15.

有以下類定義

class

Point{

public:

Point{intx=0,int

y=0){_x=x;_y=y;}

voidMoveintxoff,intyoff)

{_x+=xoff;_y+=yoff;}

voidPrint()

const

{cout<<'('<<_x<<','<<_y<<')'<<end1;}

private:

int_x,_y;

};

下列語句中會發(fā)生編譯錯誤的是A

Pointpt;pPrint();B

constPointpt;pPrint();C

Pointpt;pMove(1,2);D

constPointpt;pMove(1,2)

分值:2答案:D[解析]本題考核常對象、常數(shù)據(jù)成員與常成員函數(shù)。如果將二個對象說明為常對象,則通過該常對象只能調(diào)用它的常成員函數(shù),不能調(diào)用其他的成員函數(shù),D選項中對象pt為常對象,而成員函數(shù)Move()不是常成員函數(shù),所以這樣調(diào)用會發(fā)生編譯錯誤。16.

若執(zhí)行語句:cout<<setfill('*')<<setw(10)<<123<<"OK"<<end1后將輸出A

*******123OKB

123********OKC

*******123********OKD

123*******OK********

分值:2答案:A[解析]本題考核格式控制數(shù)據(jù)的輸入輸出。函數(shù)setfill(charc)用于設(shè)置填充字符,在輸出數(shù)據(jù)時,如果數(shù)據(jù)寬度小于設(shè)置的寬度,則空閑位置要用填充字符填滿。函數(shù)setw(intn)用于設(shè)置輸入輸出寬度,寬度設(shè)置的效果只對一次輸入或輸出有效,在完成一次數(shù)據(jù)的輸出或輸入后,寬度設(shè)置自動恢復(fù)為0,例如題中語句以寬度10輸出數(shù)據(jù)“123”后,字符串“OK”的輸出寬度就自動恢復(fù)為0了。而且輸出的初始狀態(tài)為右對齊,所以最終的輸出為*******123OK。17.

下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是A

內(nèi)模式B

外模式C

概念模式D

邏輯模式

分值:2答案:A[解析]能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是內(nèi)模式。外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。沒有邏輯模式這一說法。正確答案為A。18.

C++語言中while循環(huán)和do-while循環(huán)的主要區(qū)別是A

do-while的循環(huán)體至少無條件執(zhí)行一次B

while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴格C

do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)D

do-while的循環(huán)體不能是復(fù)合語句

分值:2答案:A[解析]本題考核C++語言中while循環(huán)和do-while循環(huán)之間的區(qū)別。do-while語句與while語句不同的是,do-while循環(huán)中的<語句>至少會執(zhí)行一次,而while語句中當(dāng)條件在第一次循環(huán)就不滿足時,語句一次也不會執(zhí)行。19.

數(shù)據(jù)庫設(shè)計的根本目標是要解決A

數(shù)據(jù)共享問題B

數(shù)據(jù)安全問題C

大量數(shù)據(jù)存儲問題D

簡化數(shù)據(jù)維護

分值:2答案:A[解析]本題考核數(shù)據(jù)庫技術(shù)的根本目標,很簡單,記憶性題目。數(shù)據(jù)庫技術(shù)的根本目標就是要解決數(shù)據(jù)的共享問題,選項A正確。20.

下列對于軟件測試的描述中正確的是A

軟件測試的目的是證明程序是否正確B

軟件測試的目的是使程序運行結(jié)果正確C

軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤D

軟件測試的目的是使程序符合結(jié)構(gòu)化原則

分值:2答案:C[解析]軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進行的,其目的是設(shè)法暴露程序中的錯誤和缺陷。可見選項c的說法正確。21.

算法的空間復(fù)雜度是指A

算法程序的長度B

算法程序中的指令條數(shù)C

算法程序所占的存儲空間D

算法執(zhí)行過程中所需要的存儲空間

分值:2答案:D[解析]算法的空間復(fù)雜度指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。正確答案為D。22.

下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是A

使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯B

模塊只有一個入口,可以有多個出口C

注重提高程序的執(zhí)行效率D

不使用goto語句

分值:2答案:A[解析]應(yīng)該選擇只有一個入口和一個出口的模塊,故B選項錯誤;首先要保證程序正確,然后才要求提高效率,故c選項錯誤;嚴格控制使用goto語句,必要時可以使用,故D選項錯誤。23.

下列關(guān)于new運算符的描述中錯誤的是A

使用運算符new創(chuàng)建對象數(shù)組時必須定義初始值B

使用運算符new創(chuàng)建對象時,會調(diào)用類的構(gòu)造函數(shù)C

運算符new可以用來動態(tài)創(chuàng)建對象和對象數(shù)組D

使用new運算符創(chuàng)建的對象可以使用運算符delete刪除

分值:2答案:A[解析]本題考核運算符Dew。先來7解運算符new:運算符new返回指定類型的一個指針,如果分配失敗(如沒有足夠的內(nèi)存空間),則返回0。它與delete運算符一起使用,以達到直接進行動態(tài)內(nèi)存分配和釋放的目的。對于A選項,使用運算符Flew創(chuàng)建對柬數(shù)組時只能指定分配內(nèi)存的大小,不能為該數(shù)組指定初始值,其初始值為缺省值,因此類中必須定義缺省構(gòu)造函數(shù)。所以A選項的描述是錯誤的。B、C和D選項的描述都是正確的。24.

下列敘述中正確的是A

數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持B

數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)C

數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)共享的問題D

數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

分值:2答案:C[解析]A選項,數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持,必不可少,故其敘述不正確。B選項錯誤,數(shù)據(jù)庫設(shè)計是指設(shè)計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫。D選項也不對,數(shù)據(jù)庫應(yīng)該具有物理獨立性和邏輯獨立性,改變其一而不影響另一個。正確答案為C。25.

有以下程序

#include<iostream>

inti=0;

voidfun()

{

{

staticinti=1;

std::cout<<i++<<',';

}

std::cout<<i<<',';

}

intmain()

{

fun();fun();

return0;

}

程序執(zhí)行后的輸出結(jié)果是A

1,2,1,2,B

1,2,2,3,C

2,0,3,0,D

1,0,2,0,

分值:2答案:D[解析]本題考核變量的作用域、生存周期和存儲類別(自動、靜態(tài)、存儲器、外部)。題中即定義全局變量i,又在函數(shù)fun內(nèi)部定義了局部靜態(tài)變量i,

當(dāng)進入函數(shù)fun里面的大括號時,局部靜態(tài)變量i有效,所以輸出1,然后局部靜態(tài)變量i加1,出了里面的大括號后,全局變量i有效,所以輸出0。同理,第二次調(diào)用fun后,輸出2和0。26.

有如下函數(shù)模板定義:

template<typenameT1,typenameT2typenameT3>

T2plus(T1t1,T3t3){returnt1+t3;}

則以下調(diào)用中正確是A

plus(3,5;B

plus<>(3,5;C

plus<int>(3,5;D

plus<int,double>(3,5;

分值:2答案:D[解析]本題考核函數(shù)模板的使用。C++中對函數(shù)模板的調(diào)用有時候只使用了函數(shù)實參,而沒有使用模板實參,模板實參都被省略了,但模板實參的省略并不是必然的,而是有條件。模板實參不能省略的情況有:從模板函數(shù)實參表獲得的信息有矛盾;需要獲得特定類型的返回值,而不管參數(shù)的類型如何;虛擬類型參數(shù)沒有出現(xiàn)在模板函數(shù)的形參中;函數(shù)模板含有常規(guī)形參。題中定義的函數(shù)模板中虛擬類型參數(shù)T2沒有出現(xiàn)在模板函數(shù)的形參列表中,所以在調(diào)用時不能省略,D選項的調(diào)用省略了T3,這是允許的。27.

下列對派生類的描述中,錯誤的是A

一個派生類可以作為另一個派生類的基類B

派生類至少有一個基類C

派生類的成員除了它自己的成員外,還包含了它的基類的成員D

派生類中繼承的基類成員的訪問權(quán)限到派生類中保持不變

分值:2答案:D[解析]本題考核繼承與派生?;惻c派生類的關(guān)系為:基類是對派生類的抽象,派生類是對基類的具體化?;惓槿×怂呐缮惖墓蔡卣?,而派生類通過增加信息將抽象的基類變?yōu)槟撤N有用的類型,派生類是基類定義的延續(xù)。派生類是基類的組合。公有派生類的對象可以作為基類的對象處理。由此可知A、B和C選項都是正確的。而在繼承中,采用不同的繼承方式,將限制派生類對基類成員的訪問。所以D選項是錯誤的。28.

有以下程序

#include<iostream>

using

namespace

std;

staticintdays[]={31,28.31,30,31,30,31,31,30,31,30,31};

class

date

{

private:

intmonth,

day,

year:

public:

date(intm,intd,int

y

{

month

=

m;

day=d;

year=y;

}

date{}

{}

voiddisp{)

{

cout<<year<<"-"<<month<<"-"<<day<<end1;

}

date

operator+(int

day)

{

datedt=*this:

day+=dt.day;

while

{day>

days[dt.month-1])

{

day-=tays[dt.month-1];

if

(++dt.month==13

{

dt.month=1;

dt.yeare++;

}

}

dr.day=day;

returndt;

}

};

intmain()

{

dated1(6,20,2004),

d2;

d2.=d1+20;

d2.disp();

return

0;

}

執(zhí)行后的輸出結(jié)果是A

2004-7-10B

2004-6-20C

2004-7-20D

程序編譯時出錯

分值:2答案:A[解析]本題考核運算符的重載。本題通過將“+”運算符重載為類date的成員函數(shù)實現(xiàn)簡單的對象加法。29.

有如下函數(shù)模板定義:

template<classT>

Tfunc(Tx,Ty){returnx*x*y*y;)

在下列對func的調(diào)用中,錯誤的是A

func(3,5);B

func(3.0,5.5);C

func(3,5.5);D

func<int>(3,5.5);

分值:2答案:C[解析]本題考核函數(shù)模板的使用。引用模板函數(shù)和引用一般的函數(shù)在語法形式上沒有任何區(qū)別。所有的類型替換都是編譯器在幕后悄悄進行的,但是要注意的是說明一個函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個對應(yīng)的函數(shù)調(diào)用時,將根據(jù)實參中的類型來確認是否匹配函數(shù)模板中對應(yīng)的形參。例如,本題中的C)選項,編譯系統(tǒng)從第一個參數(shù)“3”獲得的信息是“T對應(yīng)于int”,而從第二個參數(shù)“5.5”處獲得的信息是“T對應(yīng)于double”,二者相互矛盾,在編譯時會產(chǎn)生錯誤。對于D)選項中緊跟在函數(shù)名后的<int>就是模板實參表,通過它通知編譯系統(tǒng)在調(diào)用過程中,double型的參數(shù)“5.5”將被自動換成int型。30.

關(guān)于面向?qū)ο蟮某绦蛟O(shè)計方法,下列說法正確的是A

“封裝性”指的是將不同類型的相關(guān)數(shù)據(jù)組合在一起,作為一個整體進行處理B

“多態(tài)性”指的是對象的狀態(tài)會根據(jù)運行時要求自動變化C

基類的私有成員在派生類的對象中不可訪問,也不占內(nèi)存空間D

在面向?qū)ο蟮某绦蛟O(shè)計中,結(jié)構(gòu)化程序設(shè)計方法仍有著重要作用

分值:2答案:D[解析]本題考核C++程序的基本框架?!胺庋b性”指將數(shù)據(jù)和算法捆綁成一個整體,而不是將不同類型的相關(guān)數(shù)據(jù)組合在一起C++中的多態(tài)性是指一個面向?qū)ο蟮南到y(tǒng)常常要求一組具有相同基本語義的方法能在同一接口下為不同的對象服務(wù)。基類的私有成員在派生類的對象中不可訪問,但是也占據(jù)內(nèi)存空間。C++同時支持結(jié)構(gòu)化和面向?qū)ο髢煞N程序設(shè)計的基本框架,所以在面向?qū)ο蟮某绦蛟O(shè)計中,結(jié)構(gòu)化程序設(shè)計方法仍有著重要作用。31.

在進行任何C++流的操作后,都可以用C++流的有關(guān)成員函數(shù)檢測流的狀態(tài);其中只能用于檢測輸入流狀態(tài)的操作函數(shù)名稱是A

failB

eofC

badD

good

分值:2答案:B[解析]本題考核C++流的文件操作。C++中可以用文件流對象的下列成員函數(shù)來判別文件流的當(dāng)前狀態(tài)。函數(shù)is_open():判定流對象是否與一個打開的文件相聯(lián)系,若是,返回true,否則返回false;函數(shù)good():剛進行的操作成功時返回true,否則返回false。函數(shù)fail():與good()相反,剛進行的操作失敗時返回true,否則返回false.函數(shù)bad():如果進行7非法操作返回true,否則返回false.函數(shù)eof():進行輸入操作時,若到達文件尾返回true,否則返回false。其中,eof函數(shù)只能用于輸入流操作。32.

派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含A

基類的構(gòu)造函數(shù)B

派生類中子對象的初始化C

基類的子對象初始化D

派生類中一般數(shù)據(jù)成員的初始化

分值:2答案:C[解析]本題考核構(gòu)造函數(shù)。在C++中,構(gòu)造函數(shù)不能被繼承,因此,派生類的構(gòu)造函數(shù)必須通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類子對象。所以,在定義派生類的構(gòu)造函數(shù)時,除了對自己的數(shù)據(jù)成員進行初始化外,還必須負責(zé)調(diào)用基類構(gòu)造函數(shù)使基類的數(shù)據(jù)成員得以初始化。如果派生類中還有子對象,還應(yīng)包含對子對象初始化的構(gòu)造函數(shù).但是它不負責(zé)基類中子對象的初始化。33.

執(zhí)行語句序列

intn:

cin>>n:

switch(n)

{

case1:

case2:cout<<'1';

case3:

case4:cout<<'2':

break;

default:cout<<'3':

}時,若鍵盤輸入1,則屏幕顯示A

1B

2C

3D

12

分值:2答案:D[解析]本題考核C++語句中的switch語句.switch語句也稱為開關(guān)語句,用于有多重選擇的場合,測試某一個變量具有多個值時所執(zhí)行的動作。switch語句中每個case語句只是一個入口標號,并不能確定執(zhí)行的終點,因此,每個case分支的最后應(yīng)該加break語句,用來結(jié)束這個switch結(jié)構(gòu),否則,會從入口點開始,一直執(zhí)行到switch結(jié)構(gòu)的結(jié)束點。若鍵盤輸入1,n的值被賦為1,進入第一個分支,沒有break跳出,然后進入第二個分支,執(zhí)行“coot<<'1';”輸出1,然后進入第3、4個分支,執(zhí)行“cout<<'2';”,然后執(zhí)行break,跳出switch語句.所以最后輸出為12。34.

定義如下枚舉類型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};則下列語句正確的是A

表達式Wednesday==Friday的值是trueB

Dayday;day=3;C

Dayday;day=Monday+3;D

Dayday;day=Tuesday+10;

分值:2答案:A[解析]本題考查枚舉類型的定義和使用。枚舉類型定義了一些整型符號常量的集合,使用枚舉類型時應(yīng)該注意以下幾點:枚舉類型的第一個常量默認值是0;枚舉類型常量的值允許彼此相同;雖然枚舉類型常量是整數(shù)類型,但是不允許使用整數(shù)直接賦值給枚舉類型變量,也不允許與整數(shù)進行運算,只可以與整數(shù)進行比較。根據(jù)以上知識我們可以得出B、C、D選項都不正確。35.

下面概念中,不屬于面向?qū)ο蠓椒ǖ氖茿

對象B

繼承C

類D

過程調(diào)用

分值:2答案:D[解析]A,B,C屬于面向?qū)ο蠓椒?,D屬于面向過程方法,故答案為D。二、填空題1.

數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是______。

分值:2答案:數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫系統(tǒng)階段或數(shù)據(jù)庫或數(shù)據(jù)庫階段或數(shù)據(jù)庫管理技術(shù)階段[解析]在數(shù)據(jù)庫系統(tǒng)管理階段,數(shù)據(jù)是結(jié)構(gòu)化的,是面向系統(tǒng)的,數(shù)據(jù)的冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性,同時提高了數(shù)據(jù)的可擴充性和數(shù)據(jù)應(yīng)用的靈活性;數(shù)據(jù)具有獨立性,通過系統(tǒng)提供的映像功能,使數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性:保證了數(shù)據(jù)的完整性、安全性和并發(fā)性。綜上所述,數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)管理階段。2.

在面向?qū)ο蠓椒ㄖ校试S作用于某個對象上的操作稱為______。

分值:2答案:方法[解析]在面向?qū)ο蠓椒ㄖ?,方法是指允許作用于某個對象上的各種操作。允許作用于某個對象上的操作稱為方法。3.

若按功能劃分,軟件測試的方法通常分為白盒測試方法和______測試方法。

分值:2答案:黑盒或黑箱[解析]軟件測試的方法分為白箱測試方法和黑箱測試方法。白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,白箱測試用例的設(shè)計準則有:語句覆蓋、分支覆蓋、條件覆蓋和組合條件覆蓋;黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法。4.

在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是______。

分值:2答案:E-R圖[解析]E-R圖是設(shè)計概念模型的有力工具。5.

數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

分值:2答案:存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)[解析]數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊列循環(huán)使用??芍?,循環(huán)隊列應(yīng)當(dāng)是物理結(jié)構(gòu)。6.

下列函數(shù)的功能是判斷字符串str是否對稱,對稱則返回true,否則返回false。請在橫線處填上適當(dāng)內(nèi)容,實現(xiàn)該函數(shù)。

bool

fun(char

*str)

{

inti=0,j=0;

while(str[j])______;

for(j--;i<j&&str[i]==str[j];i++,j--);

returni______j;

}

分值:2答案:j++;i>=j[解析]本題考核while循環(huán)語句和for循環(huán)語句。題中函數(shù)的功能是判斷字符串str是否對稱,while循環(huán)語句的作用是將j移到字符串str的末尾那么當(dāng)字符str[j]不等于'\0'時,j應(yīng)該加1。當(dāng)str對稱時,for循環(huán)結(jié)束的條件應(yīng)該是i>=j,所以最后的空格處應(yīng)填入i>=j。7.

若有如下程序段:

#include<iostream>

usingnamespacestd;

intmain()

{

char

*p="abcdefgh",*r;

long

*q;

q=(long*)p;q++;

r=(char

*)q;

cout<<r<<end1;

return0;

}

該程序的輸出結(jié)果是______。

分值:2答案:efgh[解析]本題定義了一個字符型指針變量p,并通過賦初值讓它指向了一個字符串,還定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“a=(long*)p;”,把p的地址值強制轉(zhuǎn)換為長整型地址值并賦值給小然后執(zhí)行“q++”,地址值增加了4,執(zhí)行語句“r=(char*)q;”,把長整型指針變量q的值再強制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址。最后輸出r指向的字符串。8.

在下面程序的橫線處填上適當(dāng)?shù)膬?nèi)容,使程序執(zhí)行后的輸出結(jié)果為1/2005。

#include

<iostream.h>

usingnamespacestd:

classDate

public:

Date

(intm=1,int

y=0):month(m.year(y}{}

void

Print(){cout<<month<<"/"<<year<<end1;}

______operator+(constDate&

d1,const

Date&d2;

private:

intmonthyear;

};

______operaror+(constDate&d1,constDate&

d2)

int

year,month;

year=d1.year+d2.year;

month=d1.month+d2.month;

year+=(month-1)/12;

month=(month-1)%12+l;

return

Date{month,year}:

}

voidmain()

{

Dated1(3,2004),d2,d3(10);

d2=d3+d1;

d2.Print();

}

分值:2答案:friendDate;

Date[解析]本題考核類與對象、運算符的重載。題中運算“+”重載函數(shù)中的參數(shù)表中有兩個參數(shù),所以是作為友元函數(shù)重載(因為“+”是一個二元運算符,作為成員函數(shù)重載時參數(shù)表中只有一個參數(shù),對應(yīng)于第二個參數(shù),而第一個操作數(shù)就是對象本身,僅以this指針的形式隱藏在參數(shù)表中),實現(xiàn)的功能是將參數(shù)對象中的成員變量month、year的進行對應(yīng)相加,實現(xiàn)年月的相加-題中運算符重載函數(shù)的返回值的類型是類Date,所以第一個空格處填入"friendDate"。第二個空格處完善運算符重載函數(shù)的定義,缺少的是函數(shù)返回值的類型“Date”9.

在下面程序的橫線處填上適當(dāng)?shù)膬?nèi)容,使程序執(zhí)行后的輸出結(jié)果為ABCD。

#include<iostream.h>

using

namespacestd;

classA

{

public:

A()

{cout<<'A';

};

classB:______

{

public:

B()

{cout<<'B';}

};

classC:______

{

public:

C(}

cout<<'C';}

};

classD:publicB,

publicC

{

pu

溫馨提示

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

評論

0/150

提交評論