怎样定义两个函数,并在主函数中输出结果,下面代码有什么错误

#include
int main()
{
float max_();
float min_();
int i;
float a[5];
for(i=0;i<5;i++)
scanf("%f",&a[i]);
max_();
min_();
printf("max=%.1f,min=%.1f\n",max_(),min_());
return 0;
}
float max_()
{
int i;
float a[5],max;
max=a[0];
for(i=1;i<=5;i++)
{
if(max<a[i])
max=a[i];
}
return max;

}
float min_()
{
int i;
float a[5],min;
min=a[0];
for(i=1;i<=5;i++)
{
if(min>a[i])
min=a[i];
}
return min;

}

函数和变量被使用前首先要被声明!因此,要在主函数前面先声明函数

函数和变量被使用前首先要被声明!因此,要在主函数前面先声明函数.

问题如下:
对于程序的输入,你在main函数中定义了floata[5]来存放,所以它的作用范围在main内,而你在max()和min()中的又分别重新定义了float a[5],注意这里的a[5]并不是main函数中的a[5]了。

解决如下:
1. 将float a[5]定义为全局的,这样main和max还有min中使用的是同一份
2. 将main函数中的a[5]通过参数形式传递给max和min函数

如有问题可以回复我,如有说的不当之处也请指出。

#include <stdio.h>

float a[5];  //全局的数组,这样max和min函数才能正确执行 
int main()
{
    float max_();
    float min_();
    int i;
    for(i=0;i<5;i++)
        scanf("%f",&a[i]);
    max_();
    min_();
    printf("max=%.1f,min=%.1f\n",max_(),min_());
    return 0;

}
float max_()
{
    int i;
    float max;
    max=a[0];
    for(i=1;i<=5;i++)
    {
        if(max<a[i])
            max=a[i];

    }
    return max;


}

float min_()
{
    int i;
    float min;
    min=a[0];
    for(i=1;i<=5;i++)
    {
        if(min>a[i])
            min=a[i];

    }
    return min;


}