最小値、最大値、合計値を求める問題です。
c言語はあえて使っています。
どこが間違っているか教えてください...
int main(){ int n,i; int num,MAX,MIN,SUM; scanf("%d",&n); for(i=1;i<n;i++){ scanf("%d",&num); if(MAX<num){ MAX=num; SUM=SUM+num; }else if(MIN>num){ MIN=num; SUM=SUM+num; }else{ SUM=num+SUM; } } printf("%d %d %d %d\n",MIN,MAX,SUM,i); }
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
初期化が必要ですが
なにを初期値とするか を考える必要がありますね
c
1int main(){ 2 int n, int i = 0; 3 int MIN, MAX, SUM = 0, num; 4 scanf("%d", &n); 5 for(i=1;i<n;i++){ 6 scanf("%d", &num); 7 if(i == 1) // 初期化 8 MIN = MAX = num; 9 if(MIN > num) MIN = num; 10 else if(MAX < num) MAX = num; 11 SUM += num; 12 } 13}
投稿2019/03/21 09:35
総合スコア15147
0
初期値はこんな感じで与えます。
他のおかしい点も直しました。
C
1#include <stdio.h> 2#include <limits.h> 3 4int main () { 5 int n, i; 6 int num, MAX = INT_MIN, MIN = INT_MAX, SUM = 0; 7 scanf("%d", &n); 8 for (i = 0; i < n; i++) { 9 scanf("%d", &num); 10 if (num > MAX) { 11 MAX = num; 12 } 13 if(num < MIN) { 14 MIN = num; 15 } 16 SUM += num; 17 } 18 printf("%d %d %d %d\n", MIN, MAX, SUM, i); 19}
投稿2019/03/21 10:00
総合スコア84557
0
こうですね。C言語は初期化が命なので...
C言語
1int main(){ 2 int n = 0,i = 0; 3 int num = 0,MAX = 0,MIN = 0,SUM = 0; 4 scanf("%d",&n); 5 for(i=1;i<n;i++){ 6 scanf("%d",&num); 7 if(MAX<num){ 8 MAX=num; 9 SUM+=num; 10 }else if(MIN>num){ 11 MIN=num; 12 SUM+=num; 13 }else{ 14 SUM+=SUM; 15 } 16 } 17 printf("%d %d %d %d\n",MIN,MAX,SUM,i); 18 }
投稿2019/03/21 09:10
総合スコア3307
0
MAX、MIN、SUMが初期化無しで使われてます
ローカル変数は初期化しないとでたらめな値が入ってるのでこれではダメですね
投稿2019/03/21 09:01
編集2019/03/21 09:03総合スコア87774
0
scanf()を取って初期化した元のソース
c
1#include <stdio.h> 2 3static int number[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 4 5int main() 6{ 7 int num, MAX = 0, MIN = 10, SUM = 0; 8 // scanf("%d", &n); 9 int n = 10; 10 11 for (int i = 1; i < n; i++) { 12 // scanf("%d", &num); 13 num = number[i]; 14 if (MAX < num) { 15 MAX = num; 16 SUM = SUM + num; 17 } else if (MIN > num) { 18 MIN = num; 19 SUM = SUM + num; 20 } else { 21 SUM = num + SUM; 22 } 23 } 24 printf("%d %d %d \n", MIN, MAX, SUM); 25 26} 27結果 28usr ~/Project/test/teratail % ./a.out 2910 9 45
修正版
c
1#include <stdio.h> 2 3static int number[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 4 5int main() 6{ 7 int num, MAX = 0, MIN = 10, SUM = 0; 8 // scanf("%d", &n); 9 int n = 10; 10 11 for (int i = 1; i < n; i++) { 12 // scanf("%d", &num); 13 num = number[i]; 14 if (MAX < num) { 15 MAX = num; 16 } 17 if (MIN > num) { 18 MIN = num; 19 } 20 SUM = SUM + num; 21 } 22 printf("%d %d %d \n", MIN, MAX, SUM); 23 // 24 return 0; 25} 26 27結果 28usr ~/Project/test/teratail % ./a.out 291 9 45 30
理由はわかりますか?
投稿2019/03/21 10:19
総合スコア6851
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/21 10:19
2019/03/21 10:44
2019/03/21 10:44
2019/03/21 10:51
2019/03/21 10:54