问题 6333 --按绩点排序

6333: 按绩点排序★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 638  解决: 348
[提交][状态][命题人:]

题目描述

输入n组学生信息,包括姓名、绩点(双精度浮点数), 排序输出。

排序规则:

先按绩点高到低,绩点相同的情况下,按姓名的字典序从小到大。

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
using namespace std;
struct Student
{
	char name[12];
	_____(1)_____;
};
bool cmp(const Student* a1, const Student* a2)
{
	if(a1->gpa!=a2->gpa) 
		return a1->gpa>a2->gpa;
	return strcmp(a1->name,a2->name)<0;
}
void sort(Student* p, int n)
{
	for(int i=0;i<n-1;++i)
	{
		_____(2)______;
		for(int j=i+1;j<n;++j)
			if(cmp(_____(3)_______)==true) k=j;
		Student t=p[i]; p[i]=p[k]; p[k]=t; 
	}
}
int main()
{	
	//freopen("titan2.out","w",stdout);
	int n;
	cin>>n;
	_____(4)_______;
	for(int i=0;i<n;++i)
		cin>>st[i].name>>st[i].gpa;
	_____(5)______;
	cout<<setprecision(2)<<fixed;
	for(int i=0;i<n;++i)
		cout<<left<<setw(11)<<st[i].name<<st[i].gpa<<"\n";
	delete [] st;
    return 0;
}

输入

输出

样例输入
Copy
5
ZhangSan 2.56
LiSi 3.78
WangWu 3.78
YuLiu 2.56
ChenQi 3.22
样例输出
Copy
LiSi       3.78
WangWu     3.78
ChenQi     3.22
YuLiu      2.56
ZhangSan   2.56

提示

来源

[提交][状态]