填空题
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun(),其功能是:求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩是85.5、76、69.5、85、91、72、64.5、87.5,则他的平均分应为78.875。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序
#include
<stdio.h>
#define N 8
typedef 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.1f/n", s.s[i]);
printf("/nave=% 7.3f/n", s.ave);
}
【正确答案】void fun(STREC$a)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]。