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

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

前面已经有两位高手做出了回答,我运行了一下,《怺逺恒暒》有时候得不到正确的结果;《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;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-27
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 ;
}

第2个回答  推荐于2018-02-24
前面已经有两位高手做出了回答,我运行了一下,《怺逺恒暒》有时候得不到正确的结果;《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;
}本回答被网友采纳
第3个回答  2014-11-27
#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;
}

c语言编写一个函数,找出一维数组中的最大值和最小值,并计算出数组元素的...
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...

...寻找具有n个元素的一维数组中的最大值和最小值,并返回数组元素的平均...
include<stdio.h>double fun(int a[],int n,int *max,int *min){int i,s; *max=*min=s=a[0]; for(i=1;i<n;i++) {if(a[i]>*max)*max=a[i]; if(a[i]<*min)*min=a[i]; s+=a[i]; } return (float)s\/n; }int main(){int n,max,min,i,a[100...

C语言题:计算并输出一维数组中的最大值、最小值和平均值
} printf("\\n最大值=%g\\n最小值=%g\\n平均值=%g\\n"

C语言中用一维数组完成去掉最大值和最小值 并求出平均值
include <stdio.h> void main(){ int a[5]={90,45,67,87,50};int i,max,min,sum;double average;sum=0;max=a[0];min=a[0];for(i=0;i<5;i++){ if(maxa[i])min=a[i];sum=sum+a[i];} average=(double)(sum-max-min)\/3;printf("\\nThe max=%d\\n",max);printf("\\...

C语言 求一个一维数组的最大值和最小值~!
Data_Type max=0;\/\/定义两个全局变量,max表示最大值 Data_Type min=0;\/\/min表示最小值 void func(Data_Type a[],int N)\/\/传递数组名与数组的大小N { max=min=a[0];\/\/初始化 for(int i=0,iN,i++)\/\/循环N次 { if(maxa[i]) max=a[i];\/\/如果当前的a[i]比max大,则max取...

C语言,编写程序,使用指针求出一维整型数组,数组自定,求出最大值及其下 ...
("\\n"); printf ("===\\n\\n"); printf("请输入数组内容,共%d个元素: ",len);for(i=0; i<len; p++,i++) {scanf("%d",p);if(*p>*max)max = p;}printf ("\\n");printf ("

...个一维整型数组,并找出数组元素中最大值和最小值及其相应下标!_百度...
1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:(1)数组为整型数组(10个元素)。(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值...

C语言指针实现自定义函数求一维数组中的最大值和最小值
} int max=Integer.MIN_VALUE;int min=Integer.MAX_VALUE;for(int i=0;i<arr.length;i++){ if(arr>max){\/\/求出最大值 max=arr;} if(arr<min){\/\/求出最小值 min=arr;} } System.out.println("\\n最大值:"+max);System.out.println("最小值:"+min);} } ...

C语言中怎样用指针找出一维数组中的最大值和最小值并输出它们的下标
1、新建一个工程和.c文件,并且输入主函数和头文件。2、定义全局变量。3、定义变量类型。4、用两个for语句给数组元素赋值。5、调用求最小值的函数。6、函数的总体流程如下图。7、在主函数中输出结果,编译、运行,得到最后结果。

...最小值和平均值,并且返回最大值和最小值的下标。
1、首先,定义一个数组,初值为0。2、用for循环,控制输入整数的个数。3、将输入的整数,保存在数组中。4、用函数min判断输入整数的最小值,保存到变量中。5、然后,用函数max判断输入整数的最大值,保存在变量中。6、最后,输出整数中的最小值和最大值。7、运行程序,输入三个一位整数,电脑会...

相似回答