#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...