/* Part4 演習問題8 */ /* 成績データの平均値と分散+最高点と最低点+人数 */ #include <stdio.h> int main(void) { int d,n ; double s,ss ; /* 合計と平方和 */ double mean,var ; /* 平均値と分散 */ int max,min ; /* 最高点と最低点 */ int nmax,nmin ; /* 最高点と最低点の人数 */ printf("成績を入力してください(100点満点、負の値で終了)。\n") ; n=0 ; s=0 ; ss=0 ; max=-1000 ; min=1000 ; nmax=0 ; nmin=0 ; while(1) { printf("%d> ",(n+1)) ; scanf("%d",&d) ; if(d>100) { printf("満点を超えています。正しい成績を入力し直してください。\n") ; } else if(d<0) break ; else { n++ ; s += d ; ss += d*d ; /* 最高点と人数 */ if(max<d) { max=d ; nmax=1 ; } else if(max==d) nmax++ ; /* 最低点と人数 */ if(min>d) { min=d ; nmin=1 ; } else if(min==d) nmin++ ; } } if(n>0) { mean = s/n ; var = ss/n - mean*mean ; printf("データ件数は%d 平均値は%f 分散は%fです。\n",n,mean,var) ; printf("最高点は%dで%d人 最低点は%dで%d人です。\n",max,nmax,min,nmin) ; } else { printf("データが入力されていません。\n") ; } return(0) ; } |
% gcc -Wall part4-8.c % ./a.out 成績を入力してください(100点満点、負の値で終了)。 1> 78 2> 76 3> 99 4> 80 5> 98 6> 99 7> 56 8> 60 9> 56 10> 66 11> -1 データ件数は10 平均値は76.800000 分散は271.160000です。 最高点は99で2人 最低点は56で2人です。 |