質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.42%

  • C

    4105questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Emacs

    140questions

    GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

解決策が分かりません・・・

受付中

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,022

bjbjeknr

score 18

5人の点数をキーボードから読み込んで、合計点、平均点、最高点、最低点を表示したいのですが(点数は0以上100以下)、
実行例
5人の点数を入力してください。
1番:95
2番:83
3番:85
4番:63
5番:89
合計点:415
平均点:83.00000
最高点:95
最低点:63
1番:95 2番:83
3番:85 4番:63
5番:89

としたいのですが私のコード(C言語です。)

#include <stdio.h>
#define NUM 5
int main(void)
{

  int test[NUM];
  int max;
  int min;
  int ave;
  int sum;
  int i,j;

  max=0;
  sum=0;

  printf("5人の点数を入力してください。\n");
  for(i=0;i<NUM;i++){
    scanf("%d番%d",&test[NUM]);

    if(max < test[i]){
    max=test[i];
    }
    if(min > test[i]){
    min=test[i];
    }
    sum += test[i];
    ave = (test[i])/NUM;
  }

  printf("合計点:%d\n",sum);
  printf("平均点:%d\n",ave);
  printf("最高点:%d\n",max);
  printf("最低点:%d\n",min);

  for(j=0;j<NUM;j++){
    printf("%d番:%d\n",j+1,test[j]);
  }
  return 0;
}


これで実行すると、、
5人の点数を入力してください。
95
83
85
63
89
合計点:-903806273
平均点:0
最高点:4196064
最低点:-908002400
1番:-908002400
2番:63
3番:4196064
4番:0
5番:0

となってしまいます。

どこがおかしいのか どう直せばいいのか、教えてください。お願いします・・・

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

0

scanfのところ、test[NUM]ではなくtrst[i]では。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/06 11:15

    そうですね。ありがとうございます。

    キャンセル

0

yubaさんの回答に加えて、minが初期化されていません。ゴミ値と比較してしまい、これが負値の場合、更新されないままになってしまいます。
それと、平均値を格納するaveですが、intだと小数点以下が切り捨てられるので、floatdoubleを使いましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/06 11:15

    そうでした、有難うございました。

    キャンセル

0

このように書くのはどうでしょうか?

#include <stdio.h>
#define NUM 5
int main(void)
{

  int test[NUM];
  int max=0;
  int min=0;
  int sum=0;
  int i,j,c;

  max=0;
  sum=0;

  printf("5人の点数を入力してください。\n");
  for(i=0;i<NUM;i++){
    scanf("%d",&test[i]);

    if(max < test[i]){
    max=test[i];
    }
    if(min > test[i]){
    min=test[i];
    }
    sum += test[i];
  }

  printf("合計点:%d\n",sum);
  printf("平均点:%d\n",sum/NUM);
  printf("最高点:%d\n",max);
  printf("最低点:%d\n",min);

  for(j=0;j<NUM;j++){
    printf("%d番:%d\n",j+1,test[j]);
  }
  return 0;
}

こんな書き方も有ります。

#include <stdio.h>
#define NUM 5
int main(void)
{

  int test[NUM];
  int *p;
  int max=0;
  int min=0;
  int sum=0;
  int i,j,c;

  max=0;
  sum=0;

  printf("5人の点数を入力してください。\n");
  for(i=0;i<NUM;i++){

    p = (i==0) ? test : ++p;
    scanf("%d",p);

    if(max < *p){
    max=*p;
    }
    if(min > *p){
    min=*p;
    }
    sum += *p;
  }

  printf("合計点:%d\n",sum);
  printf("平均点:%d\n",sum/NUM);
  printf("最高点:%d\n",max);
  printf("最低点:%d\n",min);

  for(j=0;j<NUM;j++){
    printf("%d番:%d\n",j+1,test[j]);
  }
  return 0;
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/06 11:14

    おかげさまで解決しました。本当に助かりました。
    有難うございました。

    キャンセル

  • 2017/02/19 19:46

    解決した場合は、ベストアンサーを選んで(できれば解決に至った経緯を書いて)もらうと有り難いです。そうしないといつまでも未解決のままになってしまいますd^^

    キャンセル

0

既出かもしれませんが、誤っているところを直しました。

#define NUM   5
#define MIN   0
#define MAX 100

void main(void)
{
  int test[NUM];
  int max = MIN;
  int min = MAX;
  int sum =   0;
  int i;

  printf("%d人の点数を入力してください。\n", NUM);
  for(i = 0; i < NUM; i++){
    printf("%d番目の点数:", i + 1);
    scanf("%d",&test[i]);

    if(max < test[i]){
      max = test[i];
    }

    if(min > test[i]){
    min = test[i];
    }

    sum += test[i];
  }

  printf("合計点:%d\n",sum);
  printf("平均点:%d\n",sum / NUM);
  printf("最高点:%d\n",max);
  printf("最低点:%d\n",min);

  for(i = 0; i < NUM; i++){
    printf("%d番:%d\n", i + 1, test[i]);
  }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.42%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C

    4105questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Emacs

    140questions

    GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。