華為筆試總結(jié)done_第1頁(yè)
華為筆試總結(jié)done_第2頁(yè)
華為筆試總結(jié)done_第3頁(yè)
華為筆試總結(jié)done_第4頁(yè)
華為筆試總結(jié)done_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、12/121.static有什么用途?(請(qǐng)至少說(shuō)明兩種) 1)在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。 2) 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。 3) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用2.引用及指針有什么區(qū)別? 1) 引用必須被初始化,指針不必。 2) 引用初始化以后不能被改變,指針可以改變所指的對(duì)象。 3) 不存在指向空值的引用,但是存在指向空值的指針。3.描述實(shí)時(shí)系統(tǒng)的基本特性在特定時(shí)間內(nèi)

2、完成特定的任務(wù),實(shí)時(shí)性及可靠性。4.全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)庫(kù),局部變量在堆棧。靜態(tài)全局變量是位于數(shù)據(jù)段并且在程序開始運(yùn)行的時(shí)候被加。程序的動(dòng)態(tài)的局部變量則分配在堆棧里面。5.什么是平衡二叉樹? 左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對(duì)值不大于1。6.堆棧溢出一般是由什么原因?qū)е碌模?沒有回收垃圾資源。7.什么函數(shù)不能聲明為虛函數(shù)? Constructor(構(gòu)造函數(shù))函數(shù)不能聲明為虛函數(shù)。8.冒泡排序算法的時(shí)間復(fù)雜度是什么? 時(shí)間復(fù)雜度是O(n2)。9.寫出float x 及“零值”比較的if語(yǔ)句。 if(x0.000001&

3、x-0.000001)10.Internet采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)? Tcp/Ip協(xié)議 主要層次結(jié)構(gòu)為: 應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)據(jù)鏈路層/物理層。11.Internet物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議? ARP (Address Resolution Protocol)(地址解析協(xié)議),實(shí)現(xiàn)通過 HYPERLINK IP地址得知其物理地址(MAC地址)。12.IP地址的編碼分為哪倆部分? IP地址由兩部分組成,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。不過是要和“子網(wǎng)掩碼”按位及上之后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機(jī)位。13.用戶輸入M,N值,從1至N開始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該數(shù)值,直至全部輸

4、出。寫出C程序。 循環(huán)鏈表#include #include #include #define NULL 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef int Elemtype;/*定義數(shù)據(jù)元素類型 */ typedef struct Cnode Elemtype data; struct Cnode *next; CNode; CNode *joseph;/*定義一個(gè)全局變量 */ Status Create_clist(CNode *clist,int n) CNode *p,*

