成绩排序
题目描述
查找和排序 :输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。
输入例子:
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;
}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号