编写函数,以参数方式返回n个整数的最大值、最小值、大于平均值的数据的个数。
输入格式:
输入数据的第一行为一个正整数T, 表示测试数据的组数。每组测试数据先输入数据个数n,然后输入n个整数。
输出格式:
对于每组测试,在一行上输出最大值、最小值、大于平均值的数据的个数。数据之间以1个空格分隔。
输入样例:
2
4 1 2 5 2
5 4 3 5 1 2
输出样例:
5 1 1
5 1 2
代码如下:
#include<stdio.h>
void calculate(int n,int a[],int *max,int *min,int *aboveAvg);
int main()
{
int T,n,max,min,aboveAvg;
scanf("%d\n",&T);
while(T--)
{
scanf("%d",&n);
int a[100000];//a[具体数值]
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);//&a[i]
}
calculate(n,a,&max,&min,&aboveAvg);
printf("%d %d %d\n",max,min,aboveAvg);
}
}
void calculate(int n,int a[],int *max,int *min,int *aboveAvg)
{
int sum=0,count=0;
double avg;
*max=*min=a[0];
for(int i=0;i<n;i++)
{
if(a[i]>*max)
{
*max=a[i];
}
else if(a[i]<*min)
{
*min=a[i];
}
sum=sum+a[i];
}
avg=sum/n;
//avg=(double) sum/n 把sum/n的结果强制转换为double类型
for(int i=0;i<n;i++)
{
if(a[i]>avg)
{
count++;
}
}
*aboveAvg=count;
}