首页 > 其他分享 >3805 谁拿了最多的奖学金 结构体排序

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

时间:2024-09-30 16:49:35浏览次数:9  
标签:总数 3805 sum 学生 奖金 int 排序 奖学金

解决思路

 
  • 定义结构体:定义一个结构体 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. 排序:根据奖金总数对学生进行排序,如果奖金总数相同,则按输入顺序排序。  
  • 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数。

标签:总数,3805,sum,学生,奖金,int,排序,奖学金
From: https://www.cnblogs.com/jyssh/p/18442107

相关文章

  • 2998 分数线划定 结构体排序
    解决思路 读取输入:读取选手数量 n 和计划录取人数 m,以及每个选手的报名号和笔试成绩。 排序:根据笔试成绩对选手进行排序,如果成绩相同,则按报名号由小到大排序。 确定面试分数线:计算 m*1.5(向下取整)名选手的分数作为面试分数线。 筛选进入面试的选手:筛选出......
  • 11752 糖葫芦 模拟 排序 枚举
    解决思路 读取输入:读取糖果的数量 n 和每个糖果距左边第一颗糖果的距离。 排序:对糖果的距离进行排序。 枚举分割点:枚举两个分割点,将糖果分成三段,计算每段的长度,并求出总长度的最小值。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;cons......
  • 9564 Work Scheduling 结构体排序 优先队列 最小堆 贪心
    解决思路 排序:首先将所有工作按照截止时间 D_i 进行排序。 优先队列:使用一个最小堆来存储当前选择的工作的利润。 选择工作:遍历所有工作,如果当前工作的截止时间大于堆的大小,则将该工作加入堆中;否则,如果当前工作的利润大于堆顶的利润,则替换堆顶的工作。#include......
  • linux: top: 改变排序标准
    一,top的默认排序标准:点击shift+f,会打开选择排序依据的界面,从这个界面可以看到,默认的排序标准是:%CPU二,改变排序标准1,第一种方法:shift+f在打开的界面中用上下左右箭头选择一个标准即可2,快捷键大写M:根据内存排序,默认从大到小,大写R更改为从小到大排序大写P:根据CPU使用排......
  • 5782 Special Event 结构体排序
    解决思路 初始化:定义一个结构体 node 来存储每一天的可用人数和天的编号。 读取输入:读取每个人的可用性,并统计每一天的可用人数。 排序:根据每一天的可用人数进行排序。 输出结果:输出可用人数最多的天的编号,如果有多天满足条件,用逗号分隔。#include<bits/s......
  • 排序算法之——归并排序,计数排序
    文章目录前言一、归并排序1.归并排序的思想2.归并排序时间复杂度及空间复杂度3.归并排序代码实现1)递归版本2)非递归版本二、计数排序1.计数排序的思想2.计数排序的时间复杂度及空间复杂度3.计数排序代码实现总结(排序算法稳定性)前言今天我们一起来了解归并排......
  • c# 排序、强转枚举
    List<Tuple<double,int>>mm中doble从小到大排序mm本身排序在C#中,如果你有一个List<Tuple<double,int>>类型的集合mm,并且你想要根据Tuple中的double值(即第一个元素)从小到大进行排序,同时希望这个排序能够反映到mm本身(即原地排序),你可以使用List的Sort方法,并传入一个自定义的比较......
  • 【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研
     ......
  • Python基于自定义方法的排序
    Python基于自定义方法的排序在Python中,排序是一个常见的任务,它可以帮助我们根据特定的规则对数据结构(如列表)中的元素进行排序。Python的内置排序方法,如列表的sort()函数和内置函数sorted(),提供了非常灵活的排序机制,特别是通过key参数,我们可以指定一个自定义的函数来决定排序的顺......
  • WordPress产品分类添加,自动排序插件
    效果图如下  目前这个预览菜单这个效果有点问题,但是不影响实际排序,有懂源码的朋友可以自行修改一下,目录结构menu-assetsmenu.cssmenu.jsmenu.php源码如下menu.php文件<?php/***PluginName:菜单整理*Description:将WooCommerce......