输入:
3
1 90
2 87
3 92

输出:
2 87
1 90
3 92

用一维数组存储学号和成绩,这里用到了结构体 。关于结构体的定义如下:

//结构体定义
struct student
{
	//成员列表
	string name;  //姓名
	int age;      //年龄
	int score;    //分数
}stu1; //结构体变量创建方式1


int main() {
    stu1.name = "王五";
	stu1.age = 18;
	stu1.score = 80;

    cout << "姓名:" << stu1.name << " 年龄:" << stu1.age  << " 分数:" << stu1.score << endl;

	//结构体变量创建方式2
	struct student stu2; //struct 关键字可以省略

	stu2.name = "张三";
	stu2.age = 18;
	stu2.score = 100;
	
	cout << "姓名:" << stu2.name << " 年龄:" << stu2.age  << " 分数:" << stu2.score << endl;

	//结构体变量创建方式3
	struct student stu3 = { "李四",19,60 };

	cout << "姓名:" << stu3.name << " 年龄:" << stu3.age  << " 分数:" << stu3.score << endl;

	return 0;
}

题解(完整代码):

#include<iostream>
#include<algorithm>
using namespace std;

struct student{
	int id;
	int grade;
}stu;

student array[100];

bool compare(student x,student y){
	if(x.grade==y.grade){
		return x.id<y.id;
	}
	else{
		return x.grade<y.grade;
	}
}

int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>array[i].id>>array[i].grade;
	}
	sort(array,array+n,compare);
	for(int i=0;i<n;i++){
		cout<<array[i].id<<" "<<array[i].grade<<endl;
	}
}

关于C++函数库中的 sort 算法,该函数在 # include <algorithm> 中,有三个参数:

①要排序的数组的起始地址;

②结束的地址;

③排序的方法,如果不写第三个参数则表示默认从小到大排序。

具体使用方法如下:

#include<iostream>
#include<algorithm>
using namespace std;

int main(){
    //sort函数第三个参数采用默认从小到大排序
    int array[]={45,12,34,78,90,13,26,38,59,63};
    sort(array,array+10);
    for(int i=0;i<10;i++){
        cout<<a[i]<<" ";
    }
}
#include<iostream>
#include<algorithm>
using namespace std;

int cmpare(int a,int b){
	return a>b;
}

int main(){
    //sort函数第三个参数自己定义实现从大到小排序
	int array[]={45,12,34,78,90,13,26,38,59,63};
	sort(array,array+10,cmpare);
	for(int i=0;i<10;i++){
		cout<<array[i]<<" ";	
	}
}

版权声明:本文为AprRain原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/AprRain/article/details/121315555