求解释 这段代码中成绩的顺序输出是怎么输出的??? 第一个函数cmp是什么意思???

#include <stdio.h>
#include <stdlib.h>
#define N 10

int cmp(const void *a,const void *b){
    return *(int*)b - *(int*)a;
}

int Sum(int score[]){
    int s = 0,i;
    for(i = 0 ; i < N ; i++)
        s += score[i];
    return s;
}

int Max(int score[]){
    return score[0];
}

int Min(int score[]){
    return score[N-1];
}

double Avg(int s){
    return (s + 0.0) / N;
}

int main()
{
    int score[N]={67,98,75,63,82,79,81,91,66,84};
    int i,sum;
    sum = Sum(score);
    qsort(score,N,sizeof(int),cmp);//sort it
    printf("Total score : %d\n",sum);
    printf("Max score : %d\n",Max(score));
    printf("Min Score : %d\n",Min(score));
    printf("Average score : %f\n",Avg(sum));
    printf("\n成绩排序:\n");
    for(i = 0 ; i < N ; i++)
    {
        printf("Rank %d's score : %d\n",i+1,score[i]);
    }
    return 0;
}


安之4183388
浏览 996回答 1
1回答

MinRam

#include <stdio.h> #include <stdlib.h> #define N 10 int cmp(const void *a,const void *b){  // qsort库函数的自定义比较函数参数。     return *(int*)b - *(int*)a;        // 即进行快速排序时候,比较两个元素的先后顺序。 }                                      // 详情可以看下qsort库函数的参数介绍(百度) int Sum(int score[]){     int s = 0,i;     for(i = 0 ; i < N ; i++)         s += score[i];     return s; } int Max(int score[]){     return score[0]; } int Min(int score[]){     return score[N-1]; } double Avg(int s){     return (s + 0.0) / N; } int main() {     int score[N]={67,98,75,63,82,79,81,91,66,84};     int i,sum;     sum = Sum(score);     qsort(score,N,sizeof(int),cmp);                    // 借用库函数快速排序,进行数组排序。     printf("Total score : %d\n",sum);     printf("Max score : %d\n",Max(score));     printf("Min Score : %d\n",Min(score));     printf("Average score : %f\n",Avg(sum));     printf("\n成绩排序:\n");     for(i = 0 ; i < N ; i++)     {         printf("Rank %d's score : %d\n",i+1,score[i]);     }     return 0; }
打开App,查看更多内容
随时随地看视频慕课网APP