中超联赛

题目描述(结构体排序)

中超联赛拥有大量的现场观众和收视观众,球迷都渴望观看比赛,同时希望能有一个平台更深度的了解中超联赛,体验中超球队的辛苦和努力。每场足球比赛历时90分钟,分为上半场和下半场。

中超的积分规则如下:赢得一场比赛得3分,平一场得1分,输球不得分。例如一个球队的胜平负的场次分别为11 2 2,那么积分就是113+21=35。今年的中超联赛已经落下帷幕,请你帮忙计算出各球队的总积分并按照积分给出球队最终的排名吧!

输入

输入有多行。第一行是球队数量n(1<n<=16)

接下来有n行,每行数据包含球队的名称(不含空格,长度不超过30个字符)和胜、平、负的场次,数据间以空格分开

输出

   输出各个球队按照积分的排名情况(保证所有球队的积分各不相同) ,每行输出球队的名次、名称和该队的积分,数据间用一个空格分开,每行末尾没有空格

样例输入
复制样例数据
3
shanghaishanggang 11 2 2
beijingguoan 12 2 1
shandonglunengtaishan 10 1 4
样例输出
1 beijingguoan 38
2 shanghaishanggang 35
3 shandonglunengtaishan 31

#include <stdio.h>
#include <stdlib.h>
#define N 50
typedef struct play
{
    char name[1000];
    int win;
    int equle;
    int fail;
    int sum;

}P;
int comp(P*a,P*b)
{
    return(b->win*3+b->equle)-(a->win*3+a->equle);
}
int main()
{
    int n,i;
    scanf("%d",&n);
    P s[n];
    for(i=0;i<n;i++)
    {
        scanf("%s %d %d %d",&s[i].name,&s[i].win,&s[i].equle,&s[i].fail);
        s[i].sum=s[i].win*3+s[i].equle;
    }
    qsort(s,n,sizeof(P),comp);
    for(i=0;i<n;i++)
    {
        printf("%d %s %d
",i+1,s[i].name,s[i].sum);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/skyleafcoder/p/12319581.html