某学生的记录由学号、8门课成绩和平均分组成,学号和 8门课的成绩已在主函数中给出。请编写fun()函数,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,若学生的成绩是85.5,76,69.5,85,91,72,64

admin2010-05-05  32

问题 某学生的记录由学号、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()
   {
   }
   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);
       /*输出各科成绩*/
     printf("\nave=%7.3f\n",s.ave);
     /*输出平均分*/
   }

选项

答案void fun(STREC *p) { int i; p->ave=0.0; for(i=0;i<N;i++) p->ave=p->ave+p->s[i]; /*求各门成绩的总和*/ p->ave=p->ave/N; /*求平均分*/ }

解析 本题考查自己定义形参的相关知识点,程序流程是这样的,在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC *p,此时,引用成员的方式可以是用指向运算符即p->ave和 p->s,当然,也可用(*p).ave和(*p).s
转载请注明原文地址:https://kaotiyun.com/show/DXID777K
0

最新回复(0)