3805 谁拿了最多的奖学金 结构体排序

解决思路

 
  • 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。
 
  • 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。
 
3. 排序:根据奖金总数对学生进行排序,如果奖金总数相同,则按输入顺序排序。
 
  • 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数。
    #include <bits/stdc++.h>
    using namespace std;
    
    // 定义一个结构体来存储每个学生的信息和奖金总数
    struct Student {
        string name;
        int qm; // 期末平均成绩
        int bj; // 班级评议成绩
        char ganbu; // 是否是学生干部
        char xibu; // 是否是西部省份学生
        int lunwen; // 发表的论文数
        int id; // 学生的输入顺序
        int sum = 0; // 奖金总数
    };
    
    // 比较函数,用于按照奖金总数对学生进行排序
    bool cmp(Student a, Student b) {
        if (a.sum == b.sum) {
            return a.id < b.id;
        }
        return a.sum > b.sum;
    }
    
    Student a[10005];
    
    int main() {
        int n;
        cin >> n;
        int totalSum = 0; // 所有学生获得的奖学金总数
    
        // 读取每个学生的信息,并计算每个学生的奖金总数
        for (int i = 0; i < n; i++) {
            cin >> a[i].name >> a[i].qm >> a[i].bj >> a[i].ganbu >> a[i].xibu >> a[i].lunwen;
            a[i].id = i;
            if (a[i].qm > 80 && a[i].lunwen >= 1) {
                a[i].sum += 8000;
            }
            if (a[i].qm > 85 && a[i].bj > 80) {
                a[i].sum += 4000;
            }
            if (a[i].qm > 90) {
                a[i].sum += 2000;
            }
            if (a[i].qm > 85 && a[i].xibu == 'Y') {
                a[i].sum += 1000;
            }
            if (a[i].bj > 80 && a[i].ganbu == 'Y') {
                a[i].sum += 850;
            }
            totalSum += a[i].sum;
        }
    
        // 按照奖金总数对学生进行排序
        sort(a, a + n, cmp);
    
        // 输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数
        cout << a[0].name << endl << a[0].sum << endl << totalSum << endl;
    
        return 0;
    }

     


  •  
     
     
     
      ChenRuiyi
      9000
      28700
     
     
     
     
     
     
     
     
     
 

解决思路

 
  • 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。
 
  • 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。
 
3. 排序:根据奖金总数对学生进行排序,如果奖金总数相同,则按输入顺序排序。
 
  • 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数。
posted @ 2024-09-30 16:42  CRt0729  阅读(18)  评论(0编辑  收藏  举报