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

admin2021-07-09  34

问题 N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    #include
    #include
    #de6ne 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++;P一>next=q;P=q;
  }
  P一>next=0:
  return h;
}
oudist(STREC*h)
{STREC*p;
  P=h一>next;prinff(“head”);
  do
  {prinff(“一>%4.If”,P一>s);P=P一>next;}
  while(P!=0);
  prinff(“\n\n”);
}
main()
{double s[N]={85,76,69,85,9l,72,64,87},ave;
  void NONO();
  STREC*h;
  h=creat(s);outlist(h);
  ave=fun(h);
  prinff(“ave=%6.3f\n”,ave);
  NONO();
{
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE* in,* out;
int i,j;double s[N],ave;
STREC*h:
in=fopen(“in.dat”,“r”);
out=fopen(“out.dat”,“w”);
for(i=0;i<10;i++)
{
    for(j=0;j    h=creat(s);
    ave=fun(h);
    fprinff(out,“%6.31f\n”,ave);
}
fclose(in);
fclose(out);
}

选项

答案double fun(STREC*h) { double ave=0.0: STREC*p=h->next; while(p!=NULL) {ave=ave+p—>s; p=p->next; } retum ave/N; }

解析
转载请注明原文地址:https://kaotiyun.com/show/xitp777K
0

随机试题
最新回复(0)