2017-09-21 14 views
0

関数averagerOfFiveFloatsが呼び出された後に浮動小数点値3.2058を返すプログラムがC言語で作成されています。問題は、コードがコンパイルされ、IDEが実行可能ファイルを開くときです。返される値は1067450368です。これはなぜ発生しますか?私は、変数の型が正しいことと、両方の関数が浮動小数点型を返すことを確認しました。数値Averagerプログラムが不正な浮動小数点値を返します

プログラムはmain関数で5つの浮動小数点値をとり、function averagerOfFiveFloats関数がメイン関数内で呼び出されます。関数averagerOfFiveFloatsは、5つの浮動小数点値をとり、それらを合計し、合計を5で除算してから値を返します。 (私はCode :: Blocks IDEを使用しています)。

#include <stdio.h> 

float a, b, c, d, e; 

float averagerOfFiveFloats(float num1, float num2, float num3, float num4, 
float num5); 

float main (void) { 

    a = 1.25; 

    b = 4.45; 

    c = 3.45; 

    d = 1.11; 

    e = 5.769; 

    return averagerOfFiveFloats(a, b, c, d, e); 

} 


float averagerOfFiveFloats(float num1, float num2, float num3, float num4, 
float num5) { 

    float addition = 0; 

    addition = num1 + num2 + num3 + num4 + num5; 

    float divider = 0; 

    divider = addition/5; 

    return divider; 


} 
+1

'main'の戻り値の型は' int'です。 – BLUEPIXY

答えて

1

あなたのコードの問題は、あなたがmainからfloatを返すようにしようとしているということです。

は、ここに私のコードです。

main関数は、intのみを返すことができます。

代わりに、

printf("%f", averagerOfFiveFloats(a, b, c, d, e)); 

として、あなたの結果を印刷することができ、それが正しい結果を生成します。

また、すべての数値がそれ未満であるため、数値の実際の平均値は16.029にはなりません。

1

mainは、floatではなくintを返す必要があります。あなたがコンパイルしている間は、おそらく警告が出ます。警告は一般的にCのエラーですので、警告のないコードを作成するように努めてください。

このように、floatは黙ってintに変換されます。 printf("%f", averageOfFive(a, b, c, d, e))を実行すると、期待どおりの出力が表示されます。

1

ここに正しいコードがあります!あなたは、メインでfloatを返すことはできません:)

私もそれが理解/読みやすいの構文を変更:)

#include <stdio.h> 

float averagerOfFiveFloats(float num1, float num2, float num3, float num4, 
          float num5) { 
    float addition = 0; 
    float divider = 0; 

    addition = num1 + num2 + num3 + num4 + num5; 
    divider = addition/5; 

    return divider; 

} 

int  main (void) { 

    float a = 1.25; 
    float b = 4.45; 
    float c = 3.45; 
    float d = 1.11; 
    float e = 5.769; 

    float divider = averagerOfFiveFloats(a, b, c, d, e); 
    printf("divider = %f\n", divider); 
    return (0); 
} 
関連する問題