C 筆試題整理

2021-08-19 19:46:55 字數 2340 閱讀 5282

cthing a(); 

cthing b(2);

cthing c[2];

cthing &test = b;

cthing d = b;

cthing *m_p = c;

cthing *m_q = new cthing(4);

題目解析:

cthing a();  /*這裡需要看清楚,在這並不是使用預設的建構函式構造物件,定義了乙個函式*/

cthing b(2);  //使用拷貝建構函式建立了乙個物件

cthing c[2];  //使用建構函式構造了兩個物件

cthing &test = b;  //test是乙個引用是b的別名,但是並不會建立新的物件

cthing d = b;  //使用拷貝建構函式建立乙個新的物件

cthing *m_p = c;  //這裡建立的是乙個m_p指標,並沒構造新的物件物件

cthing *m_q = new cthing(4);   //這裡新構造了乙個物件

因此上述**中構造出來了5個cthing物件。

a.,(逗號)  b. ()   c. .(點)    d.     e. ->

題目解析:

不能過載的運算子只有五個,它們是:成員運算子「.」、指標運算子「*」、作用域運算子「::」、「sizeof」、條件運算子「?:」。 

templateclass test

test operator+(test t)

};

這裡有兩個物件test1和test2,在以下表示式中表示錯誤的是:

a. 3+3   b. test1+3   c. test1+test2    d. 3+test1

題目解析:

這道題目是關於運算子的過載,對於operator+被定義成了成員函式,此時可以簡單的理解成this指標這時候指向的是左邊的運算元,這樣就可以更好的處理這道題目。

選項a:中3+3就是乙個普通的加法運算3+3,因此選項a是正確的;

選項b:中test1+3,test1是test類中的物件,因此可以呼叫它過載的加法運算子,此時相當於test1+test(3)之後再呼叫test類               的過載運算子+;

選項c:也會呼叫test類中的過載運算子;

選項d:3是乙個int型別,並不是test類的物件因此不能呼叫test類中過載的運算子+;

int main()

請選出程式輸出的正確結果()

a. i=1,j=2,k=3

b. i=2,j=3,k=4

c. i=2,j=2,k=3

d. i=2,j=3,k=3

正確答案:d

題目解析:

這段**考查了

邏輯運算中的短路問題。邏輯運算從左到右順序執行的過程中,當遇到邏輯運算子 '||'的時候,只要該運算子前面的滿足條件之後,對於後面的運算就不再執行了。

class test;

class mytest

~mytest()

};void show( mytest t ){}

int main()

請判斷程式執行結果()

a. 程式正常執行

b. 程式編譯錯誤

c. 程式崩潰

b. 程式死迴圈

正確答案: c

題目解析:

這裡程式崩潰的原因是編譯器在生成預設拷貝建構函式的時候使用的是位元組拷貝,也就是只是簡單的

淺拷貝。 從而導致在show中傳遞值時,呼叫了位元組拷貝的拷貝建構函式,在函式show結束是,show函式內部的區域性變數會發生一次析構,呼叫delete 銷毀了指標p,同時在main函式結束的時候,析構t時又會呼叫一次delete刪除指標p。也就是本程式會delete乙個已經被delete 的指標,因此造成程式的崩潰。

6、對於二維陣列int a[5][6],下面哪個表示不能表示a[1][1]?

a. *(&a[0][0]+7)  b. *(*(a+1)+1)

c. *(&a[1] +1 )          d. *(a[1]+1 )

正確答案: c

題目解析:

b選項:指標操作*(a+1)與a[1]等價,所以b也可以取得正確的值;

c選項:

這裡應改為*(&a[1][0]+1),因為a[1]就表示a[1][0]的位址

C 筆試題整理

1.已知string類定義如下 class string 嘗試寫出類的成員函式實現。答 string string const char str else string string const string another string string operator const string r...

C 筆試題整理(一)

1.已知string類定義如下 class string 嘗試寫出類的成員函式實現。答 string string const char str else string string const string another string string operator const string r...

筆試題整理

n副撲克,張數為m,大小為1 m,每幅撲克抽一張,求和恰好為k的組合數,結果對10e9 7取餘數。思路 動態規劃。和為i,j副撲克,dp i j dp i 1 j 1 dp i m j 1 此處需要判斷 i m 0 初始化,j 1,i m,dp i j 1 i j,dp i j 1,後面的情況不可能...