中间模式avg计算浮点数组

时间:2015-03-24 04:18:46

标签: c++ c

我写了一个代码来计算浮点数组的中间,模式和平均值,但是当我输入我遇到的第一个数字" ...已经停止工作" dev c.in vs 2012中的错误也没有用。为什么?

#include<stdio.h>
float avg(float [],int);
void mode(float [], int);
float middle(float [], int);
int main(){
    int i,t=5;
    float a[t];
    for (i=0;i<t;++i)
        scanf("%f", a[i]);
    printf("avg= %f\n", avg(a, t));
    printf("middle= %f\n", middle(a, t));
    //printf("mode= \n", mode(a[]));
    mode(a, t);
    return 0;
}
float avg(float a[], int t){
    float s;
    int i;
    for(i=0;i<t;++i)
        s+=a[i];
    return s/t;
}
 float middle(float a[], int t){
    int i,u;
    float h;
    for(i=0;i<t-1;++i)
        for(u=1;u<t;++u)
            if(a[i]>a[u]){
                h=a[i];
                a[i]=a[u];
                a[u]=h;
            }
    if(t%2==0)
        return (a[t/2]+a[t/2+1])/2;
    else
        return (a[(t+1)/2]);
}
void mode(float a[], int t){
    float b[t],h;
    int i,u;
    for(i=0;i<t;++i)
        b[i]=0;
    for(i=0;i<t;++i)
        for(u=0;u<t;++u)
            if (a[i]==a[u])
                b[i]++;
    for(i=0;i<t-1;++i)
        for(u=1;u<t;++u)
            if(a[i]<a[u]){
                h=a[i];
                a[i]=a[u];
                a[u]=h;
            }
    printf("%f\n", a[0]);
    for(i=1;i<t;++i)
        if(a[0]==a[i])
            printf("%f\n", a[i]);
}

1 个答案:

答案 0 :(得分:2)

scanf("%f", a[i]);

应该是

scanf("%f", &a[i]);

扫描到您要存储值的位置,此处为&a[i]

 float s;

s在函数avg()中未初始化,使用未初始化的变量会导致未定义的行为。

相关问题