weixin_44214234
词文
采纳率0%
2019-03-02 11:45 浏览 945

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

#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;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

  • qq_36528114 清枫若待佳人醉 2019-03-02 13:16

    问题如下:
    对于程序的输入,你在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;
    
    
    }
    
    
    点赞 1 评论 复制链接分享
  • qq_28249373 shifenglv 2019-03-02 12:37

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

    点赞 评论 复制链接分享
  • sdagl sdagl 2019-03-02 13:02

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

    点赞 评论 复制链接分享

相关推荐