文章

6

粉丝

0

获赞

10

访问

315

头像
成绩再次排序 题解:C语言疯狂if嵌套
P1817 华南理工大学机试题
发布于2025年3月8日 17:22
阅读数 39

#include<stdio.h>
#include<string.h>
struct student{
    char name[100];
    int chinese;
    int math;
    int english;
    int total; 
}; 
int main()
{
    int n;  
    while(scanf("%d",&n)!=EOF)
    {
         struct student stu[n];
         struct student temp; 
         for(int i=0;i<n;i++)
         {
             scanf("%s %d %d %d",&stu[i].name,&stu[i].chinese,&stu[i].math,&stu[i].english); 
             stu[i].total=stu[i].chinese+stu[i].math+stu[i].english;
             //printf("%s %d %d %d\n",stu[i].name,stu[i]...

登录查看完整内容


登录后发布评论

1 条评论
riddle
2025年3月10日 19:59

#include <bits/stdc++.h>

using namespace std;

struct Student
{
    string name;
    int chinese;
    int english;
    int math;
    int sum;
} stu[1005];

bool compare(Student a,Student b)
{
    if(a.sum==b.sum)
    {
        if(a.chinese==b.chinese)
        {
            if(a.english==b.english)
            {
                return a.english>b.english;
            }
            return a.math>b.math;
        }
        return a.chinese>b.chinese;
    }
    return a.sum>b.sum;
}

int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=0; i<n; i++)
        {
            cin>>stu[i].name>>stu[i].chinese>>stu[i].math>>stu[i].english;
            stu[i].sum=stu[i].chinese+stu[i].english+stu[i].math;
        }

        stable_sort(stu,stu+n,compare);

        for(int i=0;i<n;i++){
            cout<<stu[i].name<<" "<<stu[i].chinese<<" "<<stu[i].math<<" "<<stu[i].english<<endl;
        }
    }
    return 0;
}
 

赞(0)