2013年计算机二级C语言上机题库四十九

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年6月24日
 填空题
  给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数, 存放在形参n所指的存储单元中。
  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  #include <stdlib.h>
  #define N 8
  typedef struct list
  { int data;
  struct list *next;
  } SLIST;
  SLIST *creatlist(int *a);
  void outlist(SLIST *);
  void fun( SLIST *h, int *n)
  { SLIST *p;
  ___1___=0;
  p=h->next;
  while(p)
  { (*n)++;
  p=p->___2___;
  }
  }
  main()
  { SLIST *head;
  int a[N]={12,87,45,32,91,16,20,48}, num;
  head=creatlist(a); outlist(head);
  fun(___3___, &num);
  printf("\nnumber=%d\n",num);
  }
  SLIST *creatlist(int a[])
  { SLIST *h,*p,*q; int i;
  h=p=(SLIST *)malloc(sizeof(SLIST));
  for(i=0; i<N; i++)
  { q=(SLIST *)malloc(sizeof(SLIST));
  q->data=a[i]; p->next=q; p=q;
  }
  p->next=0;
  return h;
  }
  void outlist(SLIST *h)
  { SLIST *p;
  p=h->next;
  if (p==NULL) printf("The list is NULL!\n");
  else
  { printf("\nHead ");
  do
  { printf("->%d",p->data); p=p->next; }
  while(p!=NULL);
  printf("->End\n");
  }
  }
  解题思路:
  本题是要求统计出带有头结点的单向链表中结点的个数。
  第一处:对n所指的存储单元进行初始化,所以应填:*n。
  第二处:指向p的下一个结点,所以应填:next。
  第三处:函数调用,在主函数中已经给出了head,所以应填:head。
首页 1 2 3 尾页

相关文章