>> C言語よくある課題トップに戻る
	
こちらもC言語の課題でよくある、
入力した値から平均、合計、最大、最小値を求めるプログラムです。
解答例は以下のとおりです。
>> C言語よくある課題トップに戻る
	
	C言語課題:入力した値から合計、平均、最小、最大値を求める
入力した値から平均、合計、最大、最小値を求めるプログラムです。
●問題例
4つの値を入力させ、入力した値から平均値、合計値、
最大値、最小値をそれぞれ求め、表示するプログラムを関数を使って書け。
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です。
続行するには何かキーを押してください . . .
15
20
30
合計数は:75です。
平均値は:18です。
最小値は:10です。
最大値は:30です。
続行するには何かキーを押してください . . .
●解説
main関数では入力する値を配列で4つ定義しています。
これをscanfで入力させます。
それぞれ値を求めるプログラムは、
合計値を求めるsum関数はmain関数から渡された配列のポインタから、
forループで4回ループさせ、それぞれの値にアクセスし、足してから値を返してるだけです。
平均を求めるave関数は先ほどと同じようにforループで合計値を求めたあと、
4で割って平均を求めてるだけです。
min関数はまず最初に渡された配列のポインタの0番目の要素を最小値とし、
要素分だけループさせ、もしその値より小さいものがあればそれを最小値としています。
最後にその最小値を返しているだけです。
max関数はmin関数の条件式が逆になっただけです。
main関数では入力する値を配列で4つ定義しています。
これをscanfで入力させます。
それぞれ値を求めるプログラムは、
合計値を求めるsum関数はmain関数から渡された配列のポインタから、
forループで4回ループさせ、それぞれの値にアクセスし、足してから値を返してるだけです。
平均を求めるave関数は先ほどと同じようにforループで合計値を求めたあと、
4で割って平均を求めてるだけです。
min関数はまず最初に渡された配列のポインタの0番目の要素を最小値とし、
要素分だけループさせ、もしその値より小さいものがあればそれを最小値としています。
最後にその最小値を返しているだけです。
max関数はmin関数の条件式が逆になっただけです。
>> C言語よくある課題トップに戻る













