程式設計師面試寶典第4版複習備忘

2021-06-29 02:27:06 字數 4854 閱讀 9714

#include "stdio.h"

#include "malloc.h"

#include "assert.h"

#define null 0

#ifdef str_reverse

char* reverse(char* str)

return str;

}char* fun(char* str1,char* str2)

int main()

;char str2[20] = ;

char* str = null;

printf("please input the first string:\n");

gets(str1);

printf("please input the second string:\n");

gets(str2);

str = fun(str1,str2);

printf("result is %s\n",str);

getchar();

return 0;

}#endif

上面的函式實現了將字串str2翻轉,然後與字串str1拼接在一起,

需要注意strlen獲取的是'\0'之前的字元的個數,不包括'\0'字元。

翻轉函式使用的方法是:第i個元素與第len-i-1個元素交換,直到i=len/2結束。

即沿陣列的中線(奇數為中間元素)對折。

gets函式遇到回車或eof結束。關於庫函式strlen和gets的實現和使用的注意事項,

再次複習的時候可以作為擴充套件的內容呈現。歡迎一起討論學習。

#ifdef array_pointer

int main()

,};int test2[3] = ;

page = &p;

page2 = &p2;

ptr[0] = &p;

ptr[1] = &p2;

int (*a)[3],(*b)[3];

a = &test[1];

b = &test2;

printf("%d\n",*page);

printf("%d,%d,%d\n",(*a)[0],(*a)[1],(*a)[2]);

printf("%d\n",(*b)[2]);

printf("%d\n",*(*b+2));

printf("hello world!\n");

getchar();

return 0;

}#endif

#ifdef pointer_array

void strsort(char **p,int n);       //函式宣告  

int main() 

;     

strsort(s,sizeof(s)/4);     //排序    

printf("\n排序後的資料:\n");    

for(i=0;i0)//比較            

}      

}  }

#endif

#ifdef test_64

int main()

#endif

#ifdef test_52

typedef struct node1

s1;int main()

#endif

#ifdef test_44

#define sub(x,y) (x-y)

#define access_before(element,offset,value) *sub(&element,offset) = value

int main()

;access_before(array_t[5],4,6);

for(i=0;i<10;++i)

getchar();

return 0;

}#endif

#ifdef test_31_1

int func(int x)

return count;

}int main()

#endif

#ifdef test_31_2

int main()

printf("%d %d\n",a,x);

getchar();

return 0;

}#endif

#ifdef test_32

int main()

;int *ptr = arr;

*(ptr++)+=123;

printf("%d,%d\n",*ptr,*(++ptr));

getchar();

return 0;

}#endif

#ifdef test_180

/*常用資料結構--單鏈表--建立、遍歷、刪除、插入等操作*/

typedef struct student

node,*plinklist;

node* createsinglelink()

else

ptmp->next = null;

}return phead;

}int getlength(plinklist l)

return listlen;

}void listprint(plinklist l)

}/*按資料刪除*/

node* listdel(plinklist l,int num)

*/while(null != p && p->data != num)

if( null == p)

else

return l;

}/*按索引刪除*/

node* listdel_index(plinklist l,int index)

if(null == pnode || j > index - 1)

printf("鍊錶中沒有這個結點。\n");

else

return l;

}node *listinsert(plinklist l,int i,int value)

if(null == pnode || j > i - 1)

printf("插入位置不對,位置小於1或者位置大於表長+1\n");

else

return l;

}/*不對稱邊界*/

/*將相鄰的兩個數比較,小的調到前頭*/

/*n個數要進行n-1趟比較*/

/*第i趟,需要比較的次數j為n-i*/

node *bubble_sort(plinklist l)

pnode = pnode->next;}}

return l;

}/*n個數,需要進行n-1次選擇*/

/*需要比較i+1到n*/

void select_sort(int arr,int len)

void printarray(int arr,int n)

#endif

#ifdef test_186_1

typedef struct node//節點存放乙個資料和指向下乙個節點的指標 

node; 

node *link_create(int n)//建立n個節點的迴圈鍊錶 

p->pnext = head;//最後乙個節點指向頭部,形成迴圈鍊錶 

return head; 

}  void link_process(node *head,int k,int m)//從編號為k(1<=k<=n)的人開始報數,數到m的那個人出列; 

printf("%d ",p->data); 

tmp1->pnext= p->pnext; 

free(p); 

p = tmp1->pnext; 

}  printf("%d ",p->data); 

free(p); 

}  int main() 

#endif

#ifdef test_186_2

/*有點問題*/

typedef struct lnodelnode,*linklist;

void josephus(int n,int k,int m)

r= curr;

while(k--) r=p,p=p->link ;

while(n--)

}int main()

#endif

#ifdef test_queue

typedef struct node

node,*pqueue;

typedef struct

linkqueue;

void initqueue(linkqueue *q)

int enqueue(linkqueue *q,int elem)

int dequeue(linkqueue *q,int *elem)

int main()

#endif

#define test_sequence_queue

#ifdef test_sequence_queue

/*約定q->front=q->rear時隊列為空,(q->rear+1)%maxsize = q->front時隊列為滿*/

#define maxsize 20

typedef struct

sqqueue;

void initqueue(sqqueue *q)

int queuelen(sqqueue *q)

int enqueue(sqqueue *q,int e)

int dequeue(sqqueue *q,int *e)

void print(sqqueue *q) //列印佇列 

else 

}  int main()

#endif

程式設計師面試寶典

據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...

程式設計師面試寶典 第1 8章

ptr 12 應為 ptr ptr 12 ptr printf d,d n a,b printf的引數是從右向左計算。運算子優先順序 int a 相當於將變數a所在位址開始的sizeof int 個位元組當成int型的資料輸出。如果乙個運算元是long型,乙個是unsigned int型,那麼只有機...

《程式設計師面試寶典》摘記

簡歷注意事項 1.簡歷不要太長 中文簡歷壓縮在 2頁左右就可以把所有的內容突出了。一般來說學習經歷應該從大學開始寫起。2.如實填寫。3.不要過分謙虛,不要把自己的一切包括弱項都寫進去。4.求職簡歷上一定要註明求職的職位。根據所申請的職位來設計,突出你在這方面的優點。編寫乙份或者幾份有針對性的簡歷。5...