計算機常見算法面試題_第1頁
計算機常見算法面試題_第2頁
計算機常見算法面試題_第3頁
計算機常見算法面試題_第4頁
計算機常見算法面試題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機常見算法面試題計算機常見算法面試題計算機常見算法面試題xxx公司計算機常見算法面試題文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設計,管理制度簡介:計算機考研之家搜集的華為C語言經(jīng)典面試題,來試試你的C語言水平吧。每道題都附有詳細解答和講解,很有參考價值的C語言面試題。怎么判斷鏈表中是否有環(huán)boolCircleInList(Link*pHead){if(pHead==NULL||pHead->next==NULL)一函數(shù),實現(xiàn)刪除字符串str1中含有的字符串str2.第二個就是利用一個KMP匹配算法找到str2然后刪除(用鏈表實現(xiàn)的話,便捷于數(shù)組)/*雅虎筆試題(字符串操作)給定字符串A和B,輸出A和B中的最大公共子串。比如A="aocdfe"B="pmcdfa"則輸出"cdf"*/一個函數(shù)比較兩個字符串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!的未尾有幾個0(用素數(shù)相乘的方法來做,如72=2*2*2*3*3);求出1->1000里,能被5整除的數(shù)的個數(shù)n1,能被25整除的數(shù)的個數(shù)n2,能被125整除的數(shù)的個數(shù)n3,能被625整除的數(shù)的個數(shù)n4.1000!末尾的零的個數(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%d\n",result);return0;}1.有雙向循環(huán)鏈表結(jié)點定義為:structnode{intdata;structnode*front,*next;};有兩個雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫一函數(shù)將兩鏈表中data值相同的結(jié)點刪除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->front=NULL;}else{if(pNode->next!=NULL){pNode->next->front=pNode->front;}pNode->front->next=pNode->next;}Node*pNextNode=pNode->next;deletepNode;pNode=pNextNode;bRet=TRUE;編程實現(xiàn):找出兩個字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串為"cad"intGetCommon(char*s1,char*s2,char**r1,char**r2){intlen1=strlen(s1);intlen2=strlen(s2);intmaxlen=0;for(inti=0;i<len1;i++){for(intj=0;j<len2;j++){if(s1[i]==s2[j]){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.編程實現(xiàn):把十進制數(shù)(long型)分別以二進制和十六進制形式輸出,不能使用printf系列庫函數(shù)char*test3(longnum){char*buffer=(char*)malloc(11);buffer[0]='0';buffer[1]='x';buffer[10]='\0';char*temp=buffer+2;for(inti=0;i<8;i++){temp[i]=(char)(num<<4*i>>28);temp[i]=temp[i]>=0temp[i]:temp[i]+16;temp[i]=temp[i]<10temp[i]+48:temp[i]+55;}returnbuffer;}輸入N,打印N*N矩陣比如N=3,打?。?23894765N=4,打印:12341213145111615610987解答:1#defineN15ints[N][N];voidmain(){intk=0,i=0,j=0;inta=1;for(;k<(N+1)/2;k++){while(j<N-k)s[i][j++]=a++;i++;j--;while(i<N-k)s[i++][j]=a++;i--;j--;while(j>k-1)s[i][j--]=a++;i--;j++;while(i>k)s[i--][j]=a++;i++;j++;}for(i=0;i<N;i++){for(j=0;j<N;j++)cout<<s[i][j]<<'\t';cout<<endl;}}2defineMAX_N100intmatrix[MAX_N][MAX_N];/**(x,y):第一個元素的坐標*start:第一個元素的值*n:矩陣的大小*/voidSetMatrix(intx,inty,intstart,intn){inti,j;if(n<=0)調(diào)用庫函數(shù),實現(xiàn)strcpy函數(shù)。2.解釋為什么要返回char*。解說:的實現(xiàn)代碼char*strcpy(char*strDest,constchar*strSrc){if((strDest==NULL)||(strSrc==NULL))"Invalidargument(s)";//[2]char*strDestCopy=strDest;((*strDest++=*strSrc++)!='\0');strDestCopy;}錯誤的做法:[1](A)不檢查指針的有效性,說明答題者不注重代碼的健壯性。(B)檢查指針的有效性時使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),說明答題者對C語言中類型的隱式轉(zhuǎn)換沒有深刻認識。在本例中char*轉(zhuǎn)換為bool即是類型隱式轉(zhuǎn)換,這種功能雖然靈活,但更多的是導致出錯概率增大和維護成本升高。所以C++專門增加了bool、true、false三個關鍵字以提供更安全的條件表達式。(C)檢查指針的有效性時使用((strDest==0)||(strSrc==0)),說明答題者不知道使用常量的好處。直接使用字面常量(如本例中的0)會減少程序的可維護性。0雖然簡單,但程序中可能出現(xiàn)很多處對指針的檢查,萬一出現(xiàn)筆誤,編譯器不能發(fā)現(xiàn),生成的程序內(nèi)含邏輯錯誤,很難排除。而使用NULL代替0,如果出現(xiàn)拼寫錯誤,編譯器就會檢查出來。[2](A)returnnewstring("Invalidargument(s)");,說明答題者根本不知道返回值的用途,并且他對內(nèi)存泄漏也沒有警惕心。從函數(shù)中返回函數(shù)體內(nèi)分配的內(nèi)存是十分危險的做法,他把釋放內(nèi)存的義務拋給不知情的調(diào)用者,絕大多數(shù)情況下,調(diào)用者不會釋放內(nèi)存,這導致內(nèi)存泄漏。(B)return0;,說明答題者沒有掌握異常機制。調(diào)用者有可能忘記檢查返回值,調(diào)用者還可能無法檢查返回值(見后面的鏈式表達式)。妄想讓返回值肩負返回正確值和異常值的雙重功能,其結(jié)果往往是兩種功能都失效。應該以拋出異常來代替返回值,這樣可以減輕調(diào)用者的負擔

溫馨提示

  • 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

提交評論