2017-03-18 9 views
-5

私はtrynaに給料計算機を作成し、給与を入力するようにして、すべて(それらの純賃金、手当、給与など)を表示する必要があります。私は彼らが入れた数が特定の範囲内にある場合、コードの残りの部分は特定の数を使用するようにしていますが、私はelse if文だけが正しく動作するという問題があります。 if文も実行されますが、else if文も表示されます。みんな助けてくれますか?ここでifステートメントで変数値を変更するには

は、コードの一部です:

///Allowance 
int catagory() 
{ 
    if ((income <= 150000) && (income >= 80000)) 
    { 
     allowance = 8000; 
     printf("\nYour Allowance is: %d", allowance); 
    } 
    else if((income <= 79999) && (income >= 55000)); 
    { 
     allowance = 6500; 
     printf("\nYour Allowance is: %d", allowance); 
    } 
} 
+9

数学的な正気のための一般的なヒント:すべての範囲チェックをif(A <= x && x <= B)の「増加」形式で書き直してください。それは無限に理解しやすくなります。 –

+0

'if'文を取得したときの' income'の値は? – JHH

+0

関数は値を返さないので、このコードはコンパイルしないでください – UnholySheep

答えて

5
else if((income <= 79999) && (income >= 55000)); 
               ^^^ 

そのセミコロンを取り出します。 これは正しく動作するはずです。

+0

0.0それは素晴らしい今働きました。 – NanDemoni

+3

ロングライブ[1TBS](https://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS_.28OTBS.29):-) – pmg

0

まず、あなたは他の-かのヘッダの最後に終端文字があります。

else if((income <= 79999) && (income >= 55000)); 

をセミコロンはメイキン体非条件実行部、ヘッダはその身体をFOM他に、場合分割あなたの機能のこの問題を解決するには、単にセミコロンを削除します。

else if((income <= 79999) && (income >= 55000)) // no semicolon needed 

または、あなたの関数は、関数catagory()のTE定義に基づいて、int値を返すことになっています。関数の最後にreturnステートメントを追加するか、関数の戻り値の型をvoidに変更する必要があります。

関連する問題