问答题 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。试题程序:#include<stdio.h>#clefine N 8typedef struct{ char num[10]; double s[N]; double ave;}STREC;void fun(STREC*a){}void main(){ STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5); int i; fun(&s); printf("The%s's student data:\n",s.num); for(i=0;i<N;i++) printf("%4.1 f\n",s.s[i]); printf("\nave=%7.3f\n",s.ave);}
【正确答案】正确答案: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=a->ave/N; /*求平均分*/ }
【答案解析】解析:本题考查自定义形参的相关知识点,程序流程为:在fun函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a,此时,引用成员的方式可以使用指向运算符,即a->ave和a->s[i],也可用(*a).ave和(*a).s[i]。