#include <bits/stdc++.h>
using namespace std;
/*
学生  名字 年龄  分数
      小明  4     9  
      小红  6     7
	  小鹿  8     10
	  小猫  7     8 
string s[10];	 
int age[10];
int sor[10];
下标来关联在一起  
目的就是让这三个属性 绑在一块 变成一个新整体 
*/
//关键字  自己去定义一个复合变量类型 
struct stu { //stu 他就是一个新的变量类型  属性 你想用什么就可以去定义什么  
	string name; //成员变量 属性  
	int age;
	int sor; 
	int num;
};  // 注意这个分号!这里其实也可以定义结构体的变量、数组

bool cmp(stu a,stu b){ //ab两个要排的结构体要怎么排  
	return a.age > b.age; //只按年龄大的排  
} 
//年龄大的排前面 如果年龄一样 分数高的排前面 
bool cmp1(stu a,stu b){ //ab两个要排的结构体要怎么排  
	if(a.age == b.age) {
		return a.sor>b.sor;
	}else{
		return a.age > b.age; //只按年龄大的排
	}
} 
int main(){
 //变量类型 变量名 ; 
//	stu  s; //s 他就是一个stu类型的变量  
//	cin>>s.name>>s.age>>s.sor; //.就是的  s的名字 s的年龄  
//	cout << s.sor<<" "<<s.age<<" "<<s.name;
	stu arr[15]; //数组里的每一个元素 都是一个学生变量 arr[1]下标为1的学生 
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>arr[i].name>>arr[i].age>>arr[i].sor; //通过数组输入 
		arr[i].num = i;
	}
	//结构体数组是可以排序的 但是注意 结构体排序必须给cmp函数 必须告诉他该怎么排 
	sort(arr+1,arr+1+n,cmp1); //按年龄从大到小排序 
	for(int i=1;i<=n;i++){
		cout << arr[i].name<<" "<<arr[i].age<<" "<<arr[i].sor<<endl; 
	}
	return 0;
}

0 条评论

目前还没有评论...

信息

ID
243
时间
1000ms
内存
256MiB
难度
6
标签
递交数
16
已通过
14
上传者