通过调用函数来求一个简单一维数组的最大值,最小值和平均值。不适用全局变量的情况下该怎么做?
发布网友
发布时间:2022-04-23 10:14
我来回答
共4个回答
热心网友
时间:2023-10-11 03:40
函数返回值只能一个,但可以传递指针或引用,得到更多的结果。
例如,原函数 float average(float array[],int n),可改为
float average(float array[], int n, int *pmax, int *pmin);
在函数实现中,最后几行改为
*pmax = max;
*pmin = min;
return (aver);
函数返回平均值,最大和最小值通过指针变量返回。
调用的地方,
ave=average(a,10, &max, &min);追问好像要把int *pmax和int *pmin改为float 是吧 否则会警告的
追答哦,是的
float average(float array[], int n, float *pmax, float *pmin);
热心网友
时间:2023-10-11 03:40
在函数中输出不就得了 搞这么复杂,调用函数不返回任何值
热心网友
时间:2023-10-11 03:40
程序修改::
#include<stdio.h>
void main()
{
float *average(float array[],int n);
int i;
float max=0,min=0,ave,a[10],*rr;
printf("Input 10 nums:\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
rr=average(a,10);
printf("max=%6.2f\nmin=%6.2f\nave=%6.2f\n",rr[1],rr[2],rr[0]);
// getch();
}
float *average(float array[],int n)
{
int i;
float aver,sum=0;//此处
float max=array[0],min=array[0];
for(i=0;i<n;i++)
{
if(array[i]>max) max=array[i];
else if(array[i]<min) min=array[i];
sum=sum+array[i];
}
aver=sum/n;
float ret[3];
ret[0]=aver;
ret[1]=max;
ret[2]=min;
return(ret);
}
热心网友
时间:2023-10-11 03:41
函数只能有一个返回值