經(jīng)典C語言測試題眾多知名企業(yè)用作招聘筆試題_第1頁
經(jīng)典C語言測試題眾多知名企業(yè)用作招聘筆試題_第2頁
經(jīng)典C語言測試題眾多知名企業(yè)用作招聘筆試題_第3頁
經(jīng)典C語言測試題眾多知名企業(yè)用作招聘筆試題_第4頁
經(jīng)典C語言測試題眾多知名企業(yè)用作招聘筆試題_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一個很牛的人生的被眾多知名IT企業(yè)用作面試題的看似很簡單C語言測試題C+/C試題本試題僅用于考查C+/C程序員的基本編程技能。內(nèi)容限于C+/C常用語法,不涉及數(shù)據(jù)結(jié)構(gòu)、算法以及深奧的語法??荚嚦煽兡芊从吵隹忌木幊藤|(zhì)量以及對C+/C的理解程度,但不能反映考生的智力和軟件開發(fā)能力。筆試時間90分鐘。請考生認(rèn)真答題,切勿輕視。一、請?zhí)顚態(tài)OOL,float,指針變量與“零值”比較的if語句。(10分)提示:這里“零值”可以是0,0.0,FALSE或者“空指針”。例如int變量n與“零值”比較的if語句為:if(n=0)if(n!=0)以此類推。請寫出BOOLflag與“零值”比較的if語句:請寫出

2、floatx與零值”比較的if語句:請寫出char*p與零值”比較的if語句:、以下為WindowsNT下的32位C+程序,請計算sizeof的值(10分)charstr口=Hello;voidFunc(charstr100)char*p=str;intn=10;請計算請計算sizeof(str)=sizeof(str)=sizeof(p)=sizeof(n)=void*p=malloc(100);請計算sizeof(p)=三、簡答題(25分)1、頭文件中的ifndef/define/endif干什么用?2、#include和#include“filename.h背什么區(qū)別?3、const有什

3、么用途?(請至少說明兩種)4、在C+程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加externC明?5、請簡述以下兩個for循環(huán)的優(yōu)缺點(diǎn)/第一個for(i=0;iN;i+)if(condition)DoSomething();elseDoOtherthing();/第二個if(condition)for(i=0;iN;i+)DoSomething();elsefor(i=0;i=-EPSINON)&(x=或“=”此類形式。如下是錯誤的寫法,不得分。if(x=0.0)if(x!=0.0)請寫出char*p與“零值”比較的if語句。(3分)標(biāo)準(zhǔn)答案:if(p=NULL)if(p!=NULL)如卜寫法

4、均屬不良風(fēng)格,不得分。if(p=0)if(p!=0)if(p)if(!)、以下為WindowsNT下的32位C+程序,請計算sizeof的值(10分)charstr口=Hello;voidFunc(charstr100)char*p=str;intn=10;請計算請計算sizeof(str)=4(2分)sizeof(str)=6(2分)sizeof(p)=4(2分)void*p=malloc(100);請計算sizeof(n)=4(2分)sizeof(p)=4(2分)三、簡答題(25分)干什么用? ( 5分)1、頭文件中的ifndef/define/endif答:防止該頭文件被重復(fù)引用。5分)

5、2、#include和#include“filename.h有什么區(qū)另1J?答:又行1#include,編譯器從標(biāo)準(zhǔn)庫路徑開始搜索filename.h對于#includefilename.h;編譯器從用戶的工作路徑開始搜索filename.h3、const有什么用途?(請至少說明兩種)(5分)答:(1)可以定義const常量(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動,能提高程序的健壯性。4、在C+程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加externC”(5分)答:C+語言支持函數(shù)重載,C語言不支持函數(shù)重載。函數(shù)被C

6、+編譯后在庫中的名字與C語言的不同。假設(shè)某個函數(shù)的原型為:voidfoo(intx,inty);該函數(shù)被C編譯器編譯后在庫中的名字為_foo,而C+編譯器則會產(chǎn)生像_foo_int_int之類的名字。C+提供了C連接交換指定符號externC”來解決名字匹配問題。5、請簡述以下兩個for循環(huán)的優(yōu)缺點(diǎn)(5分)for(i=0;iN;i+)if(condition)DoSomething();elseDoOtherthing();if(condition)for(i=0;iN;i+)DoSomething();elsefor(i=0;iN;i+)DoOtherthing();優(yōu)點(diǎn):程序簡潔缺點(diǎn):多執(zhí)

