アプリ版:「スタンプのみでお礼する」機能のリリースについて

平均、最大値、最小値を表示するプログラミングがわかりません。
自分でも書いてみたのですが、正しい値がでなくて困っています。
入力する値は5つともすべて小数または自然数にしたいです。
#include <stdio.h>
int main(void)
{
int i, a[5];
double sum, ave, max, min;

sum = ave = max = min = 0;

for (i = 0; i < 5; i++) {
scanf("%lf", a[i]);
sum += a[i];
if (a[i] > max) { max = a[i]; }
if (a[i] < min) { min = a[i]; }
}
printf("最大=%f\n", max);
printf("最小=%f\n", min);
printf("合計=%f\n", sum);
ave = sum / 5;
printf("平均=%f\n", ave);

return 0;
}

A 回答 (5件)

>sum = ave = max = min = 0;


minは大きい値をいれておかないと、更新されません。
sum = ave = max = 0;
min = 999999999999999.0;
のようにしてください。
    • good
    • 0

>入力する値は5つともすべて小数または自然数にしたいです。


a[5]をdouble型で確保してください。
    • good
    • 0

minに初期値として0をセットしているので、a[i]の値が負にならない場合


最小値が更新されない。
a[0]の値をmin. maxの初期値としてセットする様に変更。
    • good
    • 0

>入力する値は5つともすべて小数または自然数にしたいです。


>int i, a[5];

int型に小数入りますかね?

>scanf("%lf", a[i]);

第2引数の書き方をもう少し調べましょう。
現在の動作は…
「未初期化の配列変数aに入っている値」を「scanfの入力結果を格納するアドレス」として渡しています。
    • good
    • 0

printf文のフォーマット指定子


%fの部分ですが
doubleのフォーマット指定子は%lfです
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!