三つの整数値を読み込んで、その最小値を求めて表示するプログラムを作成せよ。
(※if文ではなく、条件演算子を用いよ)
if文を用いてのプログラミングは出来ました。
しかし、条件演算子のプログラミングが行き詰りました…。
条件演算子の組み合わせ方が良く分かりません
以下、自分の解答です。(おそらく誤りです)
#include <stdio.h>
int main(void)
{
int n1,n2,n3,min;
printf("三つの整数を入力してください。\n");
printf("整数1:"); scanf("%d",&n1);
printf("整数2:"); scanf("%d",&n2);
printf("整数3:"); scanf("%d",&n3);
min = (n1>n2>n3) ? n2 : n3; /*ここが分かりません*/
printf("最小値は%dです。\n",min);
return 0;
}
(n1>n2>n3) ? としてしまうと、大小関係の分別が複雑になるので、この書き方は間違っていると思います。(例として、(6>1>4)や(1>6>4)など。)
(n1>n2 || n2>n3) ?
などと書くのでしょうか?分かりません。
回答お願いいたします。
No.3ベストアンサー
- 回答日時:
初心者がよくやる間違いなので覚えておきましょう。
> (n1>n2>n3) ? としてしまうと、大小関係の分別が複雑になるので、この書き方は間違っていると思います。(例として、(6>1>4)や(1>6>4)など。)
複雑云々以前に、あなたの期待通りのものになっていません。
C言語では、 a > b は
aがbより小さければ 1
そうでなければ 0
という値を返します。
他の ==, != , < 等も同様に
2つの値の関係が、記号通りなら 1
そうでないなら 0
という値を返す演算子です。
if(a > b) { ~
は、 「 a > b ならば ~を実行」等と習いますが、より詳しくはif文の機能は
if(X) { ~
で 「 Xが真ならば~を実行 」であり、C言語での「真」とは「0でないこと」です。
if(a > b) { ~
は、 「 『a > b』の計算結果が0でない ならば ~を実行」がより正確な意味になります。
では n1 > n2 > n3 はどうなるか。
これは(n1 > n2) > n3 と同じになります。つまり
n1 が n2 より大きかったら 「1 > n3」
そうでないなら 「0 > n3」
のいう計算になります。
C言語で記述する場合は、意味を考えて「n1 > n2 かつ n2 > n3」とします
(n1 > n2 ) && ( n2 > n3)
最小値の調べ方は、既にあるので省略します
No.2
- 回答日時:
1. n1 と n2 の小さいほうをminに代入する。
できますか?これができたら:
2. min と n3 の小さいほうをminに代入する。
これでminが最小値となります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語 プログラミング 等比数列...
-
平均、最大値、最小値を表示す...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VBAでダブルコーテーション入り...
-
配列の値を置換するにはどうす...
-
エラーの意味は? Lvalue req...
-
数値計算??
-
C言語で全角文字を扱いたいので...
-
COLUMN(1:1)の意味を教え...
-
Excel-vba 文字列と変数を...
-
インクリメント演算子の前置(+...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
VBAで配列のNULL判定
-
正規表現で、英数記号を含むパ...
-
切り上げ
-
long型のランダムな値を返す方法
-
i++と++i ってどう違うのですか?
-
フリーランタイマーの時間差分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについての質問...
-
平均、最大値、最小値を表示す...
-
エクセルのマクロでの積分
-
c言語でランタイムエラーの処理...
-
c言語で素数を判別するプログラ...
-
C言語 累乗の計算
-
c言語 プログラミング 等比数列...
-
任意の数から人の数までの素数...
-
Cプログラムについて
-
素数を判定するプログラム
-
C言語初心者です。次の問題で質...
-
if文を条件演算子に書き換えに...
-
C言語の問題 1 つの文字をキー...
-
エラー処理
-
プレゼント交換プログラム
-
PICの条件分岐について
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
おすすめ情報