1. /*-------------------------------------------------------
    2. 【程序设计】
    3. ---------------------------------------------------------
    4. 题目:某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在
    5. 主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记
    6. 录的ave成员中。
    7. 例如:学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。
    8. 注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写
    9. 的若干语句。
    10. -------------------------------------------------------*/
    11. #include <stdio.h>
    12. #define N 8
    13. void wwjt ( );
    14. typedef struct
    15. {
    16. char num[10];
    17. double s[N];
    18. double ave;
    19. } STREC;
    20. void fun(STREC *a)
    21. {
    22. /**********Program**********/
    23. double ave = 0.0;
    24. int i;
    25. for(i=0;i<N;i++)
    26. a->ave = a->ave+a->s[i];
    27. a->ave/=N;
    28. /********** End **********/
    29. }
    30. main()
    31. {
    32. STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
    33. int i;
    34. fun( &s );
    35. printf("The %s's student data:\n", s.num);
    36. for(i=0;i<N; i++)
    37. printf("%4.1f\n",s.s[i]);
    38. printf("\nave=%7.3f\n",s.ave);
    39. wwjt();
    40. }
    41. void wwjt()
    42. {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    43. FILE *out ;
    44. int i ; STREC s[10] = {
    45. {"GA005",85.5,76,69.5,85,91,72,64.5,87.5},
    46. {"GA001",82.5,66,76.5,76,89,76,46.5,78.5},
    47. {"GA002",72.5,56,66.5,66,79,68,46.5,58.5},
    48. {"GA003",92.5,76,86.5,86,99,86,56.5,88.5},
    49. {"GA004",82,66.5,46.5,56,76,75,76.5,63.5},
    50. {"GA006",75.5,74,71.5,85,81,79,64.5,71.5},
    51. {"GA007",92.5,61,72.5,84,79,75,66.5,72.5},
    52. {"GA008",72.5,86,73.5,80,69,63,76.5,53.5},
    53. {"GA009",66.5,71,74.5,70,61,82,86.5,58.5},
    54. {"GA010",76,66.5,75.5,60,76,71,96.5,93.5},
    55. };
    56. out = fopen("out.dat","w") ;
    57. for(i = 0 ; i < 10 ; i++)
    58. {
    59. fun(&s[i]) ;
    60. fprintf(out, "%7.3f\n", s[i].ave) ;
    61. }
    62. fclose(out) ;
    63. }