最初は平均値も整数で求めるプログラム. 説明はコメントを見てもらえばわかるが, 注意する点としては
#include <stdio.h> #define MAXLINE 256 int main(void); int main(void) { int ndata; /* データの件数をかぞえるため */ int sum; /* 合計を保持 */ int av; /* 平均値を格納する - ここでは整数で */ char buffer[MAXLINE]; /* 入力読み込み用 */ int data; /* 一件の入力データ */ ndata = 0; /* データ件数をリセット */ sum = 0; /* 合計もリセット */ gets(buffer); /* 先頭のデータを読んでおく */ data = atoi(buffer); while(data != -1){ /* -1 にならない限り繰り返す */ sum = sum + data; /* 合計に足しこむ */ ndata++; /* データ件数を更新 */ gets(buffer); /* 次のデータを読む */ data = atoi(buffer); } av = sum / ndata; /* 平均の計算 */ printf("Sum=%d\n", sum); /* 出力 */ printf("Average=%d\n", av); }
float av; float sum;とする.
av = sum / ndata;ただし, 右辺の割算をよく見ると, 被除数 sum は浮動小数点型で, 除数 ndata は整数である. このように「型が混ざった」演算では, より「一般的な」型に自動的に変換され てから計算されることになっている (教科書では, もっと先の方(P.217あたり)で出てくる). この例では, 除数が浮動小数点型に変換されて, 小数同士の割算が行なわれる.
printf("Sum=%f\n", sum); printf("Average=%f\n", av);とする.