fork download
  1. #include <stdio.h>
  2.  
  3. #define STUDENTS 10
  4. #define SUBJECTS 2
  5.  
  6. int main() {
  7. int scores[STUDENTS][SUBJECTS];
  8. int n, i, j;
  9. int sum[SUBJECTS] = {0};
  10. int sum_sq[SUBJECTS] = {0};
  11. int min[SUBJECTS], max[SUBJECTS];
  12. int avg[SUBJECTS];
  13. int variance[SUBJECTS];
  14.  
  15. // 人数入力
  16. printf("学生数を入力(最大10人):");
  17. scanf("%d", &n);
  18.  
  19. if (n < 1 || n > STUDENTS) {
  20. printf("人数が不正です。\n");
  21. return 1;
  22. }
  23.  
  24. // 得点入力
  25. for (i = 0; i < n; i++) {
  26. printf("%d人目の得点を入力(科目1 科目2):", i + 1);
  27. for (j = 0; j < SUBJECTS; j++) {
  28. scanf("%d", &scores[i][j]);
  29. }
  30. }
  31.  
  32. // 初期化
  33. for (j = 0; j < SUBJECTS; j++) {
  34. min[j] = scores[0][j];
  35. max[j] = scores[0][j];
  36. }
  37.  
  38. // 集計処理
  39. for (j = 0; j < SUBJECTS; j++) {
  40. for (i = 0; i < n; i++) {
  41. int val = scores[i][j];
  42. sum[j] += val;
  43. sum_sq[j] += val * val;
  44. if (val < min[j]) min[j] = val;
  45. if (val > max[j]) max[j] = val;
  46. }
  47. avg[j] = sum[j] / n;
  48. variance[j] = (sum_sq[j] / n) - (avg[j] * avg[j]);
  49. }
  50.  
  51. // 結果出力
  52. for (j = 0; j < SUBJECTS; j++) {
  53. printf("\n科目%dの統計:\n", j + 1);
  54. printf("最小点: %d\n", min[j]);
  55. printf("最大点: %d\n", max[j]);
  56. printf("平均点: %d\n", avg[j]);
  57. printf("分散 : %d\n", variance[j]);
  58. }
  59.  
  60. return 0;
  61. }
  62.  
  63.  
Success #stdin #stdout 0s 5316KB
stdin
3: 80 40: 50 84: 47 38
stdout
学生数を入力(最大10人):1人目の得点を入力(科目1 科目2):2人目の得点を入力(科目1 科目2):3人目の得点を入力(科目1 科目2):
科目1の統計:
最小点: -2085998647
最大点: 0
平均点: -695332882
分散  : 2096063148

科目2の統計:
最小点: 0
最大点: 32765
平均点: 10921
分散  : 238580167