題目集合2

2021-07-27 21:43:52 字數 3721 閱讀 5115

1、10、10、4、4四個數,怎麼算出24點?

(10*10-4)/4=24

2、下列表示式在32位機器編譯環境下的值()

class a  

; class b

; class c

; class d

; int main(void)

a、1、4、84、82b、4、4、82、84 c、4、4、84、82 d、1、4、82、82

a類是空類,例項化類會在記憶體中位址唯一,佔乙個位元組。b類由於有虛函式,虛函式指標佔4個位元組。c類是4位元組對齊,d類是1個位元組對齊。

3、以下程式在32位機器下執行的結果是()

#pragma pack(4)  

struct info_t

; union info_u

; #pragma pack()

int main(void)

a、12 12 b、12 4c、16 4d、16 12 e、16 1

考察位元組對齊,union是復用位址的,取所佔位元組最大的型別。

4、以下表示式result的值是()

#define val1(a,b) a*b  

#define val2(a,b) a/b--

#define val3(a,b) ++a%b

int a = 1;

int b = 2;

int c = 3;

int d = 3;

int e = 5;

int result = val2(a,b)/val1(e,b)+val3(c,d);

a、-2 b、1 c、0 d、2

巨集僅進行簡單的字元替換。

5、請寫出以下程式的輸出(5分)

void swap_1(int a , int b)  

void swap_2(int &a , int &b)

void swap_3(int

*a , int

*b)

int main(void)

輸出結果:

a = 100 , b = 200 //由於在函式類,傳遞的是a,b的副本,在棧區進行了互動,程式呼叫完就結束了。

a = 200 , b = 100

a = 200 , b = 100

6、下面的程式是否有問題,如有問題,請重構**(5分)

void test_type(bool b , const

char *p , float f)

else

if(!p)

else

if(!f)

}

修改如下:

void test_type(bool b , const

char *p , float f)

else

if(!p)

else

if(!(f > -1e-5 && f < 1e-5))

}

考察不同型別等於零

7、請指出以下程式有什麼問題(5分)

void test_mem()  

由於指標p指向字元陣列,釋放需要用delete p[ ]

8、以下程式有什麼問題,請指出。

char* getmem()  

void test_get_mem()

9、請寫出strcpy 和 memcpy 的區別(5分)

strcpy拷貝的是字串,是以『\0』結尾 ,而memcpy是按照size_t的大小進行拷貝。memcpy可以拷貝不同型別的記憶體。memcpy進行記憶體拷貝時進行記憶體重疊檢測等等。

10、請寫出以下程式的輸出結果

class base  

virtual ~base()

public:

virtual

void sayhello()

void sayworld()

};

class derived : public base

virtual ~derived()

public:

void sayhello();

void sayworld();

};

void derived::sayhello()

void derived::sayworld()

int main(void)

主要考察多型性。

i am base()

i am base()

i am derived()

i am base()

i am derived()

hello base

world base

hello derived

world base

hello derived

world derived

i am ~derived()

i am ~base()

i am ~derived()

i am ~base()

i am ~base()

11、閱讀以下程式並給出執行結果

class bclass  

virtual

int fun()

protected:

int x , y;

};

class lclass : public bclass

int fun()

private:

int z;

};

int main(void)

0

5 0

5 12、如何減少頻繁分配記憶體(malloc或者new)造成的記憶體碎片?(10分)

使用記憶體池。我們習慣用作業系統為使用者提供的api ,malloc,new函式對記憶體操作,這往往造成頻繁進行不同記憶體大小的開闢,會造成記憶體碎片,而記憶體池,在真正使用記憶體之前,會開闢大小相等,數量不同的記憶體塊,當需要記憶體塊時,從記憶體池中取記憶體塊,當記憶體塊不夠時,繼續向記憶體申請新的記憶體,這樣能夠減少對記憶體的申請次數,能夠盡量避免記憶體碎片,提高程式的執行效率等等。

13、請寫出strchr的實現(10分)

函式功能:找出在字串str中第一次出現字元ch的位置,找到就返回該字元位置的指標(也就是返回該字元在字串中的位址的位置),找不到就返回空指標(就是null)

const

char* strchr(const

char* str , char ch)

while(str != null)

str++;

}return null;

}

4、請寫出氣泡排序法演算法(20分)

void bubblesort(int r , int n) }}

}

BFS題目集合

有時間要去做做這些題目,所以從他人空間copy過來了,謝謝那位大蝦啦。解法 bfs,要注意的是如何判斷圖形是一樣的,我的做法就是計算每兩個點的距離之和。看 解法 dfs 簡單題目。pku 1077 eight 解法 廣搜,雙向光搜,a ida 其中 a 時間最好,雙向的廣搜也ok ida 時間500...

MST題目集合

poj1287networkoing 輸入有重邊的mst,裸題,記得判有效邊 po1789truck history 不太明顯,每個字串是乙個結點,不同的字元數目是權重,構建的是完全圖,最後輸出1 權重和。poj2031building a space station 在構建圖的權值的時候預處理。要...

回溯題目集合 貳

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 所有數字 包括 target 都是正整數。解集不能包含重複的組合。題目鏈結 解析 1.需要傳遞...