平均値の計算

01	/****************************/
02	/* 平均値の計算             */
03	/*      coded by Y.Suganuma */
04	/****************************/
05	#include <stdio.h>
06	
07	int main()
08	{
09	/*
10	         データの数の読み込み
11	*/
12		int n;
13		printf("人数は? ");
14		scanf("%d", &n);
15	/*
16	         データの読み込み
17	*/
18		double sum1 = 0.0, sum2 = 0.0;
19		int i1;
20		for (i1 = 0; i1 < n; i1++) {
21			double x, y;
22			printf("英語と数学の点は? ");
23			scanf("%lf %lf", &x, &y);
24			sum1 += x;
25			sum2 += y;
26		}
27	/*
28	         結果の計算と出力
29	*/
30		if (n <= 0)                    /* 0で割るのを防ぐ */
31			printf("データがない!\n");
32		else {
33			double mean1 = sum1 / n;
34			double mean2 = sum2 / n;
35			printf("   英語=%f 数学=%f\n", mean1, mean2);
36		}
37	
38		return 0;
39	}
		

  参考のため,上のプログラムを while 文を使用して書き直したものを以下に示します.どちらのプログラムも正しく動作しますが,このように繰り返し回数が明確になっているような場合は,for 文を使用した方が理解しやすいのではないかと思います.

01	/****************************/
02	/* 平均値の計算             */
03	/*      coded by Y.Suganuma */
04	/****************************/
05	#include <stdio.h>
06
07	int main()
08	{
09	/*
10	         データの数の読み込み
11	*/
12		int n;
13		printf("人数は? ");
14		scanf("%d", &n);
15	/*
16	         データの読み込み
17	*/
18		double sum1 = 0.0, sum2 = 0.0;
19		int i1 = 0;
20		while (i1 < n) {
21			double x, y;
22			printf("英語と数学の点は? ");
23			scanf("%lf %lf", &x, &y);
24			sum1 += x;
25			sum2 += y;
26			i1++;
27		}
28	/*
29	         結果の計算と出力
30	*/
31		if (n <= 0)
32			printf("データがない!\n");
33		else {
34			double mean1 = sum1 / n;
35			double mean2 = sum2 / n;
36			printf("   英語=%f 数学=%f\n", mean1, mean2);
37		}
38	
39		return 0;
40	}