2017-09-21 88 views
0

我正在寫一個C程序,應該在調用函數averagerOfFiveFloats之後返回浮點值3.2058。問題是代碼編譯和IDE打開可執行文件時,返回的值是1067450368.爲什麼會發生這種情況?我確保變量類型是正確的,並且這兩個函數都有一個浮點返回類型。數字平均器程序返回不正確的浮點值

該程序在主函數中獲取五個浮點值,然後在main函數中調用函數averagerOfFiveFloats函數。函數averagerOfFiveFloats獲取五個浮點值,將它們相加,將總數除以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必須返回一個int而不是浮動。編譯時您可能會收到警告。警告通常是C語言中的錯誤,因此您應該努力使用無警告代碼。

因此,你看到的是你的float默默地轉換爲int。如果你做printf("%f", averageOfFive(a, b, c, d, e))你會看到你期望的輸出。

1

這裏是正確的代碼!你不能在主返回浮點:)

我也改變了語法,它更容易閱讀/理解:)

#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); 
}