题目链接
http://www.acmicpc.sdnu.edu.cn/problem/show/1182
知识准备
sort函数

用于C++中,对给定区间所有元素进行排序。头文件是#include <algorithm>。 Sort函数使用模板:
Sort(start,end,排序方法) Sort函数有三个参数: (1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址的下一地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

结构体排序
题目

Description

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学
排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)
是: 7 279

5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是 279
(总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是: 5 279

7 279 则按输出错误处理,不能得分。

Input

输入包含n+1行:

第1行为一个正整数n(6<=n<=300),表示该校参加评选的学生人数。

第2到n+1行,每行有3个用空格隔开的数字,每个数字都在O到100之间z第1行的3个数
字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为l~n (恰好是输入数据的行号减1)。

所给的数据都是正确的,不必检验。

Output

输出共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。

Sample Input

6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

Sample Output

6 265
4 264
3 258
2 244
1 237

心路历程
学了结构体排序之后做的第一个题,因为初学不是很熟练,走了不少弯路。犯的错误:
1.写错头文件,用sort函数时头文件为

#include<algorithm>

2.bool cmp 时没有考虑全情况;
3.cout的最后没有写<<endl

#include<iostream>
#include<algorithm>
using namespace std;
struct stu
{int chinese, math, eng, xh, sum;
};
bool cmp(stu x, stu y)
{if(x.sum> y.sum) return 1;else if (x.sum==y.sum&&x.chinese>y.chinese) return 1;else if (x.sum==y.sum&&x.chinese==y.chinese&&x.xh<y.xh) return 1;else return 0;
}//用于后面的sort()函数将每个人按成绩和学号排序
int main ()
{int n;cin>>n;stu student [305];for(int i=1;i<=n;i++){cin>>student[i].chinese>>student[i].math>>student[i].eng;student[i].sum=student[i].chinese+student[i].math+student[i].eng;student[i].xh=i+1;}sort(student,student+n,cmp);for(int i=1;i<=5;i++){cout<< student[i].xh<< " "<< student[i].sum<< endl;}//输出前五名的学号总成绩
return 0;
}

(第一次scdn的博客,纪念一下)

SDNU OJ 1182奖学金相关推荐

  1. sdnu oj 1228 Overwatch 互素

    给出n和k求出第k个与n互素的数 如果知道欧几里德算法的话就应该知道gcd(b×t+a,b)=gcd(a,b) (t为任意整数) 则如果a与b互素,则b×t+a与b也一定互素,如果a与b不互素,则b× ...

  2. sdnu oj 1194 传纸条 双线程DP

    从左上角到右下角一条+从右下角到左上角一条 ==从左上角到右下角两条 2333 #include <iostream> #include <vector> #include & ...

  3. sdnu oj 1319 Russian Roulette

    开始以为是俄罗斯轮盘, 仔细看看好像又不是,,, 注意如果 ROTATE 的话, 是随机旋转, 所以之后活下来的概率是 '0' 的个数 / 总数 而 SHOOT 的话, 前一个是 '0', 那么当前是 ...

  4. SDNU OJ 1025 马踏飞燕

    该题是一道使用BFS(广度优先搜索)的经典题目(当然如果你不怕麻烦,DFS也是可以的), 思路很简单,用queue存下各个情况每次都判断是否踏到燕子,并且记得记录深度. Description 无聊的 ...

  5. [转载] 如何用python实现一行两个输入

    参考链接: 如何在Python的一行中从用户输入多个值 前几天突发奇想要用python做SDNU OJ的题,就是最简单的那道1001,然而错了==原因就在于命题要求在同一行中输入,而我的代码用了两个i ...

  6. c语言最大值和最小值1157,基于NBU OJ的C语言在线实验及习题汇编(计算机科学与技术21世纪高等学校规划教材)...

    导语 内容提要 陈叶芳主编的<基于NBU OJ的C语言在线实验及习题汇编>是为"C语言程序设计"课程编写的实验指导用书.全书以宁波大学程序设计在线评判系统(NBU OJ ...

  7. 郑州轻工业大学OJ平台题解

    前言 本题解是由c/c ++ 和python构成 郑州轻工业大学oj平台点击进入 题解链接 Python ZZULIOJ1001-1005Python解法 ZZULIOJ1106-1010Python ...

  8. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  9. 分析oj 网的题目难度和通过率的关系

    # coding=utf-8 import csv import json import requests import gevent from gevent.queue import Queue # ...

最新文章

  1. VMSS上用Managed Disk和Data Disk进行自动扩展(1)
  2. arp 项删除失败: 请求的操作需要提升。_ccna必懂篇-arp协议工作原理详解。
  3. 微信二维码支付快速入门
  4. 人的一生能交多少朋友?
  5. H.264学习--1
  6. 相邀直播app最新入驻58位海外阿姨
  7. 华工计算机工图答案,华南理工 网络画法几何及工程制图-课程习题集答案
  8. Unity 3D 萌萌哒三消游戏《宝石消消乐》源码
  9. 微信公众号爬虫开发-常见问题汇总
  10. 8086CPU(汇编语言,王爽)
  11. 安卓通过经纬度,实现intent调用百度,高德,Google地图客户端实现驾车导航功能
  12. 从古至今的计算机设备,计算器从古至今的发展形成
  13. mysql如何高效存储IPv4、IPv6地址
  14. 虚拟机通过无线设置静态ip连外网,不同环境的wifi照常使用
  15. 第九周.02.KAT
  16. Web开发必知的八种隔离级别
  17. day21Java-常用对象网络编程Socket-TCP协议
  18. 海关数据有没有效果?
  19. 智能小车建图导航-在rviz中导航(运行)
  20. 主机模拟i2c检测设备时出现错误死循环_适用于PLC/DCS应用,支持HART和Modbus连接的模拟I/O系统...

热门文章

  1. CocosCreator官方示例 - spine系列
  2. 修改电脑电源键按一下关机的策略
  3. 9s oppo r 怎么root_oppor9手机怎么获取root权限?
  4. 浅谈Android中的MVP与动态代理的结合
  5. 游戏声效知多少-Unity
  6. 【ZCMU1978】调酒壶里的酸奶(dfs)
  7. “服务不可用“怎么排查?
  8. 数据结构笔记9: 图
  9. android 控件 证件照,拍摄令自己满意的证件照 -- 智能证件照 #Android #iPhone
  10. 密码学基础(一)分组密码与序列密码