integration2.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:2k
源码类别:

数学计算

开发平台:

Visual C++

  1. /* 学生成绩统计 */
  2. # include <stdio.h>
  3. # define M 5
  4. # define N 10
  5. float score[N][M];
  6. float a_stu[N], a_cor[M];
  7. /* 声明子函数 */
  8. void input_stu();
  9. void avr_stu();
  10. void avr_cor();
  11. float highest(int *r, int *c);
  12. float s_diff();
  13. void main()    /* 主函数 */
  14. {
  15. int i, j, r, c;
  16. float h;
  17. r = 0;
  18. c = 1;
  19. input_stu();    /* 调用函数input_stu,输入学生各门功课的成绩 */    
  20. avr_stu();    /* 调用函数avr_stu,求出每个学生的平均分 */
  21. avr_cor();    /* 调用函数avr_cor,找出学生成绩中的最高分*/
  22. printf("n  序号   课程1   课程2   课程3   课程4   课程5   平均分");
  23. for(i=0; i<N; i++)
  24. {
  25. printf("n  NO%2d", i+1);
  26. for(j=0; j<M; j++)
  27. printf("%8.2f", score[i][j]);
  28. printf("%8.2f", a_stu[i]);
  29. }
  30. printf("n课平均");
  31. for(j=0; j<M; j++)
  32. printf("%8.2f", a_cor[j]);
  33. h = highest(&r, &c);
  34. printf("nn最高分%8.2f是 %d号学生的第%d门课n", h, r, c);
  35. printf("  方差 %8.2fn", s_diff());
  36. }
  37. void input_stu()    /* 输入学生的成绩 */
  38. {
  39. int i, j;
  40. for(i=0; i<N; i++)
  41. {
  42. printf("请输入学生%2d的5个成绩:n", i+1);
  43. for(j=0; j<M; j++)
  44. scanf("%f", &score[i][j]);
  45. }
  46. }
  47. void avr_stu()    /* 计算学生的平均分 */
  48. {
  49. int i, j;
  50. float s;
  51. for(i=0; i<N; i++)
  52. {
  53. s = 0;
  54. for(j=0; j<M; j++)
  55. s = s + score[i][j];
  56. a_stu[i] = s/M;
  57. }
  58. }
  59. void avr_cor()    /* 计算课程的平均分 */
  60. {
  61. int i, j;
  62. float s;
  63. for(j=0; j<M ;j++)
  64. {
  65. s = 0;
  66. for(i=0; i<N; i++)
  67. s = s + score[i][j];
  68. a_cor[j] = s/(float)N;
  69. }
  70. }
  71. float highest(int *r, int *c)    /* 找最高分 */
  72. {
  73. float high;
  74. int i, j;
  75. high = score[0][0];
  76. for(i=0; i<N; i++)
  77. for(j=0; j<M; j++)
  78. if(score[i][j]>high)
  79. {
  80. high = score[i][j];
  81. *r = i + 1;
  82. *c = j + 1;
  83. }
  84. return high;
  85. }
  86. float s_diff()    /* 求方差 */
  87. {
  88. int i;
  89. float sumx, sumxn;
  90. sumx = 0.0;
  91. sumxn = 0.0;
  92. for(i=0; i<N; i++)
  93. {
  94. sumx = sumx + a_stu[i]*a_stu[i];
  95. sumxn = sumxn + a_stu[i];
  96. }
  97. return (sumx/N-(sumxn/N)*(sumxn/N));
  98. }