我才是主角 2023-01-06 15:33 采纳率: 75%
浏览 48
已结题

對排序算法的疑問,感謝回答

我遇到了一個問題。題目鏈接: https://www.acgo.cn/problemset/5/info
源碼:

#include<stdio.h>
#include<stdlib.h>
struct People{
    int ownID;//報名號
    int score;//分數
};
int compare(const void*a,const void *b){
    if((*((People*)a)).score==(*((People*)b)).score)return (*((People*)a)).ownID-(*((People*)b)).ownID;
    return (*((People*)b)).score-(*((People*)a)).score;
}
int main(){
    int m,n,i1,i2;
    People *l;
    scanf("%d%d",&n,&m);
    m*=1.5;
    l=(People*)malloc(n*sizeof(l[0]));
    for(i1=0;i1<n;i1++)scanf("%d%d",&(l[i1].ownID),&(l[i1].score));
    qsort(l,n,sizeof(l[0]),compare);//排序
    for(i2=m-1;l[i2].score==l[m-1].score;i2++){}//計算最後一名的排名
    printf("%d %d\n",l[m].score,i2);
    for(i1=0;i1<i2;i1++){
        printf("%d %d\n",l[i1].ownID,l[i1].score);
    }
    return 0;
}

此代碼提交後不通過。請問問題何在?

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2023-01-06 15:48
    关注

    第16行:l = (People*)malloc(n * sizeof(struct People)); //(n * sizeof(l[0]))
    其他没发现问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月25日
  • 创建了问题 1月6日