計(jì)算機(jī)常見算法面試題_第1頁(yè)
計(jì)算機(jī)常見算法面試題_第2頁(yè)
計(jì)算機(jī)常見算法面試題_第3頁(yè)
計(jì)算機(jī)常見算法面試題_第4頁(yè)
計(jì)算機(jī)常見算法面試題_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、簡(jiǎn)介:計(jì)算機(jī)考研之家搜集的華為C語(yǔ)言經(jīng)典面試題,來(lái)試試你的C語(yǔ)言水平吧。每道題都附有詳細(xì)解答和講解,很有參考價(jià)值的C語(yǔ)言面試題。怎么判斷鏈表中是否有環(huán)boolCircleInList(Link*pHead)if(pHead=NULL|pHead->next=NULL)一函數(shù),實(shí)現(xiàn)刪除字符串str1中含有的字符串str2.第二個(gè)就是利用一個(gè)KMP匹配算法找到str2然后刪除(用鏈表實(shí)現(xiàn)的話,便捷于數(shù)組)/*雅虎筆試題(字符串操作)給定字符串A和B,輸出A和B中的最大公共子串。比如A="aocdfe"B="pmcdfa"則輸出"cdf&quo

2、t;*/一個(gè)函數(shù)比較兩個(gè)字符串str1和str2的大小,若相等返回0,若str1大于str2返回1,若str1小于str2返回1intstrcmp(constchar*src,constchar*dst)intret=0;while(!(ret=*(unsignedchar*)src-*(unsignedchar*)dst)&&*dst)+src;+dst;if(ret<0)ret=-1;elseif(ret>0)ret=1;return(ret);3,求1000!的未尾有幾個(gè)0(用素?cái)?shù)相乘的方法來(lái)做,如72=2*2*2*3*3);求出1->1000里,能被5

3、整除的數(shù)的個(gè)數(shù)n1,能被25整除的數(shù)的個(gè)數(shù)n2,能被125整除的數(shù)的個(gè)數(shù)n3,能被625整除的數(shù)的個(gè)數(shù)n4.1000!末尾的零的個(gè)數(shù)=n1+n2+n3+n4;#include#defineNUM1000intfind5(intnum)intret=0;while(num%5=0)num/=5;ret+;returnret;intmain()intresult=0;inti;for(i=5;i<=NUM;i+=5)result+=find5(i);printf("thetotalzeronumberis%dn",result);return0;1. 有雙向循環(huán)鏈表結(jié)點(diǎn)定

4、義為:structnodeintdata;structnode*front,*next;data有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請(qǐng)寫一函數(shù)將兩鏈表中值相同的結(jié)點(diǎn)刪除BOOLDeteleNode(Node*pHeader,DataTypeValue)if(pHeader=NULL)return;BOOLbRet=FALSE;Node*pNode=pHead;while(pNode!=NULL)if(pNode->data=Value)if(pNode->front=NULL)pHeader=pNode->next;pHeader->f

5、ront=NULL;elseif(pNode->next!=NULL)pNode->next->front=pNode->front;pNode->front->next=pNode->next;Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;bRet=TRUE;編程實(shí)現(xiàn):找出兩個(gè)字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串為"cad"intGetCommon(char*s1,char*s2,c

6、har*r1,char*r2)intlen1=strlen(s1);intlen2=strlen(s2);intmaxlen=0;for(inti=0;i<len1;i+)for(intj=0;j<len2;j+)if(s1i=s2j)intas=i,bs=j,count=1;while(as+1<len1&&bs+1<len2&&s1+as=s2+bs)count+;if(count>maxlen)maxlen=count;*r1=s1+i;*r2=s2+j;3.編程實(shí)現(xiàn):把十進(jìn)制數(shù)(long型)分別以二進(jìn)制和十六進(jìn)制形式輸出,不

