fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. typedef struct Seiseki{
  7. int eigo;
  8. int kokugo;
  9. int sugaku;
  10. float average;/*平均値*/
  11. } SEISEKI;
  12.  
  13. int datanum,i;
  14. SEISEKI *h_start; /* datanum 個の SEISEKI 構造体の先頭を指すポインタ*/
  15. SEISEKI *hp;
  16.  
  17. printf("人数を入力してください。\n");
  18. scanf("%d",&datanum);
  19.  
  20. h_start = (SEISEKI*)malloc(sizeof(SEISEKI)*datanum);
  21.  
  22. /* 英語と国語と数学の点数を DATANUM 個読み込み、3科目の平均値を計算する */
  23. /* (ポインタとしてアクセス) */
  24. for (i=0,hp=h_start;i<datanum;i++,hp++){
  25. scanf("%d",&(hp->eigo));
  26. scanf("%d",&(hp->kokugo));
  27. scanf("%d",&(hp->sugaku));
  28. hp->average = ((hp->eigo) +(hp->kokugo) + (hp->sugaku))/3;
  29. }
  30.  
  31. /* 3科目の平均値を表示する */
  32. /* (配列としてアクセス) */
  33. for (i=0;i<datanum;i++){
  34. printf("%d 番目の人の 3 科目の平均値は%3.1f です。\n",i+1,h_start[i].average);
  35. }
  36.  
  37. /*英語と国語と数学の平均値をそれぞれ表示する*/
  38. float eigosum=0;
  39. float kokugosum=0;
  40. float sugakusum=0;
  41.  
  42. for (i=0;i<datanum;i++){
  43. eigosum+=h_start[i].eigo;
  44. kokugosum+=h_start[i].kokugo;
  45. sugakusum+=h_start[i].sugaku;
  46. }
  47.  
  48. printf("英語の平均点は %3.1f 点です。\n", eigosum / datanum);
  49. printf("国語の平均点は %3.1f 点です。\n", kokugosum / datanum);
  50.  
  51.  
  52.  
  53. printf("数学の平均点は %3.1f 点です。\n", sugakusum / datanum);
  54. }
  55.  
Success #stdin #stdout 0s 5268KB
stdin
5
80 70 60
90 90 90
70 50 60
40 50 30
20 50 90
stdout
人数を入力してください。
1 番目の人の 3 科目の平均値は70.0 です。
2 番目の人の 3 科目の平均値は90.0 です。
3 番目の人の 3 科目の平均値は60.0 です。
4 番目の人の 3 科目の平均値は40.0 です。
5 番目の人の 3 科目の平均値は53.0 です。
英語の平均点は 60.0 点です。
国語の平均点は 62.0 点です。
数学の平均点は 66.0 点です。