有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。
标签:
有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。
首先输入一个整数n(1<=n<=100),表示学生人数;
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
输出排序后的成绩单,格式见输出样例。
#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; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/45247829