我写了一个代码来计算浮点数组的中间,模式和平均值,但是当我输入我遇到的第一个数字" ...已经停止工作" 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]);
}
答案 0 :(得分:2)
scanf("%f", a[i]);
应该是
scanf("%f", &a[i]);
扫描到您要存储值的位置,此处为&a[i]
float s;
s
在函数avg()中未初始化,使用未初始化的变量会导致未定义的行为。