朝仓太阳 发表于 2014-10-2 13:37:41

全局变量运行函数后又特么清零了,伤不起,帮着看看

#include<stdio.h>
float min,max;
float test(float a[],int n)
{
int i;
float avg,sum=0.0,min=a,max=a;
for(i=0;i<n;i++)
{
    sum=sum+a;
        if(a<min)
        {
          min=a;
        }
        else if(a>max)
        {
          max=a;
        }
}
avg=sum/n;
return(avg);
}
void main()
{
float avg;
float mark={78.0,86.5,86.0,84.0,45.5,91.0,79.5,88,92,80.5};
avg=test(mark,10);
printf("average=%f,max=%f,min=%f\n",avg,max,min);
}

甲鱼上课的一道题求均值最大最小的,·debug以后发现运行完函数有了值之后最后进入main输出结果时候又min和max又变成0了。

朝仓太阳 发表于 2014-10-2 13:38:19

最后min和max结果都是0,均值正常

朝仓太阳 发表于 2014-10-2 14:00:17

本帖最后由 朝仓太阳 于 2014-10-2 14:02 编辑

这是test函数运行完时候,min,max,和 avg的值

朝仓太阳 发表于 2014-10-2 14:05:42

然后...............................min,max,avg都没了..........由于不会看汇编还,请大神们帮忙啊

朝仓太阳 发表于 2014-10-2 14:07:02

最后.............:huffy:

朝仓太阳 发表于 2014-10-2 14:32:27

这个就可以的...............
#include<stdio.h>
float Max,Min;
void main()
{
float average(float a[], int n);
float av,score={52.0,58.5,92,73,54.5,94.5,88,76,90.5,88};
av=average(score,10);
printf("max=%f\nmin=%f\naverage=%f\n",Max,Min,av);
}
float average(float a[],int n)
{
int i;
float aver, sum=0;
Max=Min=a;
for(i=0;i<n;i++)
{
    if(a>Max) Max=a;
        else if(a<Min) Min=a;
        sum=sum+a;
}
aver=sum/n;
return(aver);
}

朝仓太阳 发表于 2014-10-2 22:41:57

@牡丹花下死做鬼 @Answer.zhang

朝仓太阳 发表于 2014-10-3 15:06:40

我操挽尊的都没有

zhoumx 发表于 2014-10-5 16:55:33

float avg,sum=0.0,min=a,max=a;
上面的大哥说了 这个就相当于重新定义了
float aver, sum=0;
Max=Min=a;
这样就好了

大个的糖果 发表于 2014-11-1 06:00:33

694861283 发表于 2014-11-7 09:15:28

max=和min=去掉就好,楼上还真说对了,重复定义了。

怡静 发表于 2014-11-7 10:58:25

zhoumx 发表于 2014-10-5 16:55
float avg,sum=0.0,min=a,max=a;
上面的大哥说了 这个就相当于重新定义了
float aver, sum=0;


谢谢楼主细心回答!
页: [1]
查看完整版本: 全局变量运行函数后又特么清零了,伤不起,帮着看看