问答题
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。 试题程序:#incl ude < stdio.h >#define N 8typectef struct{ char num[1 ]; double s[N]; double ave; } STREC, void fun(STREC*a) { } void main() { STREC S={"GA005",85.5,7 6,69.5,85 ,91, 72 ,64.5 r 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("knave=%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]。