c和c++經(jīng)典筆試題及答案_第1頁
c和c++經(jīng)典筆試題及答案_第2頁
c和c++經(jīng)典筆試題及答案_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+/C 經(jīng)典筆試題及答案C+/C 試題C+/C C+/C C+/C 的理解程度,但不能反映考生的智力和軟件開發(fā)能力。筆試時間 90 分鐘.請考生認真答題,切勿輕視.BOOLfloat, 指針變量 與“零值比較的 if 語句。(10 分)提示:這里“零值”可以是 0, 0.0 , FALSE 或者“空指針”.例如 int 變量 n與“零值”比較的 if 語句為:if ( n = 0 ) if ( n != 0 )以此類推。BOOL flag if 請寫出 float x 與“零值”比較的 if 語句: char *p if 語句:二、以下為 Windows NT 下的 32 位 C+程序,請計

2、算 sizeof 的值(10 分)char strchar str = “Hello” ;charp = strintn = 10; 請計算sizeof (str ) =sizeof ( p ) =void Func ( char str100)請計算sizeof( str ) =void *p = malloc( 100 );請計算sizeof ( p ) =sizeof ( n ) =三、簡答題(25 分)1ifndef/define/endif 干什么用?2、include filename。h 和 include “filename.h 有什么區(qū)別?3、const 有什么用途?(請至少

3、說明兩種)4C+ 程序中調(diào)用被 C extern “C”聲明?DoOtherthing();else5、請簡述以下兩個 for DoOtherthing();else/ 第一個for (i=0;iN;i+)/if第二個(condition)if (condition)for (i=0; iN; i+)DoSomething();DoSomething();elsefor (i=0; iN; i+)DoOtherthing();優(yōu)點:缺點:優(yōu)點:缺點:四、有關(guān)內(nèi)存的思考題(20 分)voidGetMemory(char p)char GetMemory(void)p = (char *)mall

4、oc(100);char p = ”hello world”;return p;voidTest(void)void Test(void)char *str = NULL;GetMemory(str);char str = NULL; strcpy(str, ”hello world);str = printf(str);printf(str);請問運行Test函數(shù)會有什么樣的結(jié)請問運行Test函數(shù)會有什么樣的果?果?答:答:Void GetMemory2(char p, int void Test(void) num)char str = (char *)p = (char *)malloc

