麻烦帮我看看哪错了
  • 板块P1786 帮贡排序
  • 楼主hhwshh
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/4 15:09
  • 上次更新2024/3/4 18:37:19
查看原帖
麻烦帮我看看哪错了
1218327
hhwshh楼主2024/3/4 15:09
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s[7][30]= {"BangZhu", "FuBangZhu", "HuFa", "ZhangLao", "TangZhu", "JingYing", "BangZhong"};

struct person
{
    char name[50];
    char position[30];
    int banggong;
    int rank;
};

int compare_1(const void *a, const void *b)
{
    struct person *A=(struct person *)a;
    struct person *B=(struct person *)b;
    return B->banggong-A->banggong;
}

int compare_2(const void *a, const void *b)
{
    struct person *A=(struct person *)a;
    struct person *B=(struct person *)b;
    return B->rank-A->rank;
}

int main()
{
    struct person a[5000];
    int n, i, count;
    scanf("%d", &n);
    for(i=0; i<n; i++)
        scanf("%s%s%d%d", a[i].name, a[i].position, &a[i].banggong, &a[i].rank);
    qsort(a+3, n-3, sizeof(struct person), compare_1);
    count=3;
    while(count<n)
    {
        if(count>=3&&count<5)
            strcpy(a[count].position, s[2]);
        else if(count>=5&&count<9)
            strcpy(a[count].position, s[3]);
        else if(count<=9&&count<16)
            strcpy(a[count].position, s[4]);
        else if(count<=16&&count<41)
            strcpy(a[count].position, s[5]);
        else
            strcpy(a[count].position, s[6]);
        count++;
    }
    if(n>3)
        qsort(a+3, 2, sizeof(struct person), compare_2);
    if(n>5)
        qsort(a+5, 4, sizeof(struct person), compare_2);
    if(n>9)
        qsort(a+9, 7, sizeof(struct person), compare_2);
    if(n>16)
        qsort(a+16, 25, sizeof(struct person), compare_2);
    if(n>41)
        qsort(a+41, n-41, sizeof(struct person), compare_2);
    for(i=0; i<n; i++)
        printf("%s %s %d\n", a[i].name, a[i].position, a[i].rank);
    return 0;
}

2024/3/4 15:09
加载中...