把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过函数值返回。
函数接口定义:
int h_avg(int a[],int n,int b[]);
n
的值是a中的元素个数; b
中存储高于均分的成绩,高于均分的人数通过函数返回。
裁判测试程序样例:
#include <stdio.h>
#define N 10
int h_avg(int a[],int n,int b[]);
int main()
{
int n,i,x[N],k,y[N];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
k=h_avg(x,n,y);
for(i=0;i<k;i++)
printf("%d ",y[i]);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5
1 2 3 4 5
输出样例:
3 4 5
思路:本题要求我们将高于平均成绩的同学成绩存入另外一个数组中,然后返回,那么这时我们就要计算平均值,计算高于均值学生个数,然后因为是使用调用函数的方式,所以这里要用指针的方式来存储,最后返回学生个数就可以了,实现代码如下
int h_avg(int a[], int n, int b[])
{
int i,j=0;
float k = 0;//定义为float型变量是因为考虑到均值可能为小数的情况
for (i = 0; i < n; i++)//这里构造一个循环计算均值
{
k = k + a[i];
}
k = k / n;
for (i = 0; i < n; i++)
{
if (a[i] >= k)
{
*b = a[i];//此处直接课使用*b,不需要额外定义一个指针
b = b + 1;//改变b的地址实现存入数据
j = j + 1;//定义一个变量j用来存储b中变量个数
}
}
return j;
}