2017-09-21 81 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); 
}