- ベストアンサー
C言語のプログラムで三つの整数値の最小値を求める方法
- C言語のプログラムで、条件演算子を使って三つの整数値の最小値を求める方法を紹介します。
- プログラムの中では、整数値を入力するためにscanf関数を使用し、条件演算子を使って最小値を求めています。
- もっと簡単な方法としては、配列を使って入力された値を比較し、最小値を求める方法があります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#include <stdio.h> int main( void ) { int na, nb, nc; printf( "整数1 : " ); scanf( "%d", &na ); printf( "整数2 : " ); scanf( "%d", &nb ); printf( "整数3 : " ); scanf( "%d", &nc ); printf( "最小値は%dです。\n", ( na < nb ? ( na < nc ? na : nc ) : ( nb < nc ? nb : nc ) ) ); return 0; }
その他の回答 (4)
- jacta
- ベストアンサー率26% (845/3158)
条件演算子はCとC++では微妙に仕様が異なります。 今回のコードも、C++ではコンパイルできますが、Cではコンパイルできません。 CとC++を混同しないように注意しましょう。 さて、「もっと簡単に」とのことですが、何をもって簡単かによります。 わかりやすさをいうのであれば、条件演算子を使うこと自体がそもそも間違っています。
お礼
回答ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
せめて、コンパイルくらいは自分でやりましょうよ。 コンパイルでエラーになります。 「簡単に」も何も、そもそも間違っています。 演算子には優先順位があります。 (na<nb)?min=na:min=nb; は ( (na<nb)?min=na:min )=nb; と解釈されます。 = nb の左辺「( (na<nb)?min=na:min )」は、代入できる値では無いので、 nbを代入することができません。よってエラーです。 ()で優先順位を変えてください。 もっとも、F ?(X=a) : (X=b) などと、?:の中で代入することは普通しません。 代入等を行うなら、if文で書いた方がはるかにわかりやすい表現だからです。 X= F?a:b ; のように、「条件によって値を選ぶ」ことだけを行います。必要なら、その値を変数に代入するなりします。
お礼
回答ありがとうございます。
- nag0720
- ベストアンサー率58% (1093/1860)
>(na<nb)?min=na:min=nb; >printf("最小値は%dです。\n",(nc<min)?min=nc:min); これでも間違いではないですが、普通は、 min=na<nb?na:nb; printf("最小値は%dです。\n",nc<min?nc:min); と書きます。 min変数を使わないで1行で書くとしたら、 printf("最小値は%dです。\n",na<nb?na<nc?na:nc:nb<nc?nb:nc);
お礼
回答ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
これってコンパイルできるんだっけ?
お礼
回答ありがとうございます。