5、q; int i; clist=NULL; for(i=n;i=1;i-) p=(CNode *)malloc(sizeof(CNode); if(p=NULL) return OVERFLOW; /*存儲(chǔ)分配失敗 */ p- data=i; p- next=clist; clist=p; if(i=n) q=p;/*用q指向鏈表最后一個(gè)結(jié)點(diǎn) */ q- next=clist; /*把鏈表的最后一個(gè)結(jié)點(diǎn)的鏈域指向鏈表的第一個(gè)結(jié)點(diǎn),構(gòu)成循環(huán)鏈表 */ joseph=clist; /*把創(chuàng)建好的循環(huán)鏈表頭指針賦給全局變量 */ return OK; /*end */ Status Joseph(C

6、Node *clist,int m,int n,int k) int i; CNode *p,*q; if(m n) return ERROR;/*起始位置錯(cuò) */ if(!Create_clist(clist,n) return ERROR; /*循環(huán)鏈表創(chuàng)建失敗 */ p=joseph; /*p指向創(chuàng)建好的循環(huán)鏈表 */ for(i=1;i next; /*p指向位置的結(jié)點(diǎn) */ while(p) for(i=1;i next; /* 找出第k個(gè)結(jié)點(diǎn) */ q=p- next; printf( %d ,q- data);/*輸出應(yīng)出列的結(jié)點(diǎn) */ if(p- next=p) p=NULL;

7、 /*刪除最后一個(gè)結(jié)點(diǎn) */ else p- next=q- next; p=p- next; free(q); /*while */clist=NULL; /* end */ int main() int m,n,k,i; CNode *clist; clist=NULL;/*初始化clist */ printf( n請(qǐng)輸入圍坐在圓桌周圍的人數(shù)n:); cinn;printf( n請(qǐng)輸入第一次開始報(bào)數(shù)人的位置m: ); cinm;printf( n你希望報(bào)數(shù)到第幾個(gè)數(shù)的人出列? ); cink; Create_clist(clist,n);/*創(chuàng)建一個(gè)有n個(gè)結(jié)點(diǎn)的循環(huán)鏈表clist */ p

8、rintf( n出列的順序如下?: n ); Joseph(clist,m,n,k); cin.get();return 0 ; /*main */ 14.不能做switch()的參數(shù)類型是: switch的參數(shù)不能為實(shí)型(實(shí)數(shù)或浮點(diǎn)數(shù))。15.上海華為的一道關(guān)于指針方面的編程題:int AnSize,其中隱藏著若干0,其余非0整數(shù),寫一個(gè)函數(shù)int Func(int* A, int nSize),使A把0移至后面,非0整數(shù)移至數(shù)組前面并保持有序,返回值為原數(shù)據(jù)中第一個(gè)元素為0的下標(biāo)。(盡可能不使用輔助空間且考慮效率及異常問題,注釋規(guī)范且給出設(shè)計(jì)思路)#include#define nsize

9、 18using namespace std;int Func(int* A, int nSize)int i,k,t=1,flag=0;for(i=0;inSize-1;i+)if(Ai=0&flag=0)k=i;/記錄第一個(gè)零的下標(biāo)flag=1;if(Ai=0&Ai+1!=0)Ai+1-t=Ai+1;Ai+1=0;else if(Ai=0&Ai+1=0)t+;/記錄0的個(gè)數(shù)return k;int main() int ansize=1,2,3,4,0,5,7,0,7,5;coutFunc(a,nsize)endl;for(int i=0;insize;i+)coutai ;cin.get

10、();return 0 ; 16.寫一個(gè)程序, 要求功能:求出用1,2,5這三個(gè)數(shù)不同個(gè)數(shù)組合的和為100的組合個(gè)數(shù)。如:100個(gè)1是一個(gè)組合,5個(gè)1加19個(gè)5是一個(gè)組合。 請(qǐng)用C+語(yǔ)言寫。答案:最容易想到的算法是:設(shè)x是1的個(gè)數(shù),y是2的個(gè)數(shù),z是5的個(gè)數(shù),number是組合數(shù),注意到0=x=100,0=y=50,0=z=20,所以可以編程為:number=0;for (x=0; x=100; x+)for (y=0; y=50; y+)for (z=0; z=20; z+)if (x+2*y+5*z)=100)number+;coutnumberendl;上面這個(gè)程序一共要循環(huán)100*50

11、*20次,效率實(shí)在是太低了。事實(shí)上,這個(gè)題目是一道明顯的數(shù)學(xué)問題,而不是單純的編程問題。我的解法如下:因?yàn)閤+2y+5z=100,所以x+2y=100-5z,且z=20 x=100 y=50,所以(x+2y)=100,且(x+5z)是偶數(shù),對(duì)z作循環(huán),求x的可能值如下:z=0, x=100, 98, 96, . 0z=1, x=95, 93, ., 1z=2, x=90, 88, ., 0z=3, x=85, 83, ., 1z=4, x=80, 78, ., 0z=19, x=5, 3, 1z=20, x=0因此,組合總數(shù)為100以內(nèi)的偶數(shù)+95以內(nèi)的奇數(shù)+90以內(nèi)的偶數(shù)+.+5以內(nèi)的奇數(shù)+

12、1,即為: (51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1,某個(gè)偶數(shù)m以內(nèi)的偶數(shù)個(gè)數(shù)(包括0)可以表示為m/2+1=(m+2)/2,某個(gè)奇數(shù)m以內(nèi)的奇數(shù)個(gè)數(shù)也可以表示為(m+2)/2,所以,求總的組合次數(shù)可以編程為:number=0;for (int m=0;m=100;m+=5)number+=(m+2)/2;coutnumbernext = NULL;p=h;for(i=0;inext = s;printf(Please input the information of the s

13、tudent: name sex no age n);scanf(%s %c %d %d,s-name,&s-sex,&s-no,&s-age);s-next = NULL;p = s;printf(Create successful!);return(h);void deletelist(struct stu *s,int a)struct stu *p;while(s-age!=a)p = s;s = s-next;if(s=NULL)printf(The record is not exist.);elsep-next = s-next;printf(Delete successful!

14、);void display(struct stu *s)s = s-next;while(s!=NULL)printf(%s %c %d %dn,s-name,s-sex,s-no,s-age);s = s-next;int main()struct stu *s;int n,age;printf(Please input the length of seqlist:n);scanf(%d,&n);s = creatlist(n);display(s);printf(Please input the age:n);scanf(%d,&age);deletelist(s,age);displa

15、y(s);return 0;18.實(shí)現(xiàn)一個(gè)函數(shù),把一個(gè)字符串中的字符從小寫轉(zhuǎn)為大寫。#include stdio.h#include conio.hvoid uppers(char *s,char *us)for(;*s!=0;s+,us+)if(*s=a&*s=z)*us = *s-32;else*us = *s;*us = 0;int main()char *s;char us20;char ss20;printf(Please input a string:n);scanf(%s,ss);s = ss;uppers(s,us);printf(The result is:n%sn,us);

16、getch();19.隨機(jī)輸入一個(gè)數(shù),判斷它是不是對(duì)稱數(shù)(回文數(shù))(如3,121,12321,45254)。不能用字符串庫(kù)函數(shù) /*1.函數(shù)名稱:Symmetry 功能: 判斷一個(gè)數(shù)時(shí)候?yàn)榛匚臄?shù)(121,35653) 輸入: 長(zhǎng)整型的數(shù) 輸出: 若為回文數(shù)返回值為1 esle 0 */unsigned char Symmetry (long n)long i,temp;i=n; temp=0;while(i) /不用出現(xiàn)長(zhǎng)度問題,將數(shù)按高低位掉換temp=temp*10+i%10;i/=10;return(temp=n); /* 功能: 判斷字符串是否為回文數(shù)字 實(shí)現(xiàn): 先將字符串轉(zhuǎn)換為正整數(shù)

17、,再將正整數(shù)逆序組合為新的正整數(shù),兩數(shù)相同則為回文數(shù)字 輸入: char *s:待判斷的字符串 輸出: 無(wú) 返回: 0:正確;1:待判斷的字符串為空;2:待判斷的字符串不為數(shù)字; 3:字符串不為回文數(shù)字;4:待判斷的字符串溢出 */ unsigned IsSymmetry(char *s) char *p = s; long nNumber = 0; long n = 0; long nTemp = 0; /*判斷輸入是否為空*/ if (*s = 0) return 1; /*將字符串轉(zhuǎn)換為正整數(shù)*/ while (*p != 0) /*判斷字符是否為數(shù)字*/ if (*p9) return

18、 2; /*判斷正整數(shù)是否溢出*/ if (*p-0) (4294967295-(nNumber*10) return 4; nNumber = (*p-0) + (nNumber * 10); p+; /*將數(shù)字逆序組合,直接抄樓上高手的代碼,莫怪,呵呵*/ n = nNumber; while(n) /*判斷正整數(shù)是否溢出*/ if (n%10) (4294967295-(nTemp*10) return 3; nTemp = nTemp*10 + n%10; n /= 10; /*比較逆序數(shù)和原序數(shù)是否相等*/ if (nNumber != nTemp) return 3; return

19、 0; /* 功能: 判斷字符串是否為回文數(shù)字 實(shí)現(xiàn): 先得到字符串的長(zhǎng)度,再依次比較字符串的對(duì)應(yīng)位字符是否相同 輸入: char *s:待判斷的字符串 輸出: 無(wú) 返回: 0:正確;1:待判斷的字符串為空;2:待判斷的字符串不為數(shù)字; 3:字符串不為回文數(shù)字 */ unsigned IsSymmetry_2(char *s) char *p = s; int nLen = 0; int i = 0; /*判斷輸入是否為空*/ if (*s = 0) return 1; /*得到字符串長(zhǎng)度*/ while (*p != 0) /*判斷字符是否為數(shù)字*/ if (*p9) return 2; n

20、Len+; p+; /*長(zhǎng)度不為奇數(shù),不為回文數(shù)字*/ if (nLen%2 = 0) return 4; /*長(zhǎng)度為1,即為回文數(shù)字*/ if (nLen = 1) return 0; /*依次比較對(duì)應(yīng)字符是否相同*/ p = s; i = nLen/2 - 1; while (i) if (*(p+i) != *(p+nLen-i-1) return 3; i-; return 0; 20.求22000的所有素?cái)?shù).有足夠的內(nèi)存,要求盡量快void prime(int *a, int x)for (int i = 2; i x; i+)int flag = 1;for(int j = 2;

21、j*jai/2;j+)if (ai % j = 0)flag = 0;break;if (flag = 1)coutai ;if(i%10 = 0)coutendl;21.華為最后三個(gè)大題1.A,B,C,D四個(gè)進(jìn)程,A向buf里面寫數(shù)據(jù),B,C,D向buf里面讀數(shù)據(jù),當(dāng)A寫完,且B,C,D都讀一次后,A才能再寫。用P,V操作實(shí)現(xiàn)。2.將單向鏈表reverse,如ABCD變成DCBA,只能搜索鏈表一次。3.將二叉樹的兩個(gè)孩子換位置,即左變右,右變左。不能用遞規(guī)(變態(tài)?。?2.華為筆試題:2007.03.31 1。大意如下:38頭牛中選出3頭跑得最快的,使用一個(gè)每次只能供6頭比賽的場(chǎng)地,要求用最快

22、的方法。2。大意如下:公司職員知道老板的年齡,不知道他女兒的年齡,老板3個(gè)女兒的年齡相加為13,相乘為老板年齡,且只有一個(gè)女兒的年齡大于5歲,求這4個(gè)的年齡?(網(wǎng)上有一大堆答案!)3。原題是2002年以前的一道大學(xué)生數(shù)學(xué)建模競(jìng)賽的題,是說(shuō)一個(gè)學(xué)生冒雨從宿舍去食堂吃飯,200米的距離內(nèi),問是走著少淋雨還是跑著少?(該題簡(jiǎn)化了大部分的假設(shè),只剩下一點(diǎn)點(diǎn)問題要你解決,做著沒勁?。?3. 華為筆試2006年華為研發(fā)類筆試編程題(2006年10月29日晚,成都電子科技大學(xué)考試題目)題目:網(wǎng)球中心共有100個(gè)網(wǎng)球場(chǎng),每個(gè)單位可以來(lái)申請(qǐng)1到100的場(chǎng)地,申請(qǐng)的場(chǎng)地編號(hào)必須是連續(xù)的,如果場(chǎng)地已經(jīng)被其他單位占用,就不能再次使用,而且單位在使用完場(chǎng)地后必須歸還。請(qǐng)?jiān)O(shè)計(jì)一個(gè)完整的系統(tǒng)(c語(yǔ)言)。(限時(shí)5分鐘)Tennis.hstruct TennisGroundint num;char *agentName;typedef struct TennisGro

溫馨提示

  • 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)論