首页 > 编程语言 >【每日例题】蓝桥杯 c++ 奖学金

【每日例题】蓝桥杯 c++ 奖学金

时间:2023-11-04 12:44:39浏览次数:39  
标签:sort 排序 return int sum c++ 蓝桥 总分 例题

奖学金

题目

蓝桥杯 奖学金

题目分析

  1. 由题目可知,该题涉及到五个属性:学号,语文分数,数学分数,英语分数,总分;由于我们需要通过输入语文、数学、英语分数,经过操作后,输出学号与总分,所以我们可以通过结构体进行存储。

             下面是有关结构体的信息:结构体信息

      2.下面是排序优先级的要求:

  • 先按总分从高到低排序。
  • 如果两个同学总分相同,再按语文成绩从高到低排序。
  • 如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面
    我们可以通过专门使用一个函数来处理该排序是否正确,为了节省时间,我们可以调用sort函数排序,再通过一个函数来确认sort函数排序是否正确

sort函数

代码

#include <iostream>
#include <algorithm>
using namespace std;
struct student
{
  int id;
  int c,m,e;
  int sum;
}s[300];

bool cmp(student a,student b)
{
  if(a.sum>b.sum)
    return true;
  else if (a.sum<b.sum)
    return false;
  else
  {
    if(a.c>b.c)
      return true;
    else if(a.c<b.c)
      return false;
    else
    {
      if (a.id>b.id)
        return true;
      else
        return false;
    }
  }
}

int main()
{
  int n;
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    s[i].id=i;
    cin>>s[i].c>>s[i].m>>s[i].e;
    s[i].sum=s[i].c+s[i].m+s[i].e;
  }
  sort(s+1,s+n+1,cmp);
  for(int i=1;i<=5;i++)
  {
    cout<<s[i].id<<' '<<s[i].sum<<endl;
  }
  return 0;
}

 

    

标签:sort,排序,return,int,sum,c++,蓝桥,总分,例题
From: https://www.cnblogs.com/hcrzhi/p/17809198.html

相关文章

  • C/C++ 使用 MySQL API 操作 数据库
    C/C++对MySQLAPI的使用 MySQL数据库是一个C/S结构(客服端/服务器),当我们安装好MYSQL服务器之后可以通过客户端访问服务器端的数据;这里以C语言提供的API举例实现对数据库的操作;再程序中连接数据库服务器,主要有以下步骤:初始化连接环境;连接mysql的服务器,需......
  • UE4中的C++编程简介
    对官方文档的学习链接利用UE创建一个C++基类在编辑器中可以选择父类,根据这个父类我们可以创建一个基类用于后续的蓝图类制作。以Actor父类为例创建基类,其头文件会包含一个构造函数,一个Tick函数的重载和一个BeginPlay函数的重载。BeginPlay函数告诉Actor以可运行状态进入了游戏......
  • C++参数解析参数
    《C/C++参数解析》1.getopt库的使用  getopt用于解析程序命令行输入的参数,可解析短参数和长参数;解析短参数使用getopt()函数,解析长参数可使用getopt_long();1.1getopt()解析短参数  getopt()函数用来解析短参数,例如-a或者-b100这样的参数,不能解析长参数,如--ip198.11.2......
  • c/c++ 指针的江湖传说
    万物皆内存,内存有两个东西:地址、值。普通变量、引用变量、指针变量,二级指针变量,数组,指针数组...等等,皆内存。【指针】intx=10;//变量int*pX=&x;//指针变量int**ppX=&pX;//二级指针变量//地址,值std::cout<<&x<<","<<x<<std::endl;s......
  • c++入门基础
    c++打算法竞赛的优点是,输入输出比较方便,里面封装的stl库可以直接用,例如sort排序,直接一行代码就行了,时间复杂度也很友好。整数:输入:输出:小数:输入:输出:数组:输入:输出:字符串:输入:输出:结构体:输入输出:模板:点击查看代码#include<bits/stdc++.h>usingnames......
  • 浅析C++中浮点数在内存中的存储方式
    1.任何数据在内存中都是以二进制的形式进行存储。例如,short型数据1156,由于在32位机和64位机都占2B一共16位其二进制形式为:0000010010000100。在IntelCPU架构的系统中(目前用的最多的硬件架构系统),存放方式为10000100(低地址单元)00000100(高地址单元),因为IntelCPU的......
  • 梳理C++各种数据类型所占字节数和表示范围
    Outline1.数据类型所在字节数与程序运行平台有关2.列举各种数据类型所占字节数1.数据类型所在字节数与程序运行平台有关不同的平台上对不同数据类型分配的字节数是不同的。平台环境的理解:硬件架构操作系统(OS)编译器(Compiler)程序的运行环境取决于上述配件。原因:64位机......
  • 使用C++实现Range序列生成器
    在C++编程中,经常需要迭代一系列数字或其他可迭代对象。通常,这需要编写复杂的循环结构,但有一种精妙的方法可以使这一过程变得更加简单和可读。如果你使用过Python语言那么一定对Range语句非常的数据,我们可以使用C++来实现一个简单的Range封装,如下代码定义了一个名为Range的命名空间......
  • 使用C++实现Range序列生成器
    在C++编程中,经常需要迭代一系列数字或其他可迭代对象。通常,这需要编写复杂的循环结构,但有一种精妙的方法可以使这一过程变得更加简单和可读。如果你使用过Python语言那么一定对Range语句非常的数据,我们可以使用C++来实现一个简单的Range封装,如下代码定义了一个名为Range的命名空间,......
  • C++ float与double类型的简单区别
    1.有效位数与精度有效位和精度的两个概念是不同的,我们先说float和double各自的有效位。在float与double中默认的有效位都是6位有效位,意思就是从第一个不为0的数字算起有6个数字是有效的后边无效的数字也不会显示,如下图:代码:运行结果:可以看出不管你的float定义的有多少位小......