7、能使用printf系列庫(kù)函數(shù)char*test3(longnum)char*buffer=(char*)malloc(11);buffer0='0'buffer1='x'buffer10='0'char*temp=buffer+2;for(inti=0;i<8;i+)tempi=(char)(num«4*i»28);tempi=tempi>=0tempi:tempi+16;tempi=tempi<10tempi+48:tempi+55;)returnbuffer;)輸入N,打印N*N矩陣比如N=3,打?。?2

8、389476512341213145111615610987解答:1 #defineN15intsNN;voidmain()(intk=0,i=0,j=0;inta=1;for(;k<(N+1)/2;k+)(while(j<N-k)sij+=a+;i+;j-;while(i<N-k)si+j=a+;i-;j-;while(j>k-1)sij-=a+;i-;j+;while(i>k)si-j=a+;i+;j+;)for(i=0;i<N;i+)for(j=0;j<N;j+)cout«sij«'t'cout«en

9、dl;2 defineMAX_N100intmatrixMAX_NMAX_N;/* (x,y):第一個(gè)元素的坐標(biāo)* start:第一個(gè)元素的值* n:矩陣的大小*/voidSetMatrix(intx,inty,intstart,intn)inti,j;if(n<=0)調(diào)用庫(kù)函數(shù),實(shí)現(xiàn)strcpy函數(shù)。2. 解釋為什么要返回char*。解說(shuō):的實(shí)現(xiàn)代碼char*strcpy(char*strDest,constchar*strSrc)if(strDest=NULL)|(strSrc=NULL)"Invalidargument(s)"/2char*strDestCopy

10、=strDest;(*strDest+=*strSrc+)!='0');strDestCopy;錯(cuò)誤的做法:1(A)不檢查指針的有效性,說(shuō)明答題者不注重代碼的健壯性。(B) 檢查指針的有效性時(shí)使用(!strDest)|(!strSrc)或(!(strDest&&strSrc),說(shuō)明答題者對(duì)C語(yǔ)言中類型的隱式轉(zhuǎn)換沒有深刻認(rèn)識(shí)。在本例中char*轉(zhuǎn)換為bool即是類型隱式轉(zhuǎn)換,這種功能雖然靈活,但更多的是導(dǎo)致出錯(cuò)概率增大和維護(hù)成本升高。所以C+m門增加了bool、true、false三個(gè)關(guān)鍵字以提供更安全的條件表達(dá)式。(C) 檢查指針的有效性時(shí)使用(strDest=

11、0)|(strSrc=0),說(shuō)明答題者不知道使用常量的好處。直接使用字面常量(如本例中的0)會(huì)減少程序的可維護(hù)性。0雖然簡(jiǎn)單,但程序中可能出現(xiàn)很多處對(duì)指針的檢查,萬(wàn)一出現(xiàn)筆誤,編譯器不能發(fā)現(xiàn),生成的程序內(nèi)含邏輯錯(cuò)誤,很難排除。而使用NULL代替0,如果出現(xiàn)拼寫錯(cuò)誤,編譯器就會(huì)檢查出來(lái)。2(A)returnnewstring("Invalidargument(s)");,說(shuō)明答題者根本不知道返回值的用途,并且他對(duì)內(nèi)存泄漏也沒有警惕心。從函數(shù)中返回函數(shù)體內(nèi)分配的內(nèi)存是十分危險(xiǎn)的做法,他把釋放內(nèi)存的義務(wù)拋給不知情的調(diào)用者,絕大多數(shù)情況下,調(diào)用者不會(huì)釋放內(nèi)存,這導(dǎo)致內(nèi)存泄漏。(B)return0;,說(shuō)明答題者沒有掌握異常機(jī)制。調(diào)用者有可能忘記檢查返回值,調(diào)用者還可能無(wú)法檢查返回值(見后面的鏈?zhǔn)奖磉_(dá)式)。妄想讓返回值肩負(fù)返回正確值和異常值的雙重功能,其結(jié)果往往是兩種功能都失效。應(yīng)該以拋出異常來(lái)代替返回值,這樣可以減輕調(diào)用者的負(fù)擔(dān)、使錯(cuò)誤不會(huì)被忽略、增強(qiáng)程序的可維護(hù)性。3(A)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論