其实这个题吧,就是发出来玩玩,会用sort就很easy了,有一个小小的知识点:比较字符串字典序的大小用strcmp函数。

strcmp(a,b)<0说明a的字典序小于b的字典序。

上题:

Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有 N
行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。
Output 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
Sample Input
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
0 0

Sample Output

Case 1:
000001 Zoe 60
000007 James 85
000010 Amy 90
Case 2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
Case 3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90

解题代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
struct student{
char name[10],num[7];
int grade; };
bool cmp1(student a,student b){
return atoi(a.num)<atoi(b.num);
}
bool cmp2(student a,student b){
if(!strcmp(a.name,b.name))
return cmp1(a,b);
return strcmp(a.name,b.name)<0;
}
bool cmp3(student a,student b){
if(a.grade==b.grade)
return cmp1(a,b);
return a.grade<b.grade;
}
int main()
{
//freopen("in.txt","r",stdin);
int n,c,t=0;
while(~scanf("%d%d",&n,&c)&&n){
t++;
student s[n];
for(int i=0;i<n;i++){
scanf("%s%s%d",s[i].num,s[i].name,&s[i].grade);
}
if(c==1) sort(s,s+n,cmp1);
else if(c==2) sort(s,s+n,cmp2);
else sort(s,s+n,cmp3);
printf("Case %d:\n",t);
for(int i=0;i<n;i++){
printf("%s %s %d\n",s[i].num,s[i].name,s[i].grade);
}
}
}

最新文章

  1. 分组找ID
  2. UItextFiled只能输入数字
  3. javascript问题积累
  4. Centos用yum升级mysql到(5.5.37)
  5. windows7设置java的环境变量
  6. myecplise 添加svn插件
  7. 01-04-03【Nhibernate (版本3.3.1.4000) 出入江湖】Criteria API关联查询
  8. bzoj 1318: [Spoj744] Longest Permutation 智商题
  9. C# 中的常用正则表达式大全
  10. linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区
  11. nginx+apache+mysql+php+memcache+squid搭建集群web环境
  12. JS原生Ajax&amp;Jquery的Ajax技术&amp;Json
  13. 【转载】假设有以下代码 String s = “hello”; 阿里巴巴笔试题
  14. Vue的计算属性,监视属性代码理解
  15. Matplotlib-动画
  16. recovery 下界面UI旋转90 180 270修改
  17. 【ZJOI2012】灾难
  18. SpringMVC(十七-二十) ModelAttribute 注解
  19. C语言----管道
  20. 如何读取R 的sumary()结果

热门文章

  1. 87)PHP,PDO的预编译技术
  2. arm linux 移植 OpenCV
  3. sftp 多用户安装与配置
  4. Day5-T3
  5. 006.Oracle数据库 , DISTINCT去掉重复项重复内容
  6. IDEA快速升级模块版本号
  7. C++学习记录——(queue的清空)
  8. cf 500 D. New Year Santa Network
  9. tools.eclipse.内存配置
  10. 029-PHP取随机数