成绩排序

题目描述

查找和排序 :输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。

输入例子:
3
0
fang 90
yang 50
ning 70
输出例子:
fang 90
ning 70
yang 50
struct node{
	string name;
	int score;
}a[80];
bool cmp0(node A, node B)
{
	return A.score > B.score;
}
bool cmp1(node A, node B)
{
	return A.score < B.score;
}
int main()
{
	int n,flag;
	while (cin >> n >> flag)
	{
		for (int i = 0; i < n; i++)
			cin >> a[i].name >> a[i].score;

		if (flag == 0)
			sort(a, a + n, cmp0);
		else
			sort(a, a + n, cmp1);

		for (int i = 0; i < n; i++)
			cout << a[i].name << " " << a[i].score << endl;
	}
	return 0;
}

  =========

输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
输入例子:
3
1 90
2 87
3 92
输出例子:
2 87
1 90
3 92
struct student
{
	int number;
	int score;
}a[80];

bool cmp(const student &a, const student &b)
{
	if (a.score != b.score)
		return a.score < b.score;
	else
		return a.number < b.number;
}


int main()
{ 
	int n;
	while (cin >> n)
	{
		for (int i = 0; i<n; i++)
		{
			cin >> a[i].number >> a[i].score;
		}

		sort(a, a+n, cmp);

		for (int i = 0; i < n;i++)
		{
			cout <<a[i].number << " " << a[i].score << endl;
		}
	}
	return 0;
}

  




 

posted @ 2018-07-10 20:40  道微真理  阅读(131)  评论(0)    收藏  举报