7、【编写程序】从键盘输入N(N<100)个正数(输入-1表示输入结束),把这些数从大到小进行排序后输出排序结果,并输出这N个数的平均值。

7、【编写程序】从键盘输入N(N<100)个正数(输入-1表示输入结束),把这些数从大到小进行排序后输出排序结果,并输出这N个数的平均值。要求:自己编写两个函数sort与avg,其中sort函数完成排序并输出排序结果,avg函数完成求平均值并输出结果的功能。【测试样例】 输入:1 5 8 7 4 9 2 -1输出:排序结果为:9 8 7 5 4 2 1 这组数的平均值为:5.142857输入:6 8 7 2 3 -1输出:排序结果为:8 7 6 3 2 -1 这组数的平均值为:5.2

#include <stdio.h>
void sort(int a[],int n) {
    int i,j,t;
    for(i=0; i<n-1; i++) {
        for(j=0;j<n-i-1;j++){
            if(a[j]<a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    printf("排序结果为:");
    for(i=0;i<n;i++){
        printf("%d ",a[i]);
    } 
}
void avg(int a[],int n){
    int i,s=0;
    double ave;
    for(i=0;i<n;i++){
        s+=a[i];
    }
    ave = s*1.0/n;
    printf("\n这组数的平均值为:%f",ave);
}
int main () {
    int n,i=0,a[100];
    while(1) {
        scanf("%d",&n);
        if(n==-1) {
            break;
        }
        a[i]=n;
        i++;
    }
    sort(a,i);
    avg(a,i);
    return 0;
}