7、行了N-1次邏輯判斷,并且打斷了循環(huán)“流水線”作業(yè),使得編譯器不能對循環(huán)進(jìn)行優(yōu)化處理,降低了效率。優(yōu)點(diǎn):循環(huán)的效率局缺點(diǎn):程序不簡潔四、有關(guān)內(nèi)存的思考題(每小題5分,共20分)voidGetMemory(char*p)p=(char*)malloc(100);voidTest(void)char*str=NULL;GetMemory(str);strcpy(str,helloworld);printf(str);請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:程序崩潰。因?yàn)镚etMemory并不能傳遞動態(tài)內(nèi)存,Test函數(shù)中的str一直都是NULL。strcpy(str,helloworld);將使

8、程序崩潰。char*GetMemory(void)charp=helloworld;returnp;voidTest(void)char*str=NULL;str=GetMemory();printf(str);請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:可能是亂碼。因?yàn)镚etMemory返回的是指向棧內(nèi)存的指針,該指針的地址不是NULL,但其原現(xiàn)的內(nèi)容已經(jīng)被清除,新內(nèi)容/、可知。voidGetMemory2(char*p,intnum)*p=(char*)malloc(num);voidTest(void)char*str=NULL;GetMemory(&str,100);strcpy(str

9、,hello);printf(str);請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:(1)能夠輸出hello(2)1內(nèi)存泄漏voidTest(void)char*str=(char*)malloc(100);strcpy(str,hello);free(str);if(str!=NULL)strcpy(str,world);printf(str);請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:篡改動態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料,非常危險。因?yàn)閒ree(str);之后,str成為野指針,if(str!=NULL)語句/、起作用。五、編寫strcpy函數(shù)(10分)已知strcpy函數(shù)的原型是char*s

10、trcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不調(diào)用C+/C的字符串庫函數(shù),請編寫函數(shù)strcpychar*strcpy(char*strDest,constchar*strSrc);assert(strDest!=NULL)&(strSrc!=NULL);/2分char*address=strDest;/2分while(*strDest+=*strSrc+)!=0)/2分NULL;returnaddress;/2分(2)strcpy能把strSrc的內(nèi)容復(fù)制到strDest,為什么還要char*類型的返

11、回值?答:為了實(shí)現(xiàn)鏈?zhǔn)奖磉_(dá)式。2分例如intlength=strlen(strcpy(strDest,“helloworld);六、編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)(25分)已知類String的原型為:classStringpublic:/普通構(gòu)造函數(shù)/拷貝構(gòu)造函數(shù)/析構(gòu)函數(shù)/賦值函數(shù)/用于保存字符串String(constchar*str=NULL);String(constString&other);String(void);String&operate=(constString&other);private:char*m_data;;請編寫String的上述4個函數(shù)。標(biāo)準(zhǔn)

12、答案:/String的析構(gòu)函數(shù)String:String(void)/3分delete口m_data;/由于m_data是內(nèi)部數(shù)據(jù)類型,也可以寫成deletem_data;分若能加NULL判斷則更好若能加NULL判斷則更好分若能加NULL判斷則更好/ 13分分/ 3分/ 3 分若能加NULL判斷則更好/String的普通構(gòu)造函數(shù)String:String(constchar*str)/6if(str=NULL)m_data=newchar1;/*m_data=0;elseintlength=strlen(str);m_data=newcharlength+1;/strcpy(m_data,st

13、r);/拷貝構(gòu)造函數(shù)String:String(constString&other)/3intlength=strlen(other.m_data);m_data=newcharlength+1;/strcpy(m_data,other.m_data);/賦值函數(shù)String&String:operate=(constString&other)/(1)檢查自賦值4if(this=&other)return*this;/(2)釋放原有的內(nèi)存資源delete口m_data;/(3)分配新的內(nèi)存資源,并復(fù)制內(nèi)容intlength=strlen(other.m_data);m_data=newcharlength+1;/strcpy(m_data,other.m_data);/ 3分/(4)返回本對象的引用return*this;首先請做附錄B的C+/C試題(不要看答案),考查自己的編程質(zhì)量究竟如何。然后參照答案嚴(yán)格打分。(1)如果你只得了幾十分,請不要聲張,也不要太難過。編程質(zhì)量差往往是由于不良習(xí)慣造成的,與人的智力、能力沒有多大關(guān)系,還是有藥可救的。成績越差,可以進(jìn)步的空間就越大,中國不就是在落后中趕超發(fā)達(dá)資本主

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論