总成绩排序
1194: 总成绩排序(结构体专题)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 954 Solved: 524
SubmitStatusWeb Board
Description
有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。
Input
首先输入一个整数n(1<=n<=100),表示学生人数;
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
Output
输出排序后的成绩单,格式见输出样例。
Sample Input
Sample Output
HINT
Source
#include<iostream> #include<stdio.h> #include<string> #include<algorithm> using namespace std; struct student { char sno[13]; string name; int grade[3]; int sum; }; int cmp(student a,student b) { if(a.sum!=b.sum) return a.sum>b.sum;//降序 else { return a.name<b.name;//升序 } } int main() { int n,i; student a[100]; while(~scanf("%d",&n)) { for(i=0;i<n;i++) { cin>>a[i].sno>>a[i].name>>a[i].grade[0]>>a[i].grade[1]>>a[i].grade[2]; a[i].sum=a[i].grade[0]+a[i].grade[1]+a[i].grade[2]; } sort(a,a+n,cmp); for(i=0;i<n;i++) { cout<<a[i].sno<<" "<<a[i].name<<" "<<a[i].grade[0]<<" "<<a[i].grade[1]<<" "<<a[i].grade[2]<<" "<<a[i].sum<<endl; } } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。