2013年计算机二级C语言上机题库二十一_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年4月27日
 改错题
  下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数FUN的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
  请改正程序中的错误,使它能得出正确结果。
  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
  试题程序:#include
  #include
  #include
  typedef struct aa
  {
  int data;
  struct aa *next;
  } NODE;
  fun(NODE *h)
  {
  int max = -1;
  NODE *p;
  /********found********/
  p = h; 
  while (p)
  {
  if (p->data > max)
  max = p->data;
  /********found********/
  p=h->next;
  }
  return max;
  }
  outresult(int s, FILE *pf)
  {
  fprintf(pf, "\nThe max in link : %d\n", s);
  }
  NODE *creatlink(int n, int m)
  {
  NODE *h, *p, *s;
  int i;
  h = p = (NODE*)malloc(sizeof(NODE));
  h->data = 9999;
  for (i=1; i<=n; i++)
  {
  s = (NODE*)malloc(sizeof(NODE));
  s->data = rand()%m;
  s->next = p->next;
  p->next = s;
  p = p->next;
  }
  p->next = NULL;
  return h;
  }
  outlink(NODE *h, FILE *pf)
  {
  NODE *p;
  p = h->next;
  fprintf(pf, "\nTHE LIST:\n\n HEAD");
  while (p)
  {
  fprintf(pf, "->%d ", p->data);
  p = p->next;
  }
  fprintf(pf, "\n");
  }
  main()
  {
  NODE *head;
  int m;
  head = creatlink(12, 100);
  outlink(head, stdout);
  m = fun(head);
  printf("\nTHE RESULT :\n");
  outresult(m, stdout);
  }
  第1处:p=h;应改为p=h->next;
  第2处:p=h->next;应改为p=p->next;

 


相关文章