模拟试题

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

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

来源:2exam.com 2013-10-30 10:15:42


  解题思路: 

  第一处:把指针p所指的值赋值给b[k]中。 

  第二处:把空格字符赋值给b[k++]中,而不是一个空格的字符串。 

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

  N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头 节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87, 则平均分应当 是:78.625。 

  注意: 部分源程序在文件PROG1.C中。 

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

  给定源程序: 

  #include  

  #include  

  #define N 8 

  struct slist 

  { double s; 

  struct slist *next; 

  }; 

  typedef struct slist STREC; 

  double fun( STREC *h ) 

  { 

  } 

  STREC * creat( double *s) 

  { STREC *h,*p,*q; int i=0; 

  h=p=(STREC*)malloc(sizeof(STREC));p->s=0; 

  while(i  { q=(STREC*)malloc(sizeof(STREC)); 

  q->s=s[i]; i++; p->next=q; p=q; 

  } 

  p->next=0; 

  return h; 

  } 

  outlist( STREC *h) 

  { STREC *p; 

  p=h->next; printf("head"); 

  do 

  { printf("->%4.1f",p->s);p=p->next;} 

  while(p!=0); 

  printf("\n\n"); 

  } 

  main() 

  { double s[N]={85,76,69,85,91,72,64,87},ave; 

  STREC *h; 

  h=creat( s ); outlist(h); 

  ave=fun( h ); 

  printf("ave= %6.3f\n",ave); 

  NONO(); 

  } 

  解题思路: 

  本题是计算链表结构中成绩的平均分。具体操作请看答案程序中的说明。 

  参考答案: 

  #include  

  #include  

  double fun( STREC *h ) 

  { 

  STREC *p=h->next; /* 由于头结点中没有存放数据 */ 

  double av=0.0; /* 对计算成绩平均值的变量进行初始化 */ 

  int n = 0 ; 

  while(p!=NULL) { /* 判断链表是否结束 */ 

  av = av + p->s ; /* 对成绩进行累加 */ 

  p=p->next; /* 到下一个结点位置 */ 

  n++; /* 人数加1 */ 

  } 

  av /= n ; /* 计算成绩平均值 */ 

  return av ; /* 返回成绩平均值 */ 

  } 

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