P006 求学生成绩的平均分 ★

03-程序设计题 软件121, 唐鼎威 687浏览

所属年份:2011.9;
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

#include <stdio.h>
#define   N   8
typedef  struct
{  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;
   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);
}

【考点分析】
本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。

【解题思路】
本题考查自定义形参的相关知识点,程序流程是这样的:在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a ,此时,引用成员的方式可以使用指向运算符,即a->ave和a->s[i],当然也可用(*a).ave和(*a).s[i]。

【参考答案】

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;                        /*求平均分*/
}