一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

為自己鼓掌高一作文

時(shí)間:2025-10-06 22:00:30 高一作文 我要投稿

為自己鼓掌高一作文

  1 寫(xiě)出程序把一個(gè)鏈表中的接點(diǎn)順序倒排

為自己鼓掌高一作文

  typedef struct linknode

  {

  int data;

  struct linknode *next;

  }node;

  /pic/p>

  node *reverse(node *head)

  {

  node *p,*q,*r;

  p=head;

  q=p->next;

  while(q!=NULL)

  {

  r=q->next;

  q->next=p;

  p=q;

  q=r;

  }

  head->next=NULL;

  head=p;

  return head;

  }

  2 寫(xiě)出程序刪除鏈表中的所有接點(diǎn)

  void del_all(node *head)

  {

  node *p;

  while(head!=NULL)

  {

  p=head->next;

  free(head);

  head=p;

  }

  cout<<”釋放空間成功!”< }

  3兩個(gè)字符串,s,t;把t字符串插入到s字符串中,s字符串有足夠的空間存放t字符串

  void insert(char *s, char *t, int i)

  {

  char *q = t;

  char *p =s;

  if(q == NULL)return;

  while(*p!=’\0′)

  {

  p++;

  }

  while(*q!=0)

  {

  *p=*q;

  p++;

  q++;

  }

  *p = ‘\0′;

  }

  分析下面的代碼:

  char *a = “hello”;

  char *b = “hello”;

  if(a= =b)

  printf(“YES”);

  else

  printf(“NO”);

  這個(gè)簡(jiǎn)單的面試題目,我選輸出 no(對比的應該是指針地址吧),可在VC是YES 在C是NO

  lz的呢,是一個(gè)常量字符串。位于靜態(tài)存儲區,它在程序生命期內恒定不變。如果編譯器優(yōu)化的話(huà),會(huì )有可能a和b同時(shí)指向同一個(gè)hello的。則地址相同。如果編譯器沒(méi)有優(yōu)化,那么就是兩個(gè)不同的地址,則不同

  寫(xiě)一個(gè)函數,功能:完成內存之間的拷貝

  memcpy source code:

  270 void* memcpy( void *dst, const void *src, unsigned int len )

  271 {

  272 register char *d;

  273 register char *s;

  27

  275 if (len == 0)

  276 return dst;

  277

  278 if (is_overlap(dst, src, len, len))

  279 complain3(“memcpy”, dst, src, len);

  280

  281 if ( dst > src ) {

  282 d = (char *)dst + len – 1;

  283 s = (char *)src + len – 1;

  284 while ( len >= 4 ) {

  285 *d– = *s–;

  286 *d– = *s–;

  287 *d– = *s–;

  288 *d– = *s–;

  289 len -= 4;

  290 }

  291 while ( len– ) {

  292 *d– = *s–;

  293 }

  294 } else if ( dst < src ) {

  295 d = (char *)dst;

  296 s = (char *)src;

  297 while ( len >= 4 ) {

  298 *d++ = *s++;

  299 *d++ = *s++;

  300 *d++ = *s++;

  301 *d++ = *s++;

  302 len -= 4;

  303 }

  304 while ( len– ) {

  305 *d++ = *s++;

  306 }

  307 }

  308 return dst;

  309 }

  公司考試這種題目主要考你編寫(xiě)的代碼是否考慮到各種情況,是否安全(不會(huì )溢出)

  各種情況包括:

  1、參數是指針,檢查指針是否有效

  2、檢查復制的源目標和目的地是否為同一個(gè),若為同一個(gè),則直接跳出

  3、讀寫(xiě)權限檢查

  4、安全檢查,是否會(huì )溢出

  memcpy拷貝一塊內存,內存的大小你告訴它

  strcpy是字符串拷貝,遇到’\0′結束

  /* memcpy ─── 拷貝不重疊的內存塊 */

  void memcpy(void* pvTo, void* pvFrom, size_t size)

  {

  void* pbTo = (byte*)pvTo;

  void* pbFrom = (byte*)pvFrom;

  ASSERT(pvTo != NULL && pvFrom != NULL); /pic/p>

  ASSERT(pbTo>=pbFrom+size || pbFrom>=pbTo+size);/pic/p>

  while(size–>0)

  *pbTo++ == *pbFrom++;

  return(pvTo);

  }

  華為面試題:怎么判斷鏈表中是否有環(huán)?

  bool CircleInList(Link* pHead)

  {

  if(pHead = = NULL || pHead->next = = NULL)/pic/p>

  return (false);

  if(pHead->next = = pHead)/pic/p>

  return (true);

  Link *pTemp1 = pHead;/pic/p>

  Link *pTemp = pHead->next;/pic/p>

  while(pTemp != pTemp1 && pTemp != NULL && pTemp->next != NULL)

  {

  pTemp1 = pTemp1->next;

  pTemp = pTemp->next->next;

  }

  if(pTemp = = pTemp1)

  return (true);

  return (false);

  }

  兩個(gè)字符串,s,t;把t字符串插入到s字符串中,s字符串有足夠的空間存放t字符串

  void insert(char *s, char *t, int i)

  {

  memcpy(&s[strlen(t)+i],&s[i],strlen(s)-i);

  memcpy(&s[i],t,strlen(t));

  s[strlen(s)+strlen(t)]=’\0′;

  }

  1。編寫(xiě)一個(gè) C 函數,該函數在一個(gè)字符串中找到可能的最長(cháng)的子字符串,且該字符串是由同一字符組成的。

  char * search(char *cpSource, char ch)

  {

  char *cpTemp=NULL, *cpDest=NULL;

  int iTemp, iCount=0;

  while(*cpSource)

  {

  if(*cpSource == ch)

  {

  iTemp = 0;

  cpTemp = cpSource;

  while(*cpSource == ch)

  ++iTemp, ++cpSource;

  if(iTemp > iCount)

  iCount = iTemp, cpDest = cpTemp;

  if(!*cpSource)

  break;

  }

  ++cpSource;

  }

  return cpDest;

  }

  2。請編寫(xiě)一個(gè) C 函數,該函數在給定的內存區域搜索給定的字符,并返回該字符所在位置索引值。

  int search(char *cpSource, int n, char ch)

  {

  int i;

  for(i=0; i return i;

  }

  一個(gè)單向鏈表,不知道頭節點(diǎn),一個(gè)指針指向其中的一個(gè)節點(diǎn),問(wèn)如何刪除這個(gè)指針指向的節點(diǎn)?

  將這個(gè)指針指向的next節點(diǎn)值copy到本節點(diǎn),將next指向next->next,并隨后刪除原next指向的節點(diǎn)。

  #include

  void foo(int m, int n)

  {

  printf(“m=%d, n=%d\n”, m, n);

  }

  int main()

  {

  int b = 3;

  foo(b+=3, ++b);

  printf(“b=%d\n”, b);

  return 0;

  }

  輸出:m=7,n=4,b=7(VC6.0)

  這種方式和編譯器中得函數調用關(guān)系相關(guān)即先后入棧順序。不過(guò)不同編譯器得處理不同。也是因為C標準中對這種方式說(shuō)明為未定義,所以各個(gè)編譯器廠(chǎng)商都有自己得理解,所以最后產(chǎn)生得結果完全不同。

  因為這樣,所以遇見(jiàn)這種函數,我們首先要考慮我們得編譯器會(huì )如何處理這樣得函數,其次看函數得調用方式,不同得調用方式,可能產(chǎn)生不同得結果。最后是看編譯器優(yōu)化。

  2.寫(xiě)一函數,實(shí)現刪除字符串str1中含有的字符串str2.

  第二個(gè)就是利用一個(gè)KMP匹配算法找到str2然后刪除(用鏈表實(shí)現的話(huà),便捷于數組)

  /*雅虎筆試題(字符串操作)

  給定字符串A和B,輸出A和B中的最大公共子串。

  比如A=”aocdfe” B=”pmcdfa” 則輸出”cdf”

  */

  /pic/p>

  #include

  #include

  #include

  char *commanstring(char shortstring[], char longstring[])

  {

  int i, j;

  char *substring=malloc(256);

  if(strstr(longstring, shortstring)!=NULL) /pic/p>

  return shortstring;

  for(i=strlen(shortstring)-1;i>0; i–) /pic/p>

  {

  for(j=0; j<=strlen(shortstring)-i; j++){

  memcpy(substring, &shortstring[j], i);

  substring[i]=’\0′;

  if(strstr(longstring, substring)!=NULL)

  return substring;

  }

  }

  return NULL;

  }

  main()

  {

  char *str1=malloc(256);

  char *str2=malloc(256);

  char *comman=NULL;

  gets(str1);

  gets(str2);

  if(strlen(str1)>strlen(str2)) /pic/p>

  comman=commanstring(str2, str1);

  else

  comman=commanstring(str1, str2);

  printf(“the longest comman string is: %s\n”, comman);

  }

  11.寫(xiě)一個(gè)函數比較兩個(gè)字符串str1和str2的大小,若相等返回0,若str1大于

  str2返回1,若str1小于str2返回-1

  int strcmp ( const char * src,const char * dst)

  {

  int ret = 0 ;

  while( ! (ret = *(unsigned char *)src – *(unsigned char *)dst) && *dst)

  {

  ++src;

  ++dst;

  }

  if ( ret < 0 )

  ret = -1 ;

  else if ( ret > 0 )

  ret = 1 ;

  return( ret );

  }

  3,求1000!的未尾有幾個(gè)0(用素數相乘的方法來(lái)做,如72=2*2*2*3*3);

  求出1->1000里,能被5整除的數的個(gè)數n1,能被25整除的數的個(gè)數n2,能被125整除的數的個(gè)數n3,

  能被625整除的數的個(gè)數n4.

  1000!末尾的零的個(gè)數=n1+n2+n3+n4;

  #include

  #define NUM 1000

  int find5(int num){

  int ret=0;

  while(num%5==0){

  num/=5;

  ret++;

  }

  return ret;

  }

  int main(){

  int result=0;

  int i;

  for(i=5;i<=NUM;i+=5)

  {

  result+=find5(i);

  }

  printf(” the total zero number is %d\n”,result);

  return 0;

  }

  1. 有雙向循環(huán)鏈表結點(diǎn)定義為:

  struct node

  { int data;

  struct node *front,*next;

  };

  有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫(xiě)一函數將兩鏈表中data值相同的結點(diǎn)刪除

  BOOL DeteleNode(Node *pHeader, DataType Value)

  {

  if (pHeader == NULL) return;

  BOOL bRet = 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;

  delete pNode;

  pNode = pNextNode;

  bRet = TRUE;

  /pic/p>

  }

  else

  {

  pNode = pNode->next;

  }

  }

  return bRet;

  }

  void DE(Node *pHeadA, Node *pHeadB)

  {

  if (pHeadA == NULL || pHeadB == NULL)

  {

  return;

  }

  Node *pNode = pHeadA;

  while (pNode != NULL)

  {

  if (DeteleNode(pHeadB, pNode->data))

  {

  if (pNode->front == NULL)

  {

  pHeadA = pNode->next;

  pHeadA->front = NULL;

  }

  else

  {

  pNode->front->next = pNode->next;

  if (pNode->next != NULL)

  {

  pNode->next->front = pNode->front;

  }

  }

  Node *pNextNode = pNode->next;

  delete pNode;

  pNode = pNextNode;

  }

  else

  {

  pNode = pNode->next;

  }

  }

  }

  2. 編程實(shí)現:找出兩個(gè)字符串中最大公共子字符串,如”abccade”,”dgcadde”的最大子串為”cad”

  int GetCommon(char *s1, char *s2, char **r1, char **r2)

  {

  int len1 = strlen(s1);

  int len2 = strlen(s2);

  int maxlen = 0;

  for(int i = 0; i < len1; i++)

  {

  for(int j = 0; j < len2; j++)

  {

  if(s1[i] == s2[j])

  {

  int as = 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. 編程實(shí)現:把十進(jìn)制數(long型)分別以二進(jìn)制和十六進(jìn)制形式輸出,不能使用printf系列庫函數

  char* test3(long num) {

  char* buffer = (char*)malloc(11);

  buffer[0] = ’0′;

  buffer[1] = ‘x’;

  buffer[10] = ‘\0′;

  char* temp = buffer + 2;

  for (int i=0; i < 8; i++) {

  temp[i] = (char)(num<<4*i>>28);

  temp[i] = temp[i] >= 0 ? temp[i] : temp[i] + 16;

  temp[i] = temp[i] < 10 ? temp[i] + 48 : temp[i] + 55;

  }

  return buffer;

  }

  輸入N, 打印 N*N 矩陣

  比如 N = 3,打。

  1 2 3

  8 9 4

  7 6 5

  N = 4,打。

  1 2 3 4

  12 13 14 5

  11 16 15 6

  10 9 8 7

  解答:

  1 #define N 15

  int s[N][N];

  void main()

  {

  int k = 0, i = 0, j = 0;

  int a = 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;

  }

  }

  2 define MAX_N 100

  int matrix[MAX_N][MAX_N];

  /*

  *(x,y):第一個(gè)元素的坐標

  * start:第一個(gè)元素的值

  * n:矩陣的大小

  */

  void SetMatrix(int x, int y, int start, int n) {

  int i, j;

  if (n <= 0) /pic/p>

  return;

  if (n == 1) { /pic/p>

  matrix[x][y] = start;

  return;

  }

  for (i = x; i < x + n-1; i++) /pic/p>

  matrix[y][i] = start++;

  for (j = y; j < y + n-1; j++) /pic/p>

  matrix[j][x+n-1] = start++;

  for (i = x+n-1; i > x; i–) /pic/p>

  matrix[y+n-1][i] = start++;

  for (j = y+n-1; j > y; j–) /pic/p>

  matrix[j][x] = start++;

  SetMatrix(x+1, y+1, start, n-2); /pic/p>

  }

  void main() {

  int i, j;

  int n;

  scanf(“%d”, &n);

  SetMatrix(0, 0, 1, n);

  /pic/p>

  for(i = 0; i < n; i++) {

  for (j = 0; j < n; j++)

  printf(“%4d”, matrix[i][j]);

  printf(“\n”);

  }

  }

  斐波拉契數列遞歸實(shí)現的方法如下:

  int Funct( int n )

  {

  if(n==0) return 1;

  if(n==1) return 1;

  retrurn Funct(n-1) + Funct(n-2);

  }

  請問(wèn),如何不使用遞歸,來(lái)實(shí)現上述函數?

  請教各位高手!

  解答:int Funct( int n ) /pic/p>

  {

  int a=0;

  int b=1;

  int c;

  if(n==0) c=1;

  else if(n==1) c=1;

  else for(int i=2;i<=n;i++) /pic/p>

  {

  c=a+b;

  a=b;

  b=c;

  }

  return c;

  }

  解答:

  現在大多數系統都是將低字位放在前面,而結構體中位域的申明一般是先聲明高位。

  100 的二進(jìn)制是 001 100 100

  低位在前 高位在后

  001—-s3

  100—-s2

  100—-s1

  所以結果應該是 1

  如果先申明的在低位則:

  001—-s1

  100—-s2

  100—-s3

  結果是 4

  1、原題跟little-endian,big-endian沒(méi)有關(guān)系

  2、原題跟位域的存儲空間分配有關(guān),到底是從低字節分配還是從高字節分配,從Dev C++和VC7.1上看,都是從低字節開(kāi)始分配,并且連續分配,中間不空,不像譚的書(shū)那樣會(huì )留空位

  3、原題跟編譯器有關(guān),編譯器在未用堆?臻g的默認值分配上有所不同,Dev C++未用空間分配為

  01110111b,VC7.1下為11001100b,所以在Dev C++下的結果為5,在VC7.1下為1。

  注:PC一般采用little-endian,即高高低低,但在網(wǎng)絡(luò )傳輸上,一般采用big-endian,即高低低高,華為是做網(wǎng)絡(luò )的,所以可能考慮big-endian模式,這樣輸出結果可能為4

  判斷一個(gè)字符串是不是回文

  int IsReverseStr(char *aStr)

  {

  int i,j;

  int found=1;

  if(aStr==NULL)

  return -1;

  j=strlen(aStr);

  for(i=0;i if(*(aStr+i)!=*(aStr+j-i-1))

  {

  found=0;

  break;

  }

  return found;

  }

  Josephu 問(wèn)題為:設編號為1,2,… n的n個(gè)人圍坐一圈,約定編號為k(1<=k<=n)的人從1開(kāi)始報數,數到m 的那個(gè)人出列,它的下一位又從1開(kāi)始報數,數到m的那個(gè)人又出列,依次類(lèi)推,直到所有人出列為止,由此產(chǎn)生一個(gè)出隊編號的序列。

  數組實(shí)現:

  #include

  #include

  int Josephu(int n, int m)

  {

  int flag, i, j = 0;

  int *arr = (int *)malloc(n * sizeof(int));

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

  arr[i] = 1;

  for (i = 1; i < n; ++i)

  {

  flag = 0;

  while (flag < m)

  {

  if (j == n)

  j = 0;

  if (arr[j])

  ++flag;

  ++j;

  }

  arr[j - 1] = 0;

  printf(“第%4d個(gè)出局的人是:%4d號\n”, i, j);

  }

  free(arr);

  return j;

  }

  int main()

  {

  int n, m;

  scanf(“%d%d”, &n, &m);

  printf(“最后勝利的是%d號!\n”, Josephu(n, m));

  system(“pause”);

  return 0;

  }

  鏈表實(shí)現:

  #include

  #include

  typedef struct Node

  {

  int index;

  struct Node *next;

  }JosephuNode;

  int Josephu(int n, int m)

  {

  int i, j;

  JosephuNode *head, *tail;

  head = tail = (JosephuNode *)malloc(sizeof(JosephuNode));

  for (i = 1; i < n; ++i)

  {

  tail->index = i;

  tail->next = (JosephuNode *)malloc(sizeof(JosephuNode));

  tail = tail->next;

  }

  tail->index = i;

  tail->next = head;

  for (i = 1; tail != head; ++i)

  {

  for (j = 1; j < m; ++j)

  {

  tail = head;

  head = head->next;

  }

  tail->next = head->next;

  printf(“第%4d個(gè)出局的人是:%4d號\n”, i, head->index);

  free(head);

  head = tail->next;

  }

  i = head->index;

  free(head);

  return i;

  }

  int main()

  {

  int n, m;

  scanf(“%d%d”, &n, &m);

  printf(“最后勝利的是%d號!\n”, Josephu(n, m));

  system(“pause”);

  return 0;

  }

  已知strcpy函數的原型是:

  char * strcpy(char * strDest,const char * strSrc);

  1.不調用庫函數,實(shí)現strcpy函數。

  2.解釋為什么要返回char *。

  解說(shuō):

  1.strcpy的實(shí)現代碼

  char * strcpy(char * strDest,const char * strSrc)

  {

  if ((strDest==NULL)||(strSrc==NULL)) file:/pic/1]

  throw “Invalid argument(s)”; /pic/p>

  char * strDestCopy=strDest; file:/pic/3]

  while ((*strDest++=*strSrc++)!=’\0′); file:/pic/4]

  return strDestCopy;

  }

  錯誤的做法:

  [1]

  (A)不檢查指針的有效性,說(shuō)明答題者不注重代碼的健壯性。

  (B)檢查指針的有效性時(shí)使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),說(shuō)明答題者對C語(yǔ)言中類(lèi)型的隱式轉換沒(méi)有深刻認識。在本例中char *轉換為bool即是類(lèi)型隱式轉換,這種功能雖然靈活,但更多的是導致出錯概率增大和維護成本升高。所以C++專(zhuān)門(mén)增加了bool、true、false 三個(gè)關(guān)鍵字以提供更安全的條件表達式。

  (C)檢查指針的有效性時(shí)使用((strDest==0)||(strSrc==0)),說(shuō)明答題者不知道使用常量的好處。直接使用字面常量(如本例中的 0)會(huì )減少程序的可維護性。0雖然簡(jiǎn)單,但程序中可能出現很多處對指針的檢查,萬(wàn)一出現筆誤,編譯器不能發(fā)現,生成的程序內含邏輯錯誤,很難排除。而使用 NULL代替0,如果出現拼寫(xiě)錯誤,編譯器就會(huì )檢查出來(lái)。

  [2]

  (A)return new string(“Invalid argument(s)”);,說(shuō)明答題者根本不知道返回值的用途,并且他對內存泄漏也沒(méi)有警惕心。從函數中返回函數體內分配的內存是十分危險的做法,他把釋放內存的義務(wù)拋給不知情的調用者,絕大多數情況下,調用者不會(huì )釋放內存,這導致內存泄漏。

  (B)return 0;,說(shuō)明答題者沒(méi)有掌握異常機制。調用者有可能忘記檢查返回值,調用者還可能無(wú)法檢查返回值(見(jiàn)后面的鏈式表達式)。妄想讓返回值肩負返回正確值和異常值的雙重功能,其結果往往是兩種功能都失效。應該以?huà)伋霎惓?lái)代替返回值,這樣可以減輕調用者的負擔、使錯誤不會(huì )被忽略、增強程序的可維護性。

  [3]

  (A)忘記保存原始的strDest值,說(shuō)明答題者邏輯思維不嚴密。

  [4]

  (A)循環(huán)寫(xiě)成while (*strDest++=*strSrc++);,同[1](B)。

  (B)循環(huán)寫(xiě)成while (*strSrc!=’\0′) *strDest++=*strSrc++;,說(shuō)明答題者對邊界條件的檢查不力。循環(huán)體結束后,strDest字符串的末尾沒(méi)有正確地加上’\0′。

【為自己鼓掌高一作文】相關(guān)文章:

為自己鼓掌07-04

為自己的鼓掌作文06-02

(精選)為自己鼓掌作文09-12

為自己鼓掌作文04-26

為自己鼓掌作文[必備]09-14

為自己鼓掌作文[精品]09-14

為自己鼓掌作文【精品】11-16

我為自己鼓掌作文12-14

為自己鼓掌學(xué)生作文02-27

我為自己鼓掌作文05-09

  • 相關(guān)推薦
一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看