CC++及大數(shù)據(jù)結(jié)構(gòu)筆精彩試題_第1頁
CC++及大數(shù)據(jù)結(jié)構(gòu)筆精彩試題_第2頁
CC++及大數(shù)據(jù)結(jié)構(gòu)筆精彩試題_第3頁
CC++及大數(shù)據(jù)結(jié)構(gòu)筆精彩試題_第4頁
CC++及大數(shù)據(jù)結(jié)構(gòu)筆精彩試題_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C/C+ 及數(shù)據(jù)結(jié)構(gòu)筆試題集錦String 的原型為:class Stringpublic :String(const char *str = NULL);/ 普通構(gòu)造函數(shù)String(const String ?);/ 拷貝構(gòu)造函數(shù)String(void);/ 析構(gòu)函數(shù)String & operator = (const String ?);/ 賦值構(gòu)造函數(shù)private:char * m_data;/ 用于保存字符串;請編寫 String 的上述 4 個函數(shù)。答案:版本 1:/ String 的析構(gòu)函數(shù)String:String(void) / 3 分delete m_data;/ 由于

2、m_data 是內(nèi)部數(shù)據(jù)類型,也可以寫成delete m_data;String:String(const char *str)if(str=NULL)m_data = new char1; / 若能加 NULL 判斷則更好*m_data = post.content ;elseint length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判斷則更好 strcpy(m_data, str);/ 拷貝構(gòu)造函數(shù)String:String(const String &other)int length = strlen(other.m_d

3、ata);m_data = new charlength+1; / 若能加 NULL 判斷則更好strcpy(m_data, other.m_data);/ 賦值函數(shù)String & String:operate =(const String &other)/ (1) 檢查自賦值if(this = &other)return *this;/ (2) 釋放原有的內(nèi)存資源delete m_data;/( 3 )分配新的內(nèi)存資源,并復(fù)制內(nèi)容int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判斷則更好 str

