问答题
1. 某学生的记录由学号、8门课程的成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。
例如,学生的8门课程成绩分别是: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",8.num);
for (i=0;i<N;i++)
printf("%4.1fkn",s.s[i]);
printf("\nknave=%7.3fkn",s.ave);
printf("\n");
}
【正确答案】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]”)。