>> C言語入門トップに戻る
こちらも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言語課題:入力した文字列を並べ替え】に進む
>> C言語入門トップに戻る