4、cpy(m_data, other.m_data);/( 4 )返回本對象的引用return *this;版本 2String:String (const char *str)if(str)memset(m_data,0,strlen(m_data);strcpy(m_data,str);else *m_data=0;String:String (const String ?)strcpy(m_data,copy.m_data);String& String:operator =(const String ?)if(this=?) retrun *this;strcpy(m_data,copy

5、.m_data);return *this;版本 3String:String (const char *str)if ( m_data )delete m_data;if(str)m_data = new charstrlen(str);memset(m_data,0,strlen(m_data);strcpy(m_data,str);else *m_data=0;String:String (const String ?)if ( m_data )delete m_data;m_data = new charstrlen(copy.m_data+1) strcpy(m_data,copy.

6、m_data);String& String:operator =(const String ?)if(this=?) retrun *this;if ( m_data )delete m_data;m_data = new charstrlen(copy.m_data+1) strcpy(m_data,copy.m_data);return *this;String:String(void)if ( m_data )delete m_data;二:改錯題,只能在原來的基礎(chǔ)上增加代碼,不能刪除代碼#include#includevoid foo(int age,char *b)b = (cha

7、r *)malloc(64);sprintf(b,Your Age is %d,age);int main()char *f;foo(23,f);printf(%sn,f);答案版本 1#include#includevoid foo(int age,char *b)*b = (char *)malloc(64);sprintf(*b,Your Age is %d,age);int main()char *f;foo(23,f);printf(%sn,*f);return 0;版本 2#include#includevoid foo(int age,char *&b)b = (char *)m

8、alloc(64);sprintf(b,Your Age is %d,age);int main()char *f;foo(23,f);printf(%sn,f);free(f);/ 不要忘了 free;三:有程序片斷如下int main()int I = 20;pid_t pid = 5;if(pid = fork() 0)I = 50;printf(%dn,I); (1)else if(pid = 0)printf(%dn,I); (2)請問該程序用的是進程方式還是線程方式,并說明進程與線程的區(qū)別:請問該程序輸出什么結(jié)果?無參考答案L四、 constant pointer points f

9、or String pointer points for constant string五、下面等價的是:A. int i=0if(i)printf(hello,world);B . int i=1;int j=2;if(i=1 | j=2)printf(hello,world);Boolean b1=true;Boolean b2=true;if(b1=b2)printf(hello,world);int i=1;int j=2;if(i=1 &| j=2)printf(hello,world);六、排序二叉樹插入一個節(jié)點或雙向鏈表的實現(xiàn)七、指針 + 的含義和用法八、 stack 和 hea

10、p 的分配, rt os 的特點、同步的方式九、怎樣避免內(nèi)存泄漏的問題十、編程實現(xiàn)十進制數(shù)轉(zhuǎn)化為十六進制輸出,不準用任何已經(jīng)定義的庫函數(shù).十一、編程實現(xiàn)大于100 的兩個數(shù)值相乘的結(jié)果輸出,同樣不準使用任何已定義函數(shù),Math,string,convert等。比方說 12345*32534677輸入為兩個string int toPlus(12345,32434677)輸出為一個長型的十二、 int delete(node * head)free(head);head=head-link;return(0);指出程序的錯誤,并且寫出正確的程序十三、寫一個程序可以算出字節(jié)在計算機中的存儲是由大到

11、小還是有小到大。十五、給兩個變量,如何找出一個帶環(huán)單鏈表中是什么地方出現(xiàn)環(huán)的。(答案參考 expert Cprogramming ) 。十六、寫一個帶參數(shù)宏get_struct_addr_from_member_addr(p, stru, m) ,能夠根據(jù)任意結(jié)構(gòu)實體的某一個成員的地址,算出該結(jié)構(gòu)實體的地址,其中參數(shù)p 是指向該成員的指針,stru 是該結(jié)構(gòu)體, m 是該成員。十七、給一個函數(shù)int main()int i, n=20;for(i=0;i這個語句有問題么? 沒有? const char * string =“ I am ok!三十八、關(guān)于實現(xiàn)swap 的方法:int p=1,

12、q=2;swap(&p , &q);下面三個函數(shù) ,哪個是正確的?(參考答案: 1 )、 void swap (int *p, *q) int temp;temp = *p;*p = *q;*q = temp;、 void swap(int *p, *q) int *temp;temp = *p;p = *q;q = *temp;、 void swap(int*p, *q) int *temp;temp = p;p = q;p = temp;4 、 main() swap(a, b);swap (int p, int q) int temp;temp = p;p = q;q = temp;三十

13、九、全局變量被static 變量重載,進行分析。有如下 C 程序:#include#includeint i = 0;int func();void main()int rst = 0;rst = func() + i ;rst += func() + i ;printf(%d, rst);int func() static i ;i+;return i;參考:其實并不是全局變量被static 重載,在函數(shù)內(nèi)如果定義了 i ,那么,全局變量i就不起作用了,什么意思,就是說如果i 在函數(shù)內(nèi)部定義了,那么函數(shù)內(nèi)部使用的 i是函數(shù)自己定義的,而不是全局變量的 i 。這里 static 是一個迷惑,其

14、實不用 static ,含意 也是一樣的,只是每次函數(shù)里的 i 的值不能保存了。全局變量不初始化,那么 int 的值為 0 ,局部變量不初始化,那么其值不知。四十、關(guān)于typedef和*相組合定義東西四十一、關(guān)于union 的使用,比如:#include#includevoid main() union xxx struct xx long int x;int y; p;int z; a;a.p.x = 5;a.p.y = 6;a.z = 7;printf(%d, a.p.x + a.p.y);打印出來的結(jié)果是什么?參考:結(jié)果為 13 ,解釋為:由于 union 是聯(lián)合,那么只能存在一個值,所

15、以 z 的值始終和 p.x 的值相等 union 的存儲空間有最大那個單元決定,所以當對p.z 賦值時,p.y 的值并沒有丟失。四十二、 long int i = -2; 那么 (int)i 的值是多少?參考: 仍然時 2 ,因為 i 用補碼表示為 fffe去掉高位,符號位不變,那么應(yīng)該是fe 所以依然是-2 。四十三、類定義的構(gòu)造函數(shù)提供缺省值與不提供缺省值,有何區(qū)別?四十四、C+ 主要特性包含哪些?什么是虛函數(shù),主要用處是什么?四十五、5 分鐘之內(nèi)寫一個排序算法。四十六、new/delete對象時,使用堆還是堆棧?四十三四十六為朗訊筆試題。四十七、程序執(zhí)行的時候怎么分配內(nèi)存空間,每個部分的作用?四十八、 實時操作系統(tǒng), 在 RS-232 上面, 如何設(shè)計才可以保證兩個任務(wù)

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論