5、(num);malloc(100);strcpy(str,“hello”);voidTest(void)free(str);if(str != NULL)char str = NULL;GetMemory(str, 100);strcpy(str,printf(str); printf(str);請問運行Test函數(shù)會有什么樣的結(jié)請問運行Test函數(shù)會有什么樣的果?果?答:答:strcpy 函數(shù)(10 分) strcpy char strcpy(char *strDest, const char *strSrc); 其中 strDest 是目的字符串,strSrc 是源字符串。C+/C 的字符

6、串庫函數(shù),請編寫函數(shù) strcpystrcpystrSrc strDest,char 類型的返回值?String 的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)(25 分String 的原型為:class Stringpublic:String(const char str = NULL); / 普通構(gòu)造函數(shù)String(constString other);/ 拷貝構(gòu)造函數(shù)String(void);/ 析構(gòu)函數(shù)String & operate =(const String other);/ 賦值函數(shù)private:charm_data;/ 用于保存字符串;請編寫 String 的上述 4 個函數(shù)。C+/C

7、試題的答案與評分標準const float EPSINON = 0.00001;if (x = 。0)if (x = EPSINON) & (x =if (x != 0。EPSINON)不可將浮點變量用“=”或“!=”與0)數(shù)字比較,應該設(shè)法轉(zhuǎn)化成“=或“和 #include “filename。h” 有什么區(qū)別?(5 分) 答:對于#include filename.h ,編譯器從標準庫路徑開始搜索 filename。對于#include “filename。h” ,編譯器從用戶的工作路徑開始搜索 filename。h3、const 有什么用途?(請至少說明兩種)(5 分) 答:(1)可以定

8、義 const 常量(2)const 可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const 修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性.4C+ 程序中調(diào)用被 C 編譯器編譯后的函數(shù),extern “C? (5 分)答:C+語言支持函數(shù)重載,C C+C void foo(int x, int y);該函數(shù)被 C 編譯器編譯后在庫中的名字為_foo,而 C+編譯器則會產(chǎn)生像_foo_int_int 之類的名字.C+提供了 C 連接交換指定符號 extern“C來解決名字匹配問題。5、請簡述以下兩個 for 循環(huán)的優(yōu)缺點(5 分)for (i=0; iN; i+)if (

9、condition)for (i=0; iN; i+)if (condition)if (condition)for (i=0; iN; i+)DoSomething();elseDoOtherthing();elsefor (i=0; iN; i+) DoOtherthing();優(yōu)點:程序簡潔優(yōu)點:循環(huán)的效率缺點:多執(zhí)行了N-1次邏輯判斷,并 缺點:程序不簡潔且打斷了循環(huán)“流水線作業(yè),使得編譯器不能對循環(huán)進行優(yōu)化處理,降低了效率.低了效率.四、有關(guān)內(nèi)存的思考題(每小題 5 分,共 20 分)void GetMemory(char *p)char GetMemory(void)p = (ch

10、ar )malloc(100);char p = ”hello world;return p;voidTest(void)void Test(void)char str = NULL;GetMemory(str);char str = NULL; strcpy(str, ”hello world”);str = printf(str);printf(str);請問運行Test函數(shù)會有什么樣的結(jié)請問運行Test函數(shù)會有什么樣的果?果?答:程序崩潰.答:可能是亂碼.因為GetMemory并不能傳遞動態(tài)內(nèi)因為GetMemory返回的是指向“棧存,存”的指針,該指針的地址不是Test函數(shù)中的str一直

11、都是NULL。NULL,但其原現(xiàn)的內(nèi)容已經(jīng)被清除strcpy(str,helloworld”);將使 新內(nèi)容不可知。程序崩潰.void GetMemory2(char p, int void Test(void) num)char str = (char )p = (char )malloc(num); malloc(100);strcpy(str,“hello”);void Test(void)free(str);if(str != NULL)char str = NULL;GetMemory(&str, 100);strcpy(str, strcpy(str,”hello”);printf

12、(str); printf(str);請問運行Test函數(shù)會有什么樣的結(jié)請問運行Test函數(shù)會有什么樣的果?果?答:答:篡改動態(tài)內(nèi)存區(qū)的內(nèi)容后果難以(1)能夠輸出hello預料,非常危險。(2)內(nèi)存泄漏因為free(str);之后,str成為指針,if(str != NULL)語句不起作用。五、編寫 strcpy 函數(shù)(10 分)已知 strcpy 函數(shù)的原型是char *strcpy(char strDest, const char strSrc); 其中 strDest 是目的字符串,strSrc 是源字符串。C+/C 的字符串庫函數(shù),請編寫函數(shù) strcpychar *strcpy(ch

13、ar *strDest, const char strSrc);assert(strDest!=NULL)(strSrc !=NULL);/2char address=strDest;/ 2 分while( (strDest+ = strSrc+) != 0 ) / 2 分NULL ;returnaddress;/ 2 分strcpy能把strSrc 的內(nèi)容復制到strDest,為什么還要char * 類型的返回值答:為了實現(xiàn)鏈式表達式。/ 2 分例如intlength=strlen(strcpy(strDest,“helloworld”); 六、編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函

14、數(shù)(25分)String 的原型為class Stringpublic:String(const char str = NULL); / 普通構(gòu)造函數(shù)String(constString&other);/ 拷貝構(gòu)造函數(shù)String(void);/ 析構(gòu)函數(shù)String operate =(constString other);/ 賦值函數(shù)private:charm_data;/ 用于保存字符串;String 4 標準答案:/ String 的析構(gòu)函數(shù)String:String(void)/ 3 分delete m_data;/ 由于 m_data 是內(nèi)部數(shù)據(jù)類型,也可以寫成 delete m_

15、data;/ String 的普通構(gòu)造函數(shù)String:String(const char str)/ 6 分if(str=NULL)m_data = new char1; / NULL 判斷則更好m_data = 0;elseint length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判斷則更好strcpy(m_data, str);/ 拷貝構(gòu)造函數(shù)String::String(const String &other)/ 3 分int length = strlen(other。m_data);m_datanewcharlength+1;/ NULL 判斷則更好strcpy(m_data, other。m_data);/ 賦值函數(shù)String&String:operate(constStr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論