當前位置:學問君>學習教育>考研>

C++程序題

學問君 人氣:2.84W

C++程序題1

C++程序題

學過C++的過程員都懂得,new/delete是其管教內存的重要措施。與C語言相比,C++扶持面向對象技巧,因而在內存管教方面有所差異

在C++中,數據對象(大約種類和複合種類)的創立包括兩個局部:一是給數據對象分配足夠的內存,二是內存舉行數據的初始化。而C中,只有第一個分配內存的作用。並且,不但僅是類,其它大約種類,如int型等,也是如此。例如:

char* pc1 = new char;

char* pc2 = new char('A');

以上兩條語句都能夠給對應的指針分配內存,不同在於,第一條語句僅僅分配內存,而翔實的內容是隨機的;而第二條語句不但分配內存,並且賦值爲‘A’。相對應的,當不再必需這些內存時候,能夠批准delete來釋放內存。

C++中,關於new/delete相干的內容許多,初學者比擬輕率混同觀念。以下是筆者的一點歸納,十月媽咪渴望對那些還處於?**露??墓?淘庇邪鎦??p> 1. new/delete 關鍵字。C++和其它語言一樣,也預先預留了一些單詞作爲系統利用。過程員是不能用這些單詞來表示自己的數據的。如int , float, struct , class 等。當然new/delete也是。然而new/delete關鍵字僅僅是在詞法上的定義,它只闡明過程員不能重複定義它們,用來表白其它含義。

C++程序題2

1.下列關於棧敘述正確的是( )。

A.棧頂元素最先能被刪除

B.棧頂元素最後才能被刪除

C.棧底元素永遠不能被刪除

D.以上三種說法都不對

2.下列敘述中正確的是( )。

A.有一個以上根結點的數據結構不一定是非線性結構

B.只有一個根結點的數據結構不一定是線性結構

C.循環鏈表是非線性結構

D.雙向鏈表是非線性結構

3.某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度爲(假設根結點在第1層)( )。

A.3

B.4

C.6

D.7

4.在軟件開發中,需求分析階段產生的主要文檔是( )。

A.軟件集成測試計劃

B.軟件詳細設計說明書

C.用戶手冊

D.軟件需求規格說明書

5.結構化程序所要求的基本結構不包括( )。

A.順序結構

0跳轉

C.選擇(分支)結構

D.重複(循環)結構

6.下面描述中錯誤的是( )。

A.系統總體結構圖支援軟件系統的詳細設計

B.軟件設計是將軟件需求轉換爲軟件表示的過程

C.數據結構與數據庫設計是軟件設計的任務之一

圖是軟件詳細設計的表示工具

7.負責數據庫中查詢操作的數據庫語言是( )。

A.數據定義語言

B.數據管理語言

C.數據操縱語言

D.數據控制語言

8.一個教師可講多門課程,一門課程可由多個教師講授,則實體教師和課程間的聯繫是( )。

A.1:1聯繫

B.1:m聯繫

C.m:1聯繫

D.m:n聯繫

9.有3個關係R、S和T如下表所示:

則由關係R和S得到關係T的操作是( )。

A.自然連接

B.交

C.除

D.並

10.定義無符號整數爲Uint,下面可以作爲類Uint實例化值的是( )。

A.-369

B.369

C.0.369

D.整數集合{1,2,3,4,5}

11.爲了提高函數調用的實際執行速度,可以將較簡單的函數定義爲( )。

A.內聯函數

B.重載函數

C.遞歸函數

D.函數模板

12.若AA爲一個類,a爲該類的非靜態數據成員,在該類的一個成員函數定義中訪問a時,其書寫格式爲( )。

A.a

.a

C.a{}

:a{}

13.當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成爲保護成員,這些成員在基類中原有的訪問屬性是( )。

A.任何

B.公有或保護

C.保護或私有

D.私有

14.若要對Date類中重載的加法運算符成員函數進行聲明,下列選項中正確的是( )。

+(Data);

operator+(Data);

+operator(Data);

ator+();

15.下列關於函數模板的描述中,正確的是( )。

A.函數模板是一個實例函數

B.使用函數模板定義的函數沒有返回類型

C.函數模板的類型參數與函數的參數相同

D.透過使用不同的類型參數,可以從函數模板得到不同的實例函數

16.C++系統預定義了3個用於標準數據流的對象,下列選項中不屬於此類對象的是( )。

ows環境下,由C++源程序檔案編譯而成的目標檔案的副檔名是( )。

18.字元串“a+b=12”的長度爲( )。

A.12

B.10

C.8

D.6

19.有如下程序:

#include

usingnamespacestd;

intmain( ){

intf,f1=0,f2=1;

for(inti=3;i<=6;i++){

f=f1+f2:

f1=f2;f2=f;

}

cout

}

執行時的輸出結果是( )。

A.2

B.3

C.5

D.8

20.有如下程序:

#include

usingnamespacestd;

intmain( ){

inta[6]={23,15,64,33,40,58};

ints1,s2;

s1=s2=a[0];

for(int*p=a+1;pif(s1>*p)s1=*p;

if(s2<*p)s2=*p;

}

cout

}

執行時的輸出結果是( )。

A.23

B.58

C.64

D.79

21.有如下程序:

#included

usingnamespacestd;

