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

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

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

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

Q&A

3回答

4418閲覧

c言語のifを使って最大値と最小値を求めようとしています

orenges

総合スコア1

C

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

0グッド

1クリップ

投稿2021/08/25 13:57

3つの数字を入力して最大値と最小値を出そうとしています
ifとelse ifを使ってとことしているのですがうまくいきません

c

1#include <stdio.h> 2 3int main(void) 4{ 5 int a, b, c; 6 7 printf("数値1:"); 8 scanf("%d", &a); 9 printf("数値2:"); 10 scanf("%d", &b); 11 printf("数値3:"); 12 scanf("%d", &c); 13 14 if (a < b < c) 15 printf("最大値は%d\n最小値は\n", c, a); 16 else if (b < a < c) 17 printf("最大値は%d\n最小値は\n", c, b); 18 else if (c < b < b) 19 printf("最大値は%d\n最小値は\n", b, c); 20 else if (a < b < b) 21 printf("最大値は%d\n最小値は\n", b, a); 22 else if (c < b < a) 23 printf("最大値は%d\n最小値は\n", a, c); 24 else if (b < c < a) 25 printf("最大値は%d\n最小値は\n", a, b); 26 27 return 0; 28}

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

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

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

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

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

guest

回答3

0

単純なミスでしょうが、
printf("最大値は%d\n最小値は\n", c, a);
これでは最小値は表示されません。

それはそれとして、
すでに回答があるように、Cの比較の演算子では3つの値を一気に比較することはできませんが、たとえ3つの値の比較ができたとしても例えばa==bであったとしたら現在のif文のどれにも一致しません。
再考が必要かと思います。

もひとつ、細かいことといえば細かいことですが、特にプログラミングの話をしているときは、プログラミング言語での扱いに合わせて「数値」「数字」の意味の違いを厳密に意識してください。
「数字を入力する」と「数値を入力する」は必ずしも同じ意味になりません。

投稿2021/08/25 22:36

thkana

総合スコア7703

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

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

0

if (a < b < c)

この条件式は、((a<b)<c) という意味になりますが、そんでいいんでしょうか。
(a<b) は、真か偽で、1か0か、にしかなりません

投稿2021/08/25 13:59

y_waiwai

総合スコア88024

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

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

orenges

2021/08/25 14:12

3つは同時にできないということでしょうか? どの様に改善すればいいですか?
orenges

2021/08/25 14:14

&& とかを使えばいけますか?
y_waiwai

2021/08/25 14:15

<という演算子は2項演算子です 2つしかできません
y_waiwai

2021/08/25 14:15

どういう条件をそこに組みたいのかを考えてみればいいかと。
orenges

2021/08/25 14:16

分かりました 改善してきます
orenges

2021/08/25 14:29

自分が思いつくものやってみたのですが駄目でした。 もう少しヒントもらえますか?
y_waiwai

2021/08/25 14:35

if (a < b < c) ってのはなにを判断しようとしてるんでしょうか。 まずそれを日本語で説明してみましょう。 3つのうち、どれよりもCが大きい、という判断をしたい。 なら、どうすればそれが判断できるんでしょう。
pigret

2021/08/25 14:47

最終目標は最大値と最低値を入力した3つの値から比べて出力しようとしています。 数字は入力してから判断するので、同時に3つの値を比べて最大値と最小値を出力しようとしてしまいました 当てはまらなければ次のifに....みたいに考えてました。
javahack

2021/08/25 19:08

??? orengesさん = pigretさんですか?
y_waiwai

2021/08/25 21:57

a<b とb<cが双方成立したら、そんでいいってことなら、 (a<b) && (b<c)と書くことができます #同一のものがあるときはどーなるのか考えてみよう
pigret

2021/08/26 01:57

スマホの垢です
fana

2021/08/26 02:29

「複数のユーザーIDを1人で保有する行為」は,利用規約の「第7条(禁止事項)」に書かれている行為ですぞ. (…とか言っても無駄なんだろうけど)
Zuishin

2021/08/26 02:41

> スマホの垢です 何が悪いのかもわかってなさそう。
fana

2021/08/26 02:52 編集

* 禁止されている * このように,いちいち他者が「誰だおまえ?」ってなる * 何らかの悪用を邪推されてまともに相手にされなくなり得る 等々,いろいろあるけども, そもそもサイト利用の観点で考えると,【情報がばらけちゃう分だけ単純に不便】になると思うのだが… (例えばこの質問に回答が付いてもその通知は質問したアカウントにしか行かないわけで)
guest

0

数値が 3つではなく 4つになったらどうするの?
24通りの if文を用意するんですか?

考え方を変えましょう。

・a を最大値と最小値とする。
・b が最大値より大きかったら、最大値を b にする。
・b が最小値より小さかったら、最小値を b にする。
・c が最大値より大きかったら、最大値を c にする。
・c が最小値より小さかったら、最小値を c にする。
・最大値と最小値を表示する。

4つ以上になったら、配列と for文の出番です。

投稿2021/08/26 01:53

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問