


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、貝爾筆試題及答案一、請(qǐng)?zhí)顚態(tài)OOL, float,指針變量與“零值”比較的if語句。(10分)請(qǐng)寫出BOOL flag與“零值”比較的if語句。(3分)標(biāo)準(zhǔn)答案:if ( flag ) if(!flag )如下寫法均屬不良風(fēng)格,不得分。if (flag = TRUE)if (flag = 1 )if (flag = FALSE)if (flag = 0)請(qǐng)寫出float x 與"零值"比較的if語句。(4分)標(biāo)準(zhǔn)答案示例:con st float EPSINON = 0. 00001;if (x >= - EPSINON) && (x <= EP
2、SINON)不可將浮點(diǎn)變量用或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“二” 此類形式。如下是錯(cuò)誤的寫法,不得分。if (x = 0. 0)if (x != 0. 0)請(qǐng)寫出char *p與"零值"比較的if語句。(3分)標(biāo)準(zhǔn)答案:if (p = NULL)if (p != NULL)如下寫法均屬不良風(fēng)格,不得分。if (p = 0)辻(p !二 0)if (p)if (!p)二、以下為Windows NT下的32位C+程序,請(qǐng)計(jì)算sizeof的值(10分)char str =“Hello"char *p = str ;int n 二 10;請(qǐng)計(jì)算siz
3、eof (str ) = 6 (2分)sizeof ( p ) 二 4 (2 分)sizeof ( n ) = 4 (2void Func ( char str100)請(qǐng)計(jì)算sizeof ( str )=4 (2void *p 二 malloc ( 100 );請(qǐng)計(jì)算sizeof ( p ) = 4 (2分)三、 簡答題 (25 分)1、頭文件中的 ifndef/define/endif 干什么用? (5 分) 答:防止該頭文件被重復(fù)引用。2、 9nelude?和 Ainclude "filename, h" 有什么區(qū)別? (5 分) 答:對(duì)于怖elude?,編譯器從標(biāo)準(zhǔn)庫
4、路徑開始搜索file name"對(duì)于怖elude"f訂ename, h",編譯器從用戶的工作路徑開始搜索filename.h3、 const 有什么用途? (請(qǐng)至少說明兩種 )(5 分)答:(1) 可以定義 const 常量(2) const 可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被 const 修 飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動(dòng),能提高程序的健壯性。4、在C+程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C” ? (5 分)答:C+語言支持函數(shù)重載,C語言不支持函數(shù)重載。函數(shù)被C+編譯后在庫中的名字與 C 語言的不同。假設(shè)某個(gè)函數(shù)
5、的原型為: void foo(int x, int y): 該函數(shù)被C編譯器編譯后在庫中的名字為_foo,而C+編譯器則會(huì)產(chǎn)生像_foo_int_int 之類的名字。C+提供了 C連接交換指定符號(hào)extern "C"來解決名 字匹配問題。5、請(qǐng)簡述以下兩個(gè) for 循環(huán)的優(yōu)缺點(diǎn) (5 分)for (i=0; i<N; i+)if (condition)DoSomething ();elseDoOtherthing();if (condition)for (i=0; i<N; i+)DoSomething ();elsefor (i=0; i<N; i+)D
6、oOtherthing ();優(yōu)點(diǎn):程序簡潔缺點(diǎn):多執(zhí)行了 N-1 次邏輯判斷,并且打斷了循環(huán)“流水線”作業(yè),使得 編譯器不能對(duì)循環(huán)進(jìn)行優(yōu)化處理,降低了效率。優(yōu)點(diǎn):循環(huán)的效率高缺點(diǎn):程序不簡潔四、有關(guān)內(nèi)存的思考題 (每小題 5分,共 20分)void GetMemory(char *p)p = (char *)malloc(100);void Test(void) char *str 二 NULL;GetMemory(str);strcpy(str, "hello world"); printf(str);請(qǐng)問運(yùn)行 Test 函數(shù)會(huì)有什么樣的結(jié)果?答:程序崩潰。因?yàn)镚etM
7、emory并不能傳遞動(dòng)態(tài)內(nèi)存,Test 函數(shù)中的 str 直都是 NULL。strcpy(str, "hello world");將使程序崩潰。char *GetMemory(void)char p 二"hello world" return p;void Test(void)char *str 二 NULL;str 二 GetMemory ();printf(str);請(qǐng)問運(yùn)行 Test 函數(shù)會(huì)有什么樣的結(jié)果?答:可能是亂碼。NULL,因?yàn)镚etMemory返回的是指向“棧內(nèi)存”的指針,該指針的地址不是 但其原現(xiàn)的內(nèi)容已經(jīng)被清除,新內(nèi)容不可知。void
8、 GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test (void)char *str = NULL;GetMemory(&str, 100); strcpy(str,hello );printf(str);請(qǐng)問運(yùn)行 Test 函數(shù)會(huì)有什么樣的結(jié)果?答:(1) 能夠輸出 hello(2) 內(nèi)存泄漏void Test(void)char *str = (char *) malloc(100); strcpy (str,“ hello ” );free(str);if(str != NULL)strcpy (str,“
9、 world ” );printf (str);請(qǐng)問運(yùn)行 Test 函數(shù)會(huì)有什么樣的結(jié)果?答:篡改動(dòng)態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料,非常危險(xiǎn)。因?yàn)閒ree (str); 之后,str成為野指針,辻(str != NULL)語句不起作用。五、 編寫 strcpy 函數(shù) (10 分)已知 strcpy 函數(shù)的原型是char *strcpy (char *strDest, const char *strSrc);其中 strDest 是目的字符串, strSrc 是源字符串。不調(diào)用 C+/C 的字符串庫函數(shù),請(qǐng)編寫函數(shù) strcpychar *strcpy (char *strDest, const
10、char *strSrc);assert(strDest!=NULL) && (strSrc !=NULL); / 2分 char address =strDest; / 2 分wlrdle( (*strDest+ = * strSrc+) !='0') / 2 分NULL ;return address ; / 2分 (2) strcpy 能把 strSrc 的內(nèi)容復(fù)制到 strDest, 為什么還要 char * 類型的 返 回值?答:為了實(shí)現(xiàn)鏈?zhǔn)奖磉_(dá)式。 / 2 分例如 int length = strlen( strcpy ( strDest, &quo
11、t;hello world” );六、 編寫類 String 的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù) (25 分) 已知類 String 的原型為:class Stringpublic:String (const char *str = NULL) ; /普通構(gòu)造函數(shù)String (const String &other) ; /拷貝構(gòu)造函數(shù) String (void) ; /析構(gòu)函數(shù)String & operate =(const String &other) ; /賦值函數(shù) private:char *m_data; / 用于保存字符串;請(qǐng)編寫 String 的上述 4 個(gè)
12、函數(shù)。標(biāo)準(zhǔn)答案:/ String 的析構(gòu)函數(shù)String:String(void) / 3分delete m_data;/ 由于 m_data 是內(nèi)部數(shù)據(jù)類型,也可以寫成 delete m_data; / String 的普通構(gòu)造函數(shù)String:String (const char *str) / 6分 if(str 二二 NULL)m_data = new char 1 ; / 若能加NULL判斷則更好 *ni_data ='0''elseint length = strlen(str);m_data = new char length+1 ; / (m_data,
13、 str);/ 拷貝構(gòu)造函數(shù)String:String(const String &other) / 3int length = strlen (other. m_data); m_data = new char length+1 ; / (m_data, other. m_data);/ 賦值函數(shù)若能加 NULL 判斷則更好 strcpy分若能加 NULL 判斷則更好 strcpy分Stri ng & Stri ng:operate二(const Stri ng & other) / 13/ (1) 檢查自賦值 /4 分 if(this = &other) r
14、eturn *this;/ (2) 釋放原有的內(nèi)存資源 / 3 分 delete m_data;分配新的內(nèi)存資源,并復(fù)制內(nèi)容/ 3分int len £ th = strlen (other. m_data); m_data = new char length+1 (m_data, other. m_data);/ (4) 返冋本對(duì)象的引用 7/ 3 分 return *this;/ 若 能 加 NULL 判 斷 則 更 好 strcpy求問 delete 和 delete 的區(qū)別? ?C+告訴我們?cè)诨厥沼胣ew分配的單個(gè)對(duì)象的內(nèi)存空間的時(shí)候用delete,回收 用new 分配的一組對(duì)
15、象的內(nèi)存空間的時(shí)候用 delete o樓主的這個(gè)問題提得很好。很多人注意到了這個(gè)問題,但是卻不清楚為什么要 這 樣做,不這樣做行不行。關(guān)于new和deleted ,其中又分為兩種情況: 為基本數(shù)據(jù)類型分配和回收空間;(2) 為自定義類型分配和回收空間。對(duì)于(1), 上面提供的程序已經(jīng)證明了 delete : 和 delete 是等同的。但是對(duì) 于 (2), 情況就發(fā)生了變化。請(qǐng)看下面的程序。#include <iostream>using namespace std;class T public:T() cout constructor" << endl; T
16、 () cout destructor" << endl; ;int main()const int NUM = 3;T* pl 二 new TNUM;cout hex << pl << endl;/ delete pl;delete pl;T* p2 = new TNUM; cout p2 << endl;delete p2;大家可以自己運(yùn)行這個(gè)程序,看一看 delete pl 和 delete pl 的不同結(jié)果, 我 就不在這里貼運(yùn)行結(jié)果了。從運(yùn)行結(jié)果中我們可以看出 delete pl在回收空間的過程中,只有 plO 這 個(gè)對(duì)象調(diào)用
17、了析構(gòu)函數(shù),其它對(duì)象如 pll、pl2 等都沒有調(diào)用自身的析構(gòu)函 數(shù),這就是問題的癥結(jié)所在。如果用 delete, 則在回收空間之前所有對(duì)象都 會(huì)首先 調(diào)用自己的析構(gòu)函數(shù)?;绢愋偷膶?duì)象沒有析構(gòu)函數(shù),所以回收基本類型組成的數(shù)組空間用 delete 和 delete 都是應(yīng)該可以的;但是對(duì)于類對(duì)象數(shù)組,只能用 delete 。對(duì)于 new 的 單個(gè)對(duì)象,只能用 delete 不能用 delete 回收空間。所以一個(gè)簡單的使用原則就是:new和delete new和delete對(duì)應(yīng)使用。 最速求 100 萬內(nèi)所有素?cái)?shù)的算法Iong vT i ckCount 二 Env i ronment. TickCount;u i nt MaxNumber = 1000000;boo I Numbers = new bool MaxNumber ; /都會(huì)初始為 0u i nt Return 二 new u i nt MaxNumber / 2 ; / 返回值 int Count = 0;for (uint i 二 2; i < MaxNumber; 阡 +)if (!Numbersi) / 可以處理ReturnCount+ = i;fo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年楚雄教練員從業(yè)資格理論考試題庫
- 我的小花園我的生活樂趣寫物(8篇)
- ××超市監(jiān)控系統(tǒng)細(xì)則
- 移動(dòng)支付業(yè)務(wù)合作協(xié)議附風(fēng)險(xiǎn)控制措施條款
- 財(cái)務(wù)成本控制與預(yù)算分析練習(xí)題
- 信息技術(shù)支持農(nóng)業(yè)發(fā)展的合作協(xié)議
- 新聞版權(quán)與報(bào)道協(xié)議
- 2025年無縫管熱連軋機(jī)項(xiàng)目申請(qǐng)報(bào)告
- 農(nóng)業(yè)種植技術(shù)與知識(shí)產(chǎn)權(quán)共享協(xié)議
- 小學(xué)生作文捅馬蜂窩(15篇)
- 2025年山東省高考招生統(tǒng)一考試高考真題化學(xué)試卷(真題+答案)
- 事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)制度
- 醫(yī)院培訓(xùn)課件:《緊急情況下口頭醫(yī)囑制度與執(zhí)行流程》
- 北京市大興區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末歷史試題(原卷版)
- 2023年山東省夏季普通高中學(xué)業(yè)水平合格考試會(huì)考生物試題及參考答案
- 北京市東城區(qū)名校2024年八年級(jí)物理第二學(xué)期期末質(zhì)量檢測試題及答案解析
- MOOC 中國文化概論-華南師范大學(xué) 中國大學(xué)慕課答案
- 美的審廠資料清單
- 人教版八年級(jí)美術(shù)下冊(cè)紋樣與生活第二課時(shí)設(shè)計(jì)紋樣
- 東北大學(xué)學(xué)報(bào)(自然科學(xué)版)排版模板(共4頁)
- PEP六年級(jí)下冊(cè)英語總復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論