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

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

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

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

Q&A

解決済

1回答

1231閲覧

c言語においての初期化とプログラム終了 について

kai20000803

総合スコア29

C

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

0グッド

0クリップ

投稿2021/05/01 15:41

やりたいこと
下記のコードを書いています。
やりたいことについては
入力された中の0~100の数字の中で最大値と最小値を表示させるというものです。
もし-1が入力されるとプログラムを終了されています。
質問
質問1
hypo_maxとhypo_minを初期化するとプログラムが機能しなくなるため初期化したくないので初期化していないのですが、黄色の警告が表示されてしまいます。これを解決するためにはどうしたらよろしいでしょうか?

質問2
-1を入力したときにプログラムを終了させているのですが、デバックエリアで-1を入力して次の数字を入力しないとプログラムが終了しません。何が原因で-1を入力した瞬間にプログラムが終了しないのでしょうか?また、解決方法を教えていただければ嬉しいです!

#include <stdio.h> int max_create(int data[], int *max_ans); int min_create(int data[], int *min_ans); int main(void) { int array[10], max, min, i; printf("0~100の10個の数値を入力してください。もし0~100以外の数値が入力された場合、それらの数値は表示できません。\nもし-1を入力するとプログラムが終了いたします。\n"); for (i = 0; i < 10; i++) { scanf("%d\n", &array[i]); if (array[i] == -1) { printf("プログラムを終了\n"); return 0; } } max_create(array, &max); min_create(array, &min); printf("max:%d\n", max); printf("min:%d\n", min); return 0; } int max_create(int data[], int *max_ans) { int i, hypo_max; for (i = 0; i < 10; i++) { if (data[i] > hypo_max) { if (data[i] <= 100) { hypo_max = data[i]; } } } *max_ans = hypo_max; return 0; } int min_create(int data[], int *min_ans) { int i, hypo_min; for (i = 0; i < 10; i++) { if (data[i] < hypo_min) { if (data[i] >= 0) { hypo_min = data[i]; } } } *min_ans = hypo_min; return 0; }

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

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

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

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

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

cateye

2021/05/01 16:08 編集

“hypo_maxとhypo_minを初期化するとプログラムが機能しなくなる”とは? 通常minをintの最大値、maxを0とすると思いますが?
kai20000803

2021/05/01 16:29

なるほど!!確かにそうですね!
guest

回答1

0

ベストアンサー

質問1:
機能しなくなるというのはバグなので、初期値はちゃんと機能する正しい値を指定しましょう。

質問2:
scanf("%d\n", &array[i]);だからですね。
scanf("%d", &array[i]);にしましょう。

scanfを使う時は返り値を必ずチェックしましょう。

投稿2021/05/01 16:11

otn

総合スコア85901

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

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

otn

2021/05/01 16:21

あと、入力された数字が、全て0-100の範囲外だったら、どういう値を返すか決めないといけませんね。
kai20000803

2021/05/01 16:28

確かにそうですね!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問