首页 > 学院 > 开发设计 > 正文

PAT-A 1028. List Sorting (25)

2019-11-06 08:57:34
字体:
来源:转载
供稿:网友

题目链接在此。

题意

给出N条学学生信息,学生信息包含三项信息(学号、姓名、分数),之后给出一个整数C,按照C的情况进行如下排序:

C==1,按照学号排升序C==2,按照姓名排升序C==3,按照分数排升序 如果姓名和分数相同,按学号从小到大排序。

AC代码

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;struct INFO{ int id; char name[9]; int grade;}stu[100001];//cmp for C=1bool cmp1(INFO a, INFO b){ return a.id < b.id;} //cmp for C=2bool cmp2(INFO a, INFO b){ if(strcmp(a.name, b.name) != 0) return (strcmp(a.name, b.name)<0); //name作比较时注意用strcmp函数,不能直接== ,否则有一组数据过不了 else return a.id < b.id; }//cmp for C=3bool cmp3(INFO a, INFO b){ if(a.grade != b.grade) return a.grade < b.grade; else return a.id < b.id;}int main(){ int N,C; scanf("%d %d",&N,&C); for(int i = 0 ; i < N; i++){ scanf("%d %s %d",&stu[i].id,&stu[i].name,&stu[i].grade); } switch(C){ case 1: { sort(stu,stu+N,cmp1); break; } case 2:{ sort(stu,stu+N,cmp2); break; } case 3:{ sort(stu,stu+N,cmp3); break; } } for(int i = 0; i < N; i++){ PRintf("%06d %s %d/n",stu[i].id,stu[i].name,stu[i].grade); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表