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

计算机二级2013年最新C语言上机同步训练题(2)(2)

2013-05-30 
计算机二级2013年最新C语言上机同步训练题(2)小编寄语:现在读书人网(www.reader8.net)陆续为您整理考试相关信息,供大家参考,希望对同学们在这短暂的日子里将这些内容整理掌握。

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

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

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

  给定源程序:

  #include

  #include

  typedef struct aa

  { int data; struct aa *next; }NODE;

  int fun(NODE *h)

  { int sum = 0 ;

  NODE *p;

  p=h;

  while(p)

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

  sum +=p->data;

  p=h->next;

  }

  return sum;

  }

  NODE *creatlink(int n)

  { NODE *h, *p, *s, *q;

  int i, x;

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

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

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

  s->data=rand();

  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 ,"\n\nTHE LIST :\n\n HEAD " );

  while(p)

  { fprintf(pf ,"->%d ",p->data ); p=p->next; }

  fprintf (pf,"\n");

  }

  outresult(int s, FILE *pf)

  { fprintf(pf,"\nThe sum of even numbers : %d\n",s);}

  main()

  { NODE *head; int even;

  head=creatlink(12);

  head->data=9000;

  outlink(head , stdout);

  even=fun(head);

  printf("\nThe result :\n"); outresult(even, stdout);

  }

  解题思路:

  本题是考察如何使用单向链表把数据域的值按条件进行累加。

  第一处:试题要求不计算头结点,所以应改为:p=h->next;

  第二处:指向p的下一个结点来实现循环,所以应改为:p=p->next;


热点排行