fork download
  1. #include <stdio.h>
  2.  
  3. #define MAX 100
  4. int seiseki[MAX];
  5. int size = 0;
  6.  
  7. void record(int score) {
  8. if (size < MAX) {
  9. seiseki[size] = score;
  10. size++;
  11. } else {
  12. printf("入力上限に達しました。\n");
  13. }
  14. }
  15.  
  16. double average() {
  17. if (size == 0) return 0;
  18.  
  19. int sum = 0;
  20. for (int i = 0; i < size; i++) {
  21. sum += seiseki[i];
  22. }
  23. return (double)sum / size;
  24. }
  25.  
  26. double cond_average(int a, int b) {
  27. int sum = 0, count = 0;
  28. for (int i = 0; i < size; i++) {
  29. if (seiseki[i] >= a && seiseki[i] <= b) {
  30. sum += seiseki[i];
  31. count++;
  32. }
  33. }
  34.  
  35. if (count > 0) {
  36. return (double)sum / count;
  37. } else {
  38. return 0;
  39. }
  40. }
  41.  
  42. int main() {
  43. int num;
  44. printf("学生の人数を入力してください:\n");
  45. scanf("%d", &num);
  46.  
  47. for (int i = 0; i < num; i++) {
  48. int score;
  49. printf("学生 %d の点数を入力\n", i + 1);
  50. scanf("%d", &score);
  51. record(score);
  52. }
  53.  
  54. printf("全体の平均点\n", average());
  55. printf("60点以上100点以下の平均点\n", cond_average(60, 100));
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0.01s 5312KB
stdin
3 60 61 62
stdout
学生の人数を入力してください:
学生 1 の点数を入力
学生 2 の点数を入力
学生 3 の点数を入力
全体の平均点
60点以上100点以下の平均点