某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#define N 8
typedef struet
{ char num[10];
double s[N];
double ave;
}STREC;
void fun(STREC*a)
{
}
main()
{ STREC s={ GA005”,85.5,76,69.5,85,91,72,64.5,87.5};
int i;
void NONO();
fun(&s);
prinff(“The%s’s student data:\n”,s.num);
for(i=0;i<N;i++)
prinff(“%4.1f\n”,s.s[i]);
prinff(“\nave=%7.3f\n”,s.ave);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE*out;
int i,j;STREC s[10]={
{“GA005”,85.5,76,69.5,85,91,72,64.5,87.5},
{“GA001”,82.5,66,76.5,76,89,76,46.5,78.5},
{“GA002”,72.5,56,66.5,66,79,68,46.5,58.5},
{“GA003”,92.5,76,86.5,86,99,86,56.5,88.5},
{“GA004”,82,66.5,46.5,56,76,75,76.5,63.5},
{“GA006”,75.5,74,71.5,85,81,79,64.5,71.5},
{“GA007”,92.5,61,72.5,84,79,75,66.5,72.5},
{“CA008”,72.5,86,73.5,80,69,63,76.5,53.5},
{“GA009”,66.5,71,74.5,70,61,82,86.5,58.5},
{“GAO10”,76,66.5,75.5,60,76,71,96.5,93.5},
};
out=fopen(“out.dat”,“W”);
for(i=0;i<10;i++){
fun(&s[i]);
fprintf(out,“%7.3f\n”,s[i].ave);
}
fclose(out);
}
【正确答案】void fun(STREC*a)
int i:
a一>ave=0.0:
for(i=0;i<N;i++) a一>ave=a一>ave+a一>s[i];
/*求各门成绩的总和*/
a一>ave/=N; /*求平均分*/
}
【答案解析】