C程序員語言面試題學習教案_第1頁
C程序員語言面試題學習教案_第2頁
C程序員語言面試題學習教案_第3頁
C程序員語言面試題學習教案_第4頁
C程序員語言面試題學習教案_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、會計學1C程序員語言面試題程序員語言面試題但選題最終還是會以C語言題目為主體;2、以上公司的面試題目已成為國內(nèi)中小型企業(yè)公司出題模板;3、由于本人的能力有限加上時間倉促,本課件肯定存在不足之處,懇請各位同學批評指正。第1頁/共110頁75)編程練習(76-100) 第2頁/共110頁第3頁/共110頁第4頁/共110頁第5頁/共110頁第6頁/共110頁(3)4第7頁/共110頁第8頁/共110頁第9頁/共110頁函數(shù)有一個整型參數(shù)并返回一個整型數(shù);【標準答案】e)int * a10; f)int (*a)10 g)int (*a)(int); h) int (*a10)(int)第10頁/共

2、110頁. 的變量類型是int5, 占用20個字節(jié). 所以它的大小是20data是一個struct, 每個變量分開占用空間. 依次為int4 + DATE20 + double8 = 32.所以結果是 20 + 32 = 52.當然.在某些16位編輯器下, int可能是2字節(jié),那么結果是 int2 + DATE10 + double8 = 20第11頁/共110頁問題出在將一個字符串復制進一個字符變量指針所指地址。雖然可以正確輸出結果,但因為越界進行內(nèi)在讀寫而導致程序崩潰。第12頁/共110頁cosnt char* s=AAA;然后又因為是常量,所以對是s0的賦值操作是不合法的。第13頁/共1

3、10頁第14頁/共110頁第15頁/共110頁return 0;會出現(xiàn)什么問題?【標準答案】程序崩潰,getmemory中的malloc 不能返回動態(tài)內(nèi)存, free()對str操作很危險。第16頁/共110頁第17頁/共110頁第18頁/共110頁第19頁/共110頁第20頁/共110頁第21頁/共110頁第22頁/共110頁第23頁/共110頁第24頁/共110頁第25頁/共110頁(void (*)()0 x100000然后再調(diào)用它:(void (*)()0 x100000)();第26頁/共110頁&(*ca | *cb) | (a0 & ba | *cb);第27頁/

4、共110頁第28頁/共110頁第29頁/共110頁第30頁/共110頁第31頁/共110頁里的備份。下面是volatile變量的幾個例子:1). 并行設備的硬件寄存器(如:狀態(tài)寄存器)2). 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables)3). 多線程應用中被幾個任務共享的變量第32頁/共110頁(typecast)為一指針是合法的。這一問題的實現(xiàn)方式隨著個人風格不同而不同。典型的類似代碼如下:int *ptr;ptr = (int *)0 x67a9;*ptr = 0 xaa55;第33頁/共110頁第34頁/共110頁第35頁/共110頁第36頁

5、/共110頁第37頁/共110頁第38頁/共110頁那么在編譯期間不會報錯,而在連接期間報錯。第39頁/共110頁第40頁/共110頁第41頁/共110頁是new操作符。程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進行,且程序運行過程中函數(shù)調(diào)用時參數(shù)的傳遞也在棧上進行。第42頁/共110頁第43頁/共110頁第44頁/共110頁帶參宏帶參函數(shù)處理時間處理時間編譯時編譯時運行時運行時參數(shù)類型參數(shù)類型無無需定義需定義程序長度程序長度變長變長不變不變占用存儲空間占用存儲空間否否是是運行時間運行時間不占運行時間不占運行時間調(diào)用和返回時占調(diào)用和返回時占第45頁/共110頁第46頁/共110頁具體的值是某種具

6、體出錯信息。第47頁/共110頁第48頁/共110頁如果要使變量在其他模塊也有意義的話,需要使用extern關鍵字。第49頁/共110頁第50頁/共110頁第51頁/共110頁第52頁/共110頁第53頁/共110頁第54頁/共110頁第55頁/共110頁到棧B;(3)將棧B的棧頂元素pop出;第56頁/共110頁第57頁/共110頁第58頁/共110頁【參考答案】這是一個非常微妙的問題,任何人答對這個問題(正當?shù)脑颍┦菓敱还驳?。答案是:typedef更好。思考下面的例子:dPS p1,p2;tPS p3,p4;第一個擴展為struct s * p1, p2;上面的代碼定義p1為一個指向

7、結構的指,p2為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針。第59頁/共110頁為_foo,而 C+編譯器則會產(chǎn)生像_foo_int_int 之類的名字。 C+提供了 C 連接交換指定符號 extern“C”來解決名字匹配問題。第60頁/共110頁第61頁/共110頁第62頁/共110頁第63頁/共110頁第64頁/共110頁printf(b,c,d:%d,%d,%d,b,c,d);return 0;【標準答案】10,12,120第65頁/共110頁第66頁/共110頁第67頁/共110頁第68頁/共110頁因此最終結果將會依賴于不同的編譯器。執(zhí)行程序的答

8、案可能是25、也有可能是36。第69頁/共110頁 這段代碼執(zhí)行有什么問題?【標準答案】死循環(huán)unsigned char /無符號字符型表示范圍0255char /有符號字符型 表示范圍-128127第70頁/共110頁第71頁/共110頁n【標準答案】8,10,12,14,16第72頁/共110頁【標準答案】16第73頁/共110頁 printf(Third output:%dn,x);輸出?【 標準答案】12、13、13第74頁/共110頁第75頁/共110頁printf(b,c,d:%d,%d,%d,b,c,d);return 0;【標準答案】10,12,120第76頁/共110頁第77

