2016-11-24 14 views
0

このプログラムは、入力として3つの整数を取り、最小値を返すことを意図しています。これは私の最初の試みでした:Cは負の数を入力として認識しません

int first, second, third; 
printf("Please enter three numbers:\n"); 
scanf("%d %d %d", &first, &second, &third); 
int min; 
if (first<second && first<third) { 
    min = first; 
} else if (second<first && second<third) { 
    min = second; 
} else { 
    min = third; 
printf("The minimum value is: %d\n", min); 
} 

それは負の数を除いてすべてのために働いた。入力が負の場合、何も返されません。それから私はこれにコードを変更:

if (first<second) { 
    if (first<third) 
     min = first; 
    else 
     min = third; 
} else if (second<first) { 
    if (second<third) 
     min = second; 
    else 
     min = third; 
    min = second; 
} 
printf("The minimum value is: %d\n", min); 

このバージョンでは完全に働いたが、最初のものはネガのために動作しない理由を私は理解していません。違いは何ですか?あなたが他の{printf関数}でのprintfを持っていた

+2

あなたは何が起こっているかについて詳しく説明することはできますか? 「何も返さないだろうか?それがクラッシュしたか、入力に応答しなかったのでしょうか? – templatetypedef

+2

v1では 'printf'は' min = 3'ブランチにのみあります。コードを間違って切り取って貼り付けるか、それ以外の場合はコードだけがそのケースに印刷されます(そして、v2は何も印刷しません...) – John3136

+0

最後の 'min = second;'は完全です違う。完全には機能しません。 –

答えて

1

それが外にする必要があります:

int first, second, third; 
printf("Please enter three numbers:\n"); 
scanf("%d %d %d", &first, &second, &third); 
int min; 
if (first<second && first<third) { 
    min = first; 
} else if (second<first && second<third) { 
    min = second; 
} else { 
    min = third; 
} 
printf("The minimum value is: %d\n", min); 
} 
関連する問題