首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 二级考试 >

计算机二级C语言上机题考前预测(附答案)(3)(2)

2013-03-26 
计算机二级C语言上机题考前预测(附答案)(3)

  第二题:改错题

  下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

  请改正函数fun中的错误,使它能得出正确的结果。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

  #include

  #include

  #include

  typedef struct aa

  {

  int data;

  struct aa *next;

  } NODE;

  int fun(NODE *h)

  {

  int sum = 0;

  NODE *p;

  p = h->next;

  /********found********/

  while (p->next)

  {

  if (p->data%2 == 0)

  sum += p->data;

  /********found********/

  p = h->next;

  }

  return sum;

  }

  NODE *creatlink(int n)

  {

  NODE *h, *p, *s;

  int i;

  h = p = (NODE*)malloc(sizeof(NODE));

  for (i=1; i

  {

  s = (NODE*)malloc(sizeof(NODE));

  s->data = rand()%16;

  s->next = p->next;

  p->next = s;

  p = p->next;

  }

  p->next = NULL;

  return h;

  }

  outlink(NODE *h)

  {

  NODE *p;

  p = h->next;

  printf("\n\nTHE LIST :\n\n HEAD");

  while (p)

  {

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

  p = p->next;

  }

  printf("\n");

  }

  main()

  {

  NODE *head;

  int sum;

  head = creatlink(10);

  outlink(head);

  sum = fun(head);

  printf("\nSUM=%d", sum);

  }

  第二题:

  第1处:while(p->next)应改为while(p!=NULL)

  第2处:p=h->next;应改为p=p->next;


热点排行