voidfl(int&X,int&y){intz=x;x=y;y=z;)voidf2(intX,inty){intz=x;x=y;y=z;}intmain( ){

intx=10,y=26;

f1(X,y);

f2(x,y);

cout

}

執行時的輸出結果是( )。

A.10

B.16

C.26

D.36

22.有如下程序:

#include

usingnamespacestd;

classXA{

inta;

public:

staticintb;

XA(intaa):a(aa){b++;}

~XA( ){}

intget( ){returna;}

};

intXA::b=0

intmain( ){

XAd1(1),d2(3);

cout

}

執行時的輸出結果是( )。

A.5

B.6

C.7

D.8

23.有如下程序:

#include

usingnamespacestd:

classPoint{

intx,y;

public:

Point(intx1=0,inty1=0)):X(X1),y(y1){}

intget( ){returnx+y;)

};

classCircle{

Pointcenter}

intradius;

public:

Circle(intCX,intcy,intr):center(cx,cy),radius(r)

{}

intget( ){( )+radius;}

};

intmain( ){

Circlec(3,4,5);

cout

}

執行時的輸出結果是( )。

A.5

B.7

C.9

D.12

24.若是對類BigNumber中重載的類型轉換運算符long進行聲明,下列選項中正確的是( )。

atorlong( )const;

atorlong(BigNumber);

operatorlong( )const;

operatorlong(BigNumber);

25.有如下函數模板定義:

template

T1FUN(T2n){returnn*5,0;}

若要求以int型數據9作爲函數實參調用該模板,並返回一個double型數據,則該調用應表示爲( )。

(9)

<9>

(9)

<9>(double)

26.下列語句都是程序執行時的第1條輸出語句,其中一條語句的輸出效果與其他3條語句不同,該語句是( )。

A.析構函數可以重載

B.析構函數由系統自動調用

C.每個對象的析構函數只被調用一次

D.每個類都有析構函數

28.下列關於構造函數的描述中,錯誤的是( )。

A.構造函數名與類名相同

B.構造函數可以有返回值

C.構造函數可以重載

D.每個類都有構造函數

29.若PAT是一個類,則程序執行時,語句“PAT(*ad){3};”調用PAT的構造函數的次數是( )。

A.0

B.1

C.2

D.3

30.下列描述中,錯誤的是( )。

A.公有繼承時基類中的公有成員在派生類中仍是公有成員

B.公有繼承時基類中的保護成員在派生類中仍是保護成員

C.保護繼承時基類中的公有成員在派生類中仍是公有成員

D.保護繼承時基類中的保護成員在派生類中仍是保護成員

31.生成派生類對象時,派生類構造函數調用基類構造函數的條件是( )。

A.無需任何條件

B.基類中顯式定義了構造函數

C.派生類中顯式定義了構造函數

D.派生類構造函數明確調用了基類構造函數

32.下列關於派生類和基類的描述中,正確的是( )。

A.派生類成員函數只能訪問基類的公有成員

B.派生類成員函數只能訪問基類的公有和保護成員

C.派生類成員函數可以訪問基類的所有成員

D.派生類對基類的'默認繼承方式是公有繼承

33.有如下類模板定義:

template

classBigNumber{

longn;

public;

BigNumber(Ti):n(i){}

BigNumberoperator+(BigNumberb){

returnBigNumber(n+b.n):

}

};

已知b1、b2是BigNumber的兩個對象,則下列表達式中錯誤的是( )。

A.b1+b2

B.b1+3

C.3+b1

D.3+3

34.下列關於檔案流的描述中,正確的是( )。

A.檔案流只能完成針對磁盤檔案的輸入、輸出

B.建立一個檔案流對象時,必須同時開啟一個檔案

C.若輸入流要開啟的檔案不存在。將建立一個新檔案

D.若輸出流要開啟的檔案不存在,將建立一個新檔案

35.有如下程序:

#include

usingnamespacestd;

classPair{

intm,n;

public;

Pair(intj,intk):m(j),n(k){}

intget( ){returnIn;}

intget( )const{returnm+n;}

};

intmain( ){

Paira(3,5);

constPairb(3,5);

cout

}

執行時的輸出結果是( )。

A.33

B.38

C.83

D.88

36.下列敘述中正確的是( )。

A.全局變量的作用域一定比局部變量的作用域範圍大

B.靜態類別變量的生存期貫穿於整個程序的執行期間

C.函數的形參都屬於全局變量

D.未在定義語句中賦初值的aut0變量和static變量的初值都是隨機值

37.假定MyClass爲一個類,則執行MyClassa,b(2),*p;語句時,自動調用該類構造函數( )次。

A.2

B.3

C.4

D.5

38.能正確表示邏輯關係”a≥10或a≤0”的C++語言表達式是( )。

A.a>=10ora<=0

B.a)一01a(一10

C.a>=10&&a<=0

D.a>=10||a(=0

39.若執行下面的程序時,從鍵盤上輸入5和2,則輸出結果是( )。

#include(iostream.h)

voidmain( )

(inta,b,k;

cin>>a>>b;

k=a:

if(ak=a%b;

else

k=b%a:

cout((k

B.3

C.2

D.0

40.假定MyClass爲一個類,那麼下列的函數說明中,( )爲該類的析構函數。

~MyClass( );

B.~MyC|ass(intn);

ass( );

D.~MyClass( );

TAGS: