fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4.  
  5. typedef struct {
  6. char name[20];
  7. int age;
  8. double height;
  9. } Body;
  10.  
  11. int main(void) {
  12. Body data[] = {
  13. {"Tanaka", 20, 170.2},
  14. {"Suzuki", 19, 165.8},
  15. {"Yamada", 22, 180.4},
  16. {"Sato", 21, 175.3},
  17. {"Kobayashi", 20, 169.0}
  18. };
  19. int n = sizeof(data) / sizeof(data[0]);
  20.  
  21. for (int i = 0; i < n - 1; i++) {
  22. for (int j = i + 1; j < n; j++) {
  23. if (data[i].height > data[j].height) {
  24. Body temp = data[i];
  25. data[i] = data[j];
  26. data[j] = temp;
  27. }
  28. }
  29. }
  30.  
  31. printf("【整列結果】\n");
  32. for (int i = 0; i < n; i++) {
  33. printf("%-10s %2d歳 %.1fcm\n", data[i].name, data[i].age, data[i].height);
  34. }
  35.  
  36. double sum = 0.0;
  37. for (int i = n - 3; i < n; i++) {
  38. sum += data[i].height;
  39. }
  40. double ave = sum / 3.0;
  41.  
  42. double var = 0.0;
  43. for (int i = n - 3; i < n; i++) {
  44. var += pow(data[i].height - ave, 2);
  45. }
  46. double std = sqrt(var / 3.0);
  47.  
  48. printf("\n上位3名の平均身長:%.1fcm\n", ave);
  49. printf("上位3名の標準偏差:%.1fcm\n", std);
  50.  
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
【整列結果】
Suzuki     19歳  165.8cm
Kobayashi  20歳  169.0cm
Tanaka     20歳  170.2cm
Sato       21歳  175.3cm
Yamada     22歳  180.4cm

上位3名の平均身長:175.3cm
上位3名の標準偏差:4.2cm