【正文】
no difference31. For a class what would happen if we call a class’s constructor from with the same class’s constructor .a. pilation error b. linking errorc. stack overflow d. none of the above32. “new” in c++ is a: .a. library function like malloc in cb. key word c. operatord. none of the above33. Which of the following information is not contained in an inode .a. file owner b. file sizec. file name d. disk address34. What’s the number of parisons in the worst case to merge two sorted lists containing n elements each .a. 2n +1 35. Time plexity of n algorithm T(n), where n is the input size ,is T(n)=T(n1)+1/n if n1 otherwise 1 the order of this algorithm is .a. log (n) b. n c. n^2 d. n^n36. The number of 1’s in the binary representation of 3*4096+ 15*256+5*16+3 are .a. 8 b. 9 c. 10 d. 1237.設(shè)計(jì)函數(shù) int atoi(char *s)。 printf(“%d”, i)。 40.解釋堆和棧的區(qū)別。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表.41.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點(diǎn)。而使用帶參的宏只是進(jìn)行簡(jiǎn)單的字符替換。,二者的類型要求一致,如不一致,應(yīng)進(jìn)行類型轉(zhuǎn)換;而宏不存在類型問(wèn)題,宏名無(wú)類型,它的參數(shù)也無(wú)類型,只是一個(gè)符號(hào)代表,展開(kāi)時(shí)帶入指定的字符即可。,而用宏可以設(shè)法得到幾個(gè)結(jié)果。,只占編譯時(shí)間;而函數(shù)調(diào)用則占運(yùn)行時(shí)間(分配單元、保留現(xiàn)場(chǎng)、值傳遞、返回)。42. 以下三條輸出語(yǔ)句分別輸出什么?[C易]char str1[] = abc。const char str3[] = abc。 const char* str5 = abc。cout boolalpha ( str1==str2 ) endl。 // 輸出什么?0cout boolalpha ( str5==str6 ) endl。str1和str2都是字符數(shù)組,每個(gè)都有其自己的存儲(chǔ)區(qū),它們的值則是各存儲(chǔ)區(qū)首地址,不等;str3和str4同上,只是按const語(yǔ)義,它們所指向的數(shù)據(jù)區(qū)不能修改。43. 非C++內(nèi)建型別 A 和 B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?[C++中等]答:BDa. class B : public A { ……} // B公有繼承自A,可以是間接繼承的b. class B { operator A( )。 )。 operator= ( const Aamp。 // 賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,但也可以勉強(qiáng)算一個(gè)44. 以下代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?[C易]void UpperCase( char str[] ) // 將 str 中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母{for( size_t i=0。 ++i )if( 39。=str[i] amp。 str[i]=39。 )str[i] = (39。39。 )。cout str字符長(zhǎng)度為: sizeof(str)/sizeof(str[0]) endl。cout str endl。039。939。A39。939。char cl = c%0x10 + 39。 if( cl 39。 ) cl += (39。39。1)。 39。for( size_t i=0。 ++i )char2Hex( str[i] )。46. 以下代碼有什么問(wèn)題?[C++易]struct Test{Test( int ) {}Test() {}void fun() {}}。()。()。//定義了一個(gè)函數(shù)47. 以下代碼有什么問(wèn)題?[C++易]cout (true?1:1) endl。char str1[ size1 ]。cin temp。char str2[ size2 ]。CLS( int i ) : m_i(i) {}CLS(){CLS(0)。CLS obj。49. C++中的空類,默認(rèn)產(chǎn)生哪些類成員函數(shù)?[C++易]答:class Empty{public:Empty()。 )。 // 析構(gòu)函數(shù)Emptyamp。 )。()。() const。50. 以下兩條輸出語(yǔ)句分別輸出什么?[C++難]float a = 。cout (intamp。cout boolalpha ( (int)a == (intamp。 // 輸出什么0float b = 。cout (intamp。cout boolalpha ( (int)b == (intamp。 // 輸出151. 以下反向遍歷array數(shù)組的方法有什么錯(cuò)誤?[STL易]vector array。( 2 )。for( vector::size_type i=()1。 i ) // 反向遍歷array數(shù)組{cout array[i] endl。IntArray array。( 2 )。( 3 )。 itor!=()。}53. 寫(xiě)一個(gè)函數(shù),完成內(nèi)存之間的拷貝。const char* psrc = static_castconst char*( src )。amp。 i!=1。}else{for( size_t i=0。 ++i )pdest[i] = psrc[i]。}int main( void ){char str[] = 0123456789。cout str endl。return 0。55:請(qǐng)你分別劃劃OSI(開(kāi)放式系統(tǒng)互聯(lián))的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖? 56:請(qǐng)你詳細(xì)的解釋一下IP協(xié)議的定義,在哪個(gè)層上面,主要有什么作用? TCP與UDP呢? IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實(shí)現(xiàn)了Internet中自動(dòng)路由的功能,即尋徑的功能,TCP協(xié)議是一個(gè)傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦裕蛏咸峁┮粋€(gè)可靠的點(diǎn)到點(diǎn)的傳輸,UDP提供的是一種無(wú)連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸57:請(qǐng)問(wèn)交換機(jī)和路由器分別的實(shí)現(xiàn)原理是什么?分別在哪個(gè)層次上面實(shí)現(xiàn)的? 交換機(jī)用在局域網(wǎng)中,交換機(jī)通過(guò)記錄局域網(wǎng)內(nèi)各節(jié)點(diǎn)機(jī)器的MAC地質(zhì)(物理地址)就可以實(shí)現(xiàn)傳遞報(bào)文,無(wú)需看報(bào)文中的IP地址。路由器通過(guò)察看報(bào)文中IP地址,來(lái)決定路徑,向那個(gè)子網(wǎng)(下一跳)路由,也就是說(shuō)交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地址但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來(lái)越模糊。 C++的class具有數(shù)據(jù)封裝功能,其包含屬性訪問(wèn)級(jí)別可以為private,public和protect,還具有實(shí)現(xiàn)類接口功能和輔助功能的操作函數(shù),而struct屬性訪問(wèn)權(quán)限只有public,沒(méi)有數(shù)據(jù)封裝功能,也就沒(méi)有實(shí)現(xiàn)信息隱藏這一面向?qū)ο蟮乃枷氲臋C(jī)制,struct本身不含有操作函數(shù),只有數(shù)據(jù)。如果基類的函數(shù)用virtual修飾,成為虛函數(shù),則其派生類相應(yīng)的重載函數(shù)仍能繼承該虛函數(shù)的性質(zhì),虛函數(shù)進(jìn)行動(dòng)態(tài)聯(lián)編,也即具有多態(tài)性,也就是派生類可以改變基類同名函數(shù)的行為,在面向?qū)ο笫澜缰?,多態(tài)是最強(qiáng)大的機(jī)制,虛函數(shù)就是這一機(jī)制的c++實(shí)現(xiàn)方式。全局變量分配在全局?jǐn)?shù)據(jù)段并且在程序開(kāi)始運(yùn)行的時(shí)候被加載. 局部變量則分配在堆棧里面。 交換機(jī)用在局域網(wǎng)中,交換機(jī)通過(guò)紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點(diǎn)機(jī)器的MAC地質(zhì)(物理地址)就可以實(shí)現(xiàn)傳遞報(bào)文,無(wú)需看報(bào)文中的IP地質(zhì)。路由器通過(guò)察看報(bào)文中IP地址,來(lái)決定路徑,向那個(gè)子網(wǎng)(下一跳)路由,也就是說(shuō)交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質(zhì)但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來(lái)越模糊。Test b()。2 引用在創(chuàng)建后就不能改變引用的關(guān)系,而指針在初始化后可以隨時(shí)指向其它的變量或?qū)ο蟆?遇到的困難,怎樣解決? class CMyObject:pulic CObject{Public:CMyObject()。operator=(const CMyObject amp。private:CString strName。請(qǐng)重載賦值操作符Struct structList{int value。}Struct LinkedList *pMyList。要求有簡(jiǎn)單界面即可,支持多人聊天。B,結(jié)構(gòu)中不允許定義成員函數(shù),當(dāng)是類中可以定義成員函數(shù)。D,結(jié)構(gòu)和類對(duì)象都必須使用new 創(chuàng)建?,F(xiàn)在要在ClassA 中增加定義一個(gè)成員函數(shù)ClassA::AdditionalPunction(ClassA a,ClassB b)。()。()。()。C,()。()。()。因?yàn)闃?gòu)造函數(shù)可以有多個(gè)且可以帶參數(shù),而析構(gòu)函數(shù)只能有一個(gè),且不能帶參數(shù)。1 #include “”和#include 的區(qū)別?答:#i nclude “”表明該文件是用戶提供的頭文件,查找該文件時(shí)從當(dāng)前文件目錄開(kāi)始;#i nclude 表明這個(gè)文件是一個(gè)工程或標(biāo)準(zhǔn)頭文件,查找過(guò)程會(huì)檢查預(yù)定義的目錄。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫(kù)即可。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這一簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。4 內(nèi)存的分配方式的分配方式有幾種?答:一、從靜態(tài)存儲(chǔ)區(qū)域分配。例如全局變量。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。三、從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。動(dòng)態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問(wèn)題也最多。答:雙向鏈表刪除一個(gè)節(jié)點(diǎn)Ptemplateclass type void listtype::delnode(int p){int k=1。ptr=first。amp。k++。cout你已經(jīng)將數(shù)據(jù)項(xiàng) tdata刪除endl。length。}在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn):templateclass type bool listtype::insert(type t,int p){listnodetype *ptr。int k=1。amp。k++。amp。else{listnodetype *tp。tpdata=t。ptrnext=tp。return true。(10分)提示:這里“零值”可以是0, , FALSE或者“空指針”。請(qǐng)寫(xiě)出 BOOL flag 與“零值”比較的 if 語(yǔ)句:請(qǐng)寫(xiě)出 float x 與“零值”比較的 if 語(yǔ)句:請(qǐng)寫(xiě)出 char *p 與“零值”比較的 if 語(yǔ)句:二、以下為Windows NT下的32位C++程序,請(qǐng)計(jì)算sizeof的值(10分)char str[] = “Hello” 。int n = 10。請(qǐng)計(jì)算sizeof ( p ) =、簡(jiǎn)答題(25分)頭文件中的 ifndef/define/endif 干什么用?防止頭文件重復(fù)定義。 #i nclude 和 #i nclude “” 有什么區(qū)別?答:#i nclude “”表明該文件是用戶提供的頭文件,查找該文件時(shí)從當(dāng)前文件目錄開(kāi)始;#i nclude 表明這個(gè)文件是一個(gè)工程或標(biāo)準(zhǔn)頭文件,查找過(guò)程會(huì)檢查預(yù)定義的目錄。在C++中,還可以修飾函數(shù)的定義體,定義類的const成員函數(shù)。 在C++ 程序中調(diào)用被 C編譯器編譯后的函數(shù),為什么要加 extern “C”聲明? 答:C++語(yǔ)言支持函數(shù)重載,C 語(yǔ)言不支持函數(shù)重載。假設(shè)某個(gè)函數(shù)的原型為: void foo(int x, int y)。C++提供了C 連接交換指定符號(hào)extern“C”來(lái)解決名字匹配問(wèn)題。 iN。elseDoOtherthing()。 iN。}else{for (i=0。 i++)DoOtherthing()。}void Test(void) {char *str = NULL。strcpy(str, hello world)。}請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?char *GetMemory(void){char p[] = hello world。}void Test(void){char *str = NULL。printf(str)。}void Test(void){char *str =