排名次。用二维数组输入全班20个学生5门功课的成绩,求出各门功课的平均分,统计每个人的总分,并按降序排列并输出。

排名次。用二维数组输入全班20个学生5门功课的成绩,求出各门功课的平均分,统计每个人的总分,并按降序排列并输出。

#include<stdio.h>
void sort(double a[],int n) {
    double t;
    int i,j;
    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; 
            }
        }
    }
}
int main() {
    double a[20][5] = {0}, ave[5] = {0}, total[20] = {0};
    int i, j;
    for(i = 0; i < 20; i++) {
        for(j = 0; j < 5; j++) {
            scanf("%lf", &a[i][j]);
            total[i] += a[i][j];
        }
    }
    printf("5门课程平均分:\n");
    for(j = 0; j < 5; j++) {
        for(i = 0; i < 20; i++) {
            ave[j] += a[i][j];
        }
        ave[j] /= 5;
        printf("%.2f ", ave[j]);
    }

    printf("\n总分按降序排序:\n");
    sort(total, 20);
    for(i = 0; i < 20; i++) {
        printf("%.2f ", total[i]);
    }
    return 0;
}

#include<stdio.h>
#include<string.h>
typedef unsigned char u8;
int   table[20][5]=
{    
    {70,61,62,63,64},//11
    {71,61,62,63,64},//12
    {72,61,62,63,64},//13
    {73,61,62,63,64},//14
    {74,61,62,63,64},//15
    {75,61,62,63,64},//16
    {76,61,62,63,64},//17
    {77,61,62,63,64},//18
    {78,61,62,63,64},//19
    {79,61,62,63,64},//20
    
    {60,61,62,63,64},//01
    {61,61,62,63,64},//02
    {62,61,62,63,64},//03
    {63,61,62,63,64},//04
    {64,61,62,63,64},//05
    {65,61,62,63,64},//06
    {66,61,62,63,64},//07
    {67,61,62,63,64},//08
    {68,61,62,63,64},//09
    {69,61,62,63,64},//10                
};



int main()
{
    u8     i=0,j=0,k=0,h =0,m=0;    
    int    temp =0;
    int    num[20] = {0} ;//每个同学排名
    int    sum[20] = {0} ;//每个同学总分    
    double Value[20]= {0};//各科平均分    

    
    //每个同学总分,各科平均分            
    for(i=0;i<20;i++)
    {
        for(j=0;j<5;j++)
        {
            sum[i] =  sum[i] + table[i][j];    //每个同学总分
            Value[i] = (sum[i])/5; //各科平均分
        }            
    }

    //排名
    for(k=0;k<20;k++)
    {
        for(h=0;h<20;h++)
        {
            if(sum[k]<=sum[h])    
            {
                num[k] =num[k]+1;             
            }                
        }        
    }
    
    for(m=0;m<20;m++)
    {        
        printf("总分sum[%d",m);
        printf("]=%d",sum[m]);
        printf(" 平均分Value[%d",m);
        printf("]=%lf",Value[m]);                
        printf(" 排名=%d\r\n",num[m]);
    }    
}

img