みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

c言語で平均をだす

#include<stdio.h>

int main(void)
{
int num;
int sum;

printf("テストの点数を入力してください。\n");
do{
scanf("%d",&num);
sum+=num;
}while(num);

printf("テストの合計点は%dです\n",sum);

return 0;
}

テストの平均点をだすプログラムを作りたいのですが、合計を出すまではわかったのですが、ここから、平均を出すようにするにはどうすればよいですか。

投稿日時 - 2004-05-31 20:42:11

QNo.876796

すぐに回答ほしいです

質問者が選んだベストアンサー

#include<stdio.h>

int main(void)
{
int num;
int sum;
int count;
sum=0;
count=0;

printf("テストの点数を入力してください。\n");
do{
scanf("%d",&num);
sum+=num;
count+=1;
}while(num>=0);

count-=1;
printf("テストの合計点は%dです\n",sum);
printf("テストの平均点は%dです\n",sum/count);

return 0;
}

テストだと0点の場合もあると思うので、マイナスの数値を入れると終わりに変えてあります。あと、sumは初期値が0とは限らないので、いちおう初期化をしています。(普通は大丈夫ですけど)
あとは1個も点数を入れなかった場合の処理 (countが0なら平均値のprintfは実行しないとか) を追加すればよりベターだと思います。

投稿日時 - 2004-05-31 20:50:27

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

#3 のプログラムでほとんどあっているんですが,
細かいことをいうと do~while を抜けたあとで
sum -= num;
が必要ですね.

もしくは

sum = 0;
count = 0;
while (scanf("%d", &num) > 0 && num >= 0) {
sum += num;
count++;
}
printf("%lf\n", (double)sum / count);

ですかね.

投稿日時 - 2004-05-31 20:59:44

ANo.2

合計を計算する時にその次で人数を加算しておきます。
最後に合計を人数で割り平均を出します。

投稿日時 - 2004-05-31 20:47:38

ANo.1

何回ループしたかを数えるカウンタの変数を追加し、
sumをループ回数で割る。

投稿日時 - 2004-05-31 20:45:44