6-5 求一组数的平均值并按降序排序 (6 分)调用Input函数从键盘读入不超过10个学生的成绩,成绩低于0分或者超过100分重新读入,读满10个或者遇到9999结束;调用Average函数求一组

  • Post author:
  • Post category:其他

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 版权协议,转载请附上原文出处链接和本声明。