回 帖 发 新 帖 刷新版面

主题:声明变量时赋初值,得出正确结果;不赋初值得出错误结果

[code=c]
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 *求方差,公式为[(x1-y)^2+(x2-y)+……]/n,其中xi为所求方差的数字,y为平均值,n为+
 *所求方差的数字的个数                                                        +
 *要求是输入整形数,返回整形数                                                +
 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */
#include <stdio.h>
#include <math.h>

//int function(int *calculate[],int arrayLen);

int main(void)
{
    int calculate[3]={1,2,3};//输入的数字储存在数组calculate中
    int arrayLen=3;//输入数字的个数
    
    printf("%d\n",function(calculate,3));
}

int function(int calculate[],int arrayLen)
{
    int i;
    float sum=0,average=0,square=0,square_average=0;
    //当sum,average,square,square_average不赋初值得时候,得出的结果是错误的,
    //为什么会这样?这一点疑惑不解。
    
    for(i=0;i<arrayLen;i++)
        sum+=calculate[i];
    average=sum/arrayLen;
    for(i=0;i<arrayLen;i++)
        square_average+=(calculate[i]-average)*(calculate[i]-average);
    
    return (int)square_average/arrayLen;
}
[/code]
第23行,当sum,average,square,square_average不赋初值得时候,得出的结果是-71502,当给他们赋初值之后就会给出正确的结果0,为什么会这样?这一点疑惑不解。

回复列表 (共1个回复)

沙发

这个问题...

以sum为例,它的初始值不应该为0吗?如果不给它初值,它的初值就是一个未知的数,当然相加之后就得到不正确的结果了

我来回复

您尚未登录,请登录后再回复。点此登录或注册