c语言编写一个函数,找出一维数组中的最大值和最小值,并计算出数组元素的平均值。

函数原型声明:doublefun(doublea[],intn,int*max,int*min);a其中为数组,n为数组元素个数,max指向最大数,min指向最小数,函数... 函数原型声明:double fun(double a[],int n,int*max,int*min);a其中为数组,n为数组元素个数,max指向最大数,min指向最小数,函数返回值为平均值 展开
 我来答
Yuqi_Tan

2017-12-27 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3463万
展开全部
前面已经有两位高手做出了回答,我运行了一下,《怺逺恒暒》有时候得不到正确的结果;《kaixingui2012》的不能运行,提示类型不对。不知道什么原因,也许是我的版本有问题?
我也做了一个,感觉运行还是不错的。请比较吧!

#include "stdio.h"
double fun(double a[],int n,int *max,int *min);/*函数原型声明:其中a为数组,
n为数组元素个数,max指向最大数,min指向最小数,函数返回值为平均值*/
int main()

{
double b[10],aver;
int x,y=10,max=0,*ma=&max,min=0,*mi=&min;
for(x=0;x<y;x++){b[x]=x*(x-8.25)*0.1;printf("数%d=%f\n",x,b[x]);}
aver=fun(b,y,ma,mi);
printf("最大的数为第%d个数(%f),最小的数为第%d个数(%f),平均值为%f",*ma,b[*ma],*mi,b[*mi],aver);
return 0;
}

double fun(double a[],int n,int*max,int*min)
{
int i;
double sum=0;
double max1=a[0],min1=a[0];
*max=0;
*min=0;
for(i=0;i<n;i++)
{
if(a[i]>max1){*max=i;max1=a[i];}
if(a[i]<min1){*min=i;min1=a[i];}
sum=sum+a[i];
}
printf("sum=%f,n=%d\n",sum,n);
return sum/n;
}
kaixingui2012
2014-11-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6443万
展开全部
double fun(double a[],int n,int*max,int*min)
{
     double sum;
     int i;
     sum=*max=*min=a[0]; 
     for (i=1;i<n;i++ )
     {
          sum += a[i] ;
          if ( *max < a[i] )
               *max = a[i];
          if ( *min > a[i] )
               *min=a[i];
     }
     return sum/n ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yuqi_Tan

推荐于2018-02-24 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3463万
展开全部
前面已经有两位高手做出了回答,我运行了一下,《怺逺恒暒》有时候得不到正确的结果;《kaixingui2012》的不能运行,提示类型不对。不知道什么原因,也许是我的版本有问题?
我也做了一个,感觉运行还是不错的。请比较吧!

#include "stdio.h"
double fun(double a[],int n,int *max,int *min);/*函数原型声明:其中a为数组,
n为数组元素个数,max指向最大数,min指向最小数,函数返回值为平均值*/
int main()

{
double b[10],aver;
int x,y=10,max=0,*ma=&max,min=0,*mi=&min;
for(x=0;x<y;x++){b[x]=x*(x-8.25)*0.1;printf("数%d=%f\n",x,b[x]);}
aver=fun(b,y,ma,mi);
printf("最大的数为第%d个数(%f),最小的数为第%d个数(%f),平均值为%f",*ma,b[*ma],*mi,b[*mi],aver);
return 0;
}

double fun(double a[],int n,int*max,int*min)
{
int i;
double sum=0;
double max1=a[0],min1=a[0];
*max=0;
*min=0;
for(i=0;i<n;i++)
{
if(a[i]>max1){*max=i;max1=a[i];}
if(a[i]<min1){*min=i;min1=a[i];}
sum=sum+a[i];
}
printf("sum=%f,n=%d\n",sum,n);
return sum/n;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Asull0v0
2014-11-27 · TA获得超过801个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:125万
展开全部
#include<stdio.h>

double fun(double a[],int n,int* max,int* min)
{
double max_a = a[0];
double min_a = a[0];
*min = 0;
*max = 0;
double ans = a[0];
for (int i = 1; i < n; i++)
{
ans += a[i];
if (a[i] > max_a) {*max = i;}
if (a[i] < min_a) {*min = i;}
}
return ans / n;
}
int main()
{
int max,min;
int n = 5;
double a[5] = {1.5,1.2,1.3,1.4,1.1};
printf("平均值:%.3lf\n",fun(a,n,&max,&min));
printf("最大值下标:%d\n",max);
printf("最小值下标:%d\n",min);
return 0;
}

//不好意思 之前版本有漏洞 现在改过来了
#include<stdio.h>

double fun(double a[],int n,int* max,int* min)
{
double max_a = a[0]; //假设刚开始时最大最小值都为 a[0]
double min_a = a[0];
*min = 0;//最大最小值下标也初始化为0
*max = 0;
double ans = a[0];//ans初始化为a[0]
for (int i = 1; i < n; i++)
{//循环从数组下标1开始
ans += a[i];
//若当前a[i] 比max_a大或比min_a小 就更新 *max 和 *min 还有当前最大最小值max_a 和 min_a
if (a[i] > max_a) {*max = i; max_a = a[i];} //之前忘了更新max_a 和 min_a
if (a[i] < min_a) {*min = i; min_a = a[i];}
}
return ans / n;
}
int main()
{
int max,min;
int n = 5;
double a[5] = {1.5,1.2,2.3,5.7,4.1};
double t = fun(a,n,&max,&min);
printf("平均值:%.3lf\n",t);
printf("最大值下标:%d\n",max);
printf("最小值下标:%d\n",min);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式