我已经编写了一个代码来计算 float 组的中间值、众数和平均值,但是就在我输入第一个数字时,我在 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]);
}
最佳答案
scanf("%f", a[i]);
应该是
scanf("%f", &a[i]);
扫描到您要存储值的位置,这里是&a[i]
float s;
s
在函数 avg() 中未初始化,使用未初始化的变量会导致未定义的行为。
关于c++ - float 组的中间模式平均计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224961/