9、頁/共110頁第78頁/共110頁第79頁/共110頁換原則,我發(fā)現(xiàn)有些開發(fā)者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是“6”。原因是當表達式中存在有符號類型和無符號類型時所有的數(shù)都自動轉換為無符號類型。因此-20變成了一個非常大的正整數(shù),所以該表達式計算出的結果大于6。這一點對于應當頻繁用到無符號數(shù)據(jù)類型的嵌入式系統(tǒng)來說是豐常重要的。如果你答錯了這個問題,你也就到了得不到這份工作的邊緣。第80頁/共110頁第81頁/共110頁器嘗試著編譯下第82頁/共110頁第83頁/共110頁復制到 strDest,為什么還要char * 類型的返回值?第84頁/共110頁int bina

10、ry_search(int* arr, int key, int n) int low = 0; int high = n - 1; int mid; while (low k) high = mid - 1; else if (arrmid k) low = mid + 1; else return mid; return -1;第85頁/共110頁unsigned int TestAsOne0(char log) int i; unsigned int num=0, val; for(i=0; i i; /移位 val &= 0 x01; /與1相與 if(val) num+; r

11、eturn num; 第86頁/共110頁int Invert(char *str) int num=0; while(*str!=0) int digital=*str-48; num=num*10+digital; str=str+1; return num; 第87頁/共110頁void IntToCharChange(int num, char* pval) char strval100; int i, j; int val0 = 0; int val1 = 0; val0 = num; for(i=0; i100; i+) val1 = val0 % 10; /取余 val0 = v

12、al0 / 10; /取整 strvali = val1 + 48; /數(shù)字字符 if(val0 10) i+; strvali = val0 + 48; break; for(j=0; j 0) ret = 1; else if (ret 99) return; sourcej = 0; for(i=0; ij; i+) childi = sourcej-i-1; /反序 childi = 0; 第90頁/共110頁int search(char *cpSource, int n, char ch) /起始地址,搜索長度,目標字符int i;for(i=0; in & *(cpSou

13、rce+i) != ch; +i);return i;第91頁/共110頁int ChildString(char*p) /自己寫 char *q=p;int stringlen=0, i=0,j=1,len=0,maxlen=1; while(*q!=0) /不能用strlen,求得長度stringlen Stringlen+;q+; while( i Stringlen ) if(*(p+i)=*(p+j)&jmaxlen) /統(tǒng)計最大子串長度 maxlen=len+1; len=0; else len=0; i+;j+; return maxlen; 第92頁/共110頁t1 =

14、 t1-next;if (NULL = (t2 = t2-next-next)return 0; /無環(huán)if (t1 = t2)return 1;return 0;第93頁/共110頁void BubbleSort(double arr, int n) int i,j; int exchange = 1; /交換標志 for(i=1;i=i;j-) /對當前無序區(qū)Ri.n自下向上掃描 if(arrj+1 arrj)/交換記錄 arr0=arrj+1; /R0不是哨兵,僅做暫存單元 arrj+1=arrj; arrj=arr0; exchange=1; /發(fā)生了交換,故將交換標志置為真 if(!

15、exchange) /本趟排序未發(fā)生交換,提前終止算法 return; /endfor(外循環(huán)) 第94頁/共110頁/刪除操作Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e) if(!(p=GetElemP_DuL(L,i) return ERROR; e=p-data; p-prior-next=p-next; p-next-prior=p-pror; free(p); return OK;/插入操作Status ListInsert_DuL(DuLinkList &L,int i,ElemType &am

16、p;e) if(!(p=GetElemP_DuL(L,i) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode) return ERROR; s-data=e; s-prior=p; p- next - prior =s; p-next=s; s-next=p-next-next; return OK;第95頁/共110頁void reverse(test* head)test* pe = head;test* ps = head-next;while(ps) pe-next = ps-next;ps-next = head;head

17、= ps;ps = pe-next;第96頁/共110頁#include main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij;printf(n); printf(array b:n); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); 第97頁/共110頁#include main() char string81; int i,num=0,wor

18、d=0; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; else if(word=0) word=1; num+; printf(There are %d words in the linen,num);第98頁/共110頁void* memcpy(void* pvTo, const void* pvFrom, size_t size) assert(pvTo != NULL) & (pvFrom != NULL); byte* pbTo = pvTo; byte* pbFrom = pbFrom; w

19、hile (size- 0) *pbTo+ = *pbFrom+; return pvTo; 第99頁/共110頁#include stdio.h#include conio.hmain() int i,j,k; printf(n); for(i=1;i5;i+) /*以下為三重循環(huán)*/ for(j=1;j5;j+) for (k=1;k4;c=(04);d=b&c;printf(%on%on,a,d);第101頁/共110頁main() int i,j; int a1010; printf(n); for(i=0;i10;i+) ai0=1; aii=1; for(i=2;i10;i+) for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(j=0;j=i;j+) printf(%5d,aij); printf(n); getch(); 第102頁/共110頁第103頁/共110頁main() int len; char *str20; printf(please input a string:n); scanf(%s,str); len=length(str); printf(the string has %d characters.,len); getch();length(p)char *p; int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論