総ありがとう数 累計4,263万(2014年10月1日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
rankle

#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;
}

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

Aみんなの回答(全4件)

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

  • 2004-05-31 20:50:27
  • 回答No.3
#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は実行しないとか) を追加すればよりベターだと思います。
  • 同意数0(0-0)
  • ありがとう数0

その他の回答 (全3件)

  • 2004-05-31 20:45:44
  • 回答No.1
何回ループしたかを数えるカウンタの変数を追加し、
sumをループ回数で割る。
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-05-31 20:47:38
  • 回答No.2
合計を計算する時にその次で人数を加算しておきます。
最後に合計を人数で割り平均を出します。
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2004-05-31 20:59:44
  • 回答No.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);

ですかね.
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数4
  • 気になる数0
  • ありがとう数1
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

その他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集

正しい方法で健康的な綺麗を手に入れよう!

お城、ボート、ツリーハウス、ユニークな物件満載!

親同士が気軽に情報交換できるコミュニティです。

-PR-

ピックアップ

-PR-
ページ先頭へ