6-5 求一组数的平均值并按降序排序 (6 分)调用Input函数从键盘读入不超过10个学生的成绩,成绩低于0分或者超过100分重新读入,读满10个或者遇到9999结束;调用Average函数求一组
6-5 求一组数的平均值并按降序排序 (6 分)
调用Input函数从键盘读入不超过10个学生的成绩,成绩低于0分或者超过100分重新读入,读满10个或者遇到9999结束;调用Average函数求一组数的平均值;调用Sort函数将这组数按照降序排序。
函数接口定义:
void Input(float *pa, int *n);
float Average( float *pa, int n);
void Sort(float *pa,int n);
其中 pa、n、pmax 都是用户传入的参数。函数Max求数组中n个元素的最大值及位置;函数Average求数组中n个元素的平均值;函数Sort将其按照降序排序。
裁判测试程序样例:
#include <stdio.h>
#define N 10
void Input(float *pa,int *n);
float Average(float *pa, int n);
void Sort(float *pa,int n);
int main()
{
float a[N],ave;
float *p = a;
int n;
Input(p, &n);
ave = Average(p, n);
Sort(p,n);
printf("average = %.2f\n",ave);
for(p = a;p<a+n;p++)
printf("%-7.1f",*p);
return 0;
}
/* 请在这里填写答案 */
输入样例1:
59.5 88.5 77 40 95 65 9999
输出样例1:
average = 70.83
95.0 88.5 77.0 65.0 59.5 40.0
输入样例2:
29 78 -7 77 101 10 95 665 65 0 100 -90 90 888 88 60
输出样例2:
average = 63.20
100.0 95.0 90.0 88.0 78.0 77.0 65.0 29.0 10.0 0.0
void Input(float *pa, int *n)
{
int g=0;
float a;
while(1)
{
scanf("%f",&a);
if(a==9999)
break;
if(a>=0&&a<=100)
{
pa[g]=a;
g++;
}
if(g==10)
break;
}
*n=g;
}
float Average( float *pa, int n)
{
if(n!=0)
{ float s=0;
for(int i=0;i<n;i++)
{
s+=pa[i];
}
return s/n;}
else
return 0;
}
void Sort(float *pa,int n)
{
int i,j;
float t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(pa[j]<pa[j+1])
{
t=pa[j];
pa[j]=pa[j+1];
pa[j+1]=t;
}
}
}
}
void Input(float *pa, int *n)
{
float a;
while((*n)<10)
{
scanf("%f",&a);
if(a>=0&&a<=100)
{
*pa=a;
pa++;
(*n)++;
}
if(a==9999)
break;
}
}
float Average( float *pa, int n)
{
int i;
float s=0;
for(i=0;i<n;i++)
{
s=s+pa[i];
}
if(s!=0)
return s/n;
else
return 0;
}
void Sort(float *pa,int n)
{
int i,j;
float t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(pa[j]<pa[j+1])
{
t=pa[j];
pa[j]=pa[j+1];
pa[j+1]=t;
}
}
}
}
版权声明:本文为dfgjj___原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。