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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Emacs

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

Q&A

4回答

3234閲覧

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

bjbjeknr

総合スコア26

C

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

Emacs

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

0グッド

0クリップ

投稿2016/11/06 01:08

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言語です。)

C

1#include <stdio.h> 2#define NUM 5 3int main(void) 4{ 5 6 int test[NUM]; 7 int max; 8 int min; 9 int ave; 10 int sum; 11 int i,j; 12 13 max=0; 14 sum=0; 15 16 printf("5人の点数を入力してください。\n"); 17 for(i=0;i<NUM;i++){ 18 scanf("%d番%d",&test[NUM]); 19 20 if(max < test[i]){ 21 max=test[i]; 22 } 23 if(min > test[i]){ 24 min=test[i]; 25 } 26 sum += test[i]; 27 ave = (test[i])/NUM; 28 } 29 30 printf("合計点:%d\n",sum); 31 printf("平均点:%d\n",ave); 32 printf("最高点:%d\n",max); 33 printf("最低点:%d\n",min); 34 35 for(j=0;j<NUM;j++){ 36 printf("%d番:%d\n",j+1,test[j]); 37 } 38 return 0; 39}

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

となってしまいます。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

投稿2016/11/06 01:13

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bjbjeknr

2016/11/06 02:15

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

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]); } }

投稿2016/11/07 05:26

Yuki.

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

c

1#include <stdio.h> 2#define NUM 5 3int main(void) 4{ 5 6 int test[NUM]; 7 int max=0; 8 int min=0; 9 int sum=0; 10 int i,j,c; 11 12 max=0; 13 sum=0; 14 15 printf("5人の点数を入力してください。\n"); 16 for(i=0;i<NUM;i++){ 17 scanf("%d",&test[i]); 18 19 if(max < test[i]){ 20 max=test[i]; 21 } 22 if(min > test[i]){ 23 min=test[i]; 24 } 25 sum += test[i]; 26 } 27 28 printf("合計点:%d\n",sum); 29 printf("平均点:%d\n",sum/NUM); 30 printf("最高点:%d\n",max); 31 printf("最低点:%d\n",min); 32 33 for(j=0;j<NUM;j++){ 34 printf("%d番:%d\n",j+1,test[j]); 35 } 36 return 0; 37}

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

#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 01:35

編集2016/11/07 05:48
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bjbjeknr

2016/11/06 02:14

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

2017/02/19 10:46

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

2019/01/27 06:38

for(i=0;i<NUM;i++){  p = (i==0) ? test : ++p; は  for(i=0, p=test; i<NUM; i++, p++){ で良いのではと思います.
guest

0

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

投稿2016/11/06 01:32

archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bjbjeknr

2016/11/06 02:15

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問