fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define MAX_STUDENTS 10
  5. #define SUBJECTS 2
  6.  
  7. int main() {
  8. int scores[MAX_STUDENTS][SUBJECTS];
  9. int num_students;
  10.  
  11. printf("学生の人数を入力してください(最大10人):");
  12. scanf("%d", &num_students);
  13.  
  14. if (num_students < 1 || num_students > MAX_STUDENTS) {
  15. printf("無効な人数です。\n");
  16. return 1;
  17. }
  18.  
  19. // 得点の入力
  20. for (int i = 0; i < num_students; i++) {
  21. printf("\n学生%dの得点を入力してください:\n", i + 1);
  22. for (int j = 0; j < SUBJECTS; j++) {
  23. printf(" 科目%d: ", j + 1);
  24. scanf("%d", &scores[i][j]);
  25. }
  26. }
  27.  
  28. // 各科目の統計処理
  29. for (int subj = 0; subj < SUBJECTS; subj++) {
  30. int min = scores[0][subj];
  31. int max = scores[0][subj];
  32. double sum = 0.0;
  33. double variance = 0.0;
  34.  
  35. for (int i = 0; i < num_students; i++) {
  36. int score = scores[i][subj];
  37. if (score < min) min = score;
  38. if (score > max) max = score;
  39. sum += score;
  40. }
  41.  
  42. double average = sum / num_students;
  43.  
  44. for (int i = 0; i < num_students; i++) {
  45. variance += pow(scores[i][subj] - average, 2);
  46. }
  47.  
  48. variance /= num_students;
  49.  
  50. printf("\n科目%dの結果:\n", subj + 1);
  51. printf(" 最低点: %d\n", min);
  52. printf(" 最高点: %d\n", max);
  53. printf(" 平均点: %.2f\n", average);
  54. printf(" 分散 : %.2f\n", variance);
  55. }
  56.  
  57. return 0;
  58. }
  59.  
Success #stdin #stdout 0s 5320KB
stdin
2
3
4
5
6
7
7
8
9

9
0
9
stdout
学生の人数を入力してください(最大10人):
学生1の得点を入力してください:
  科目1:   科目2: 
学生2の得点を入力してください:
  科目1:   科目2: 
科目1の結果:
  最低点: 3
  最高点: 5
  平均点: 4.00
  分散  : 1.00

科目2の結果:
  最低点: 4
  最高点: 6
  平均点: 5.00
  分散  : 1.00