2017-02-23 11 views
0

このコードはほぼ完全に機能していますが、if else文を無視しているようです。このプログラムの目的は-100〜100の間の温度だけを変換することですが、何らかの理由で私のコードがまだ入力されている数値を変換しています。私はいくつかの異なるアプローチを試してみましたので、それはイライラさせられるが、プログラムは、else文に行かないといつも私は10000ですが、何かアドバイスがif else文で何が問題になりますか?

現在
double converter() 
{ 
    float C, F, S; 
    int input; 
    printf ("Please enter a temperature in Fahrenheit:"); 

    scanf ("%f", &F); 

    if (F > -100 || F < 100) { 

     C = FCR * (F -32); 

     printf ("%f F ==> %f C ", F, C); 
     printf ("%f", F); 
    } 
    else { 
    F = pow(C, 3); 
    printf ("Invalid Fahrenheit temperature."); 
} 
} 
+1

'C'はあなたの' else'クラウスでは初期化されていません。 'F = C^3'の設定は何ですか? – chepner

+0

'F> -100 || Fが150の場合、F <100'は真です。 '150> -100' – immibis

答えて

6

あなたif条件をいただければ幸いありがとう入ったと言っても、if文走るん任意の熱交換温度を受け入れる。-100または100より小さい。これは、毎にの温度がifというステートメントに入ることを意味します。代わりにANDを使用することをお勧めします。

if (F > -100 && F < 100) { 
    // logic here 
} 
+0

ありがとうございました。 – n00bprogrammer22

2

変更|| & &になり、動作するはずです。 ||の片側が真である場合、ifを入力します。 そして1000は実際に-100より大きいです

もう1つのメモ。 Cは初期化されていません。 ifの式がtrueと評価された場合にのみ値を代入します。しかし、elseでは、初期化されていないときにCを使用します。そして、常に戻り値scanfを確認してください。

関連する問題