题目描述
Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。
对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
输入
测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (N<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。

输出
对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

样例输入
4 1
000001 Zhao 75
000004 Qian 88
000003 Li 64
000002 Sun 90
4 2
000005 Zhao 95
000011 Zhao 75
000007 Qian 68
000006 Sun 85
4 3
000002 Qian 88
000015 Li 95
000012 Zhao 70
000009 Sun 95
0 3
样例输出
Case 1:
000001 Zhao 75
000002 Sun 90
000003 Li 64
000004 Qian 88
Case 2:
000007 Qian 68
000006 Sun 85
000005 Zhao 95
000011 Zhao 75
Case 3:
000012 Zhao 70
000002 Qian 88
000009 Sun 95
000015 Li 95

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct student{char stuid[20];char name[20];int score;
}stu[100000];bool cmp1(student a,student b){return strcmp(a.stuid,b.stuid) < 0;
}bool cmp2(student a,student b){if(strcmp(a.name,b.name) != 0)return strcmp(a.name,b.name) < 0;elsereturn strcmp(a.stuid,b.stuid) < 0;
}bool cmp3(student a,student b){if(a.score != b.score)return a.score < b.score;elsereturn strcmp(a.stuid,b.stuid) < 0;
}int main(){int N,C,num=1;while (scanf("%d %d",&N,&C),N){student *s;for(int i=0;i<N;i++){s = stu + i;scanf("%s %s %d",&s->stuid,&s->name,&s->score);}if(C == 1){printf("Case %d:\n",num);sort(stu,stu+N,cmp1);for(int i=0;i<N;i++){s = stu + i;printf("%s %s %d\n",s->stuid,s->name,s->score);}}else if(C == 2){printf("Case %d:\n",num);sort(stu,stu+N,cmp2);for(int i=0;i<N;i++){s = stu + i;printf("%s %s %d\n",s->stuid,s->name,s->score);}}else if(C == 3){printf("Case %d:\n",num);sort(stu,stu+N,cmp3);for(int i=0;i<N;i++){s = stu + i;printf("%s %s %d\n",s->stuid,s->name,s->score);}}num++;}return 0;
}

AC:

算法笔记4.1--EXCEL排序相关推荐

  1. 算法笔记练习 4.1 排序 问题 C: EXCEL排序

    算法笔记练习 题解合集 题目链接 题目 题目描述 Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例,首先输出1行"Case i:",其中 i ...

  2. 数据结构与算法笔记 —— 十大经典排序及算法的稳定性

    一.十大经典排序算法 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全 ...

  3. 算法笔记-递归算法、递归排序、递归的时间复杂度、master公式(也叫主方法)

    1. 递归排序题 通过递归算法来获取一个数组中的最大值 2. 算法思路 采用递归的思路来进行解题,那么肯定是需要自己调用自己的,这也就是递归,于是考虑怎么自己调用自己呢?我们可以采用二分法来制造递归的 ...

  4. 算法笔记--八个常见排序算法总结

    一. 分类描述 1. 插入排序 直接插入排序:算法简单,稳定,适用于数据量小的情况 希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近 2. 交换排序 冒泡排序:算法简单,稳定, ...

  5. 问题 C: EXCEL排序 作业比赛编号 : 100000581 - 《算法笔记》4.1小节——算法初步->排序 Codeup

    问题 C: EXCEL排序 作业比赛编号 : 100000581 - <算法笔记>4.1小节--算法初步->排序 Codeup 注意: 1.姓名的字符长度为6,但是定义数组时,应为n ...

  6. 《算法笔记》4.1小节——算法初步-排序 问题 C: EXCEL排序

    问题 C: EXCEL排序 题目描述 Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例,首先输出1行"Case i:",其中 i 是测试用例的 ...

  7. Contest100000581 - 《算法笔记》4.1小节——算法初步-排序

    文章目录 Contest100000581 - <算法笔记>4.1小节--算法初步->排序 1.讲解 4.1 .1 选择排序 4.1.2 插入排序 4.1.3 排序题与sort()函 ...

  8. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  9. 算法基础:常用的排序算法知识笔记

    1.算法外排序分类 2.冒泡排序 冒泡排序(Bubble Sort)属于交换排序,它的原理是:循环两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止. 实现算法: /** * 冒泡排序优化后的 ...

  10. 漫画算法笔记 桶排序

    漫画算法笔记 桶排序 #include <iostream> #include <stdlib.h> #include <algorithm> #include & ...

最新文章

  1. iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多...
  2. webstorm快捷键生成html页面,webstorm工具使用的快捷键
  3. Dom4j 学习笔记
  4. jzoj6800-NOIP2020.9.19模拟spongebob【枚举】
  5. MyEclipse 汉化教程(含资源)
  6. chattr 设置隐藏属性
  7. matlab2013a文件安装密钥,Matlab2013a软件安装教程
  8. 中国制盐市场销售动态及需求潜力预测报告(新版)2022-2027年
  9. Tex中关于字体更换的问题
  10. 天猫要做“大”,京东怕不怕?
  11. abaqus中python怎么建立参考点_怎么在abaqus中选定中心为参考点
  12. nanomsg应用中的问题整理
  13. css将商品加入购物车,vue实现点击商品加入购物车动画
  14. 服务器升级微信公告,【更新公告】8月6日先锋服务器停服更新公告
  15. 周鸿祎:360 基本不触碰用户数据;苹果与亚马逊被指控合谋推高 iPhone 等产品价格|极客头条
  16. win10自带sftp服务器_FreeSSHD在Windows环境下搭建SFTP服务器
  17. 单片机中断系统(部分以AT89S52为例)
  18. java convexhull_Java GeometryEngine.convexHull方法代码示例
  19. 英语--罗塞塔学习总结
  20. [LiteratureReview]A survey of image semantics-based visual simultaneous localization and mapping....

热门文章

  1. mschart走势图 vc_VC++操作MSChart表格控件,效果不错。
  2. html中input文本框的内容不符合要求时的错误提示
  3. R语言医学数据分析实战(三)数据可视化
  4. 高性能集群解决方案系列(一)之问题初探
  5. 蛙蛙推荐:自己写个分布式监控软件玩
  6. [shell脚本]表格数据在终端上可视化输出
  7. riscv 启动流程分析
  8. 99个答辩有道的JAVA计算机毕业设计项目,新手也能轻松搞定
  9. plsql查询数据量过大问题
  10. #711 – 在拖拽的过程中改变鼠标样式(Changing the Mouse Cursor While Dragging)