模拟试题

3773考试网计算机等级考试模拟试题正文

2014年3月全国计算机二级C语言上机模拟试题十四之2

来源:2exam.com 2013-10-30 19:49:27

解题思路: 

  本题主要是考察用函数指针指向要调用的函数。程序中共有三处要填上适当的内容,使程

  序能运行出正确的结果。 

  第一处:定义函数指针的类型,所以应填:double。 

  第二处:使f指向函数f1,所以应填:f1。 

  第三处:使f指向函数f2,所以应填:f2。 

  *************************************************** 

  给定程序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()%16; 

  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); 

  } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1