>> C言語よくある課題トップに戻る

C言語課題:入力した値から合計、平均、最小、最大値を求める

こちらもC言語の課題でよくある、
入力した値から平均、合計、最大、最小値を求めるプログラムです。
●問題例

4つの値を入力させ、入力した値から平均値、合計値、
最大値、最小値をそれぞれ求め、表示するプログラムを関数を使って書け。

解答例は以下のとおりです。

#include <stdio.h>
#include <string.h>

int sum(int*);
int ave(int*);
int min(int*);
int max(int*);

int main(void)
{
	int num[4];
	int n;
	printf("値を4つ入力してください(1,2,3,4):");
	scanf("%d %d %d %d",&num[0],&num[1],&num[2],&num[3]);
	
	printf("合計数は:%dです。\n",sum(num));
	printf("平均値は:%dです。\n",ave(num));
	printf("最小値は:%dです。\n",min(num));
	printf("最大値は:%dです。\n",max(num));

	return 0;
}


int sum(int *all)
{
	int total=0;

	for(int i=0;i<4;++i){
		total += all[i];
	}	

	return total;
}
int ave(int *all)
{
	int total=0;

	for(int i=0;i<4;++i){
		total += all[i];
	}	
	

	return total/4;
}
int min(int *all)
{
	int min=all[0];
	for(int i=1;i<4;++i){
		if(all[0]>all[i]){
			min=all[i];
		}
	}	

	return min;

}
int max(int *all)
{
	int max=all[0];
	for(int i=1;i<4;++i){
		if(all[0]<all[i]){
			max=all[i];
		}
	}	

	return max;
	
}
値を4つ入力してください(1,2,3,4):10
15
20
30
合計数は:75です。
平均値は:18です。
最小値は:10です。
最大値は:30です。
続行するには何かキーを押してください . . .

●解説

main関数では入力する値を配列で4つ定義しています。
これをscanfで入力させます。
それぞれ値を求めるプログラムは、
合計値を求めるsum関数はmain関数から渡された配列のポインタから、
forループで4回ループさせ、それぞれの値にアクセスし、足してから値を返してるだけです。

平均を求めるave関数は先ほどと同じようにforループで合計値を求めたあと、
4で割って平均を求めてるだけです。

min関数はまず最初に渡された配列のポインタの0番目の要素を最小値とし、
要素分だけループさせ、もしその値より小さいものがあればそれを最小値としています。
最後にその最小値を返しているだけです。

max関数はmin関数の条件式が逆になっただけです。

>> C言語よくある課題トップに戻る