2007NOIP普及组排序结构体知识点题目:奖学金

arkfactor 算法基础篇 67 0
想要成为编程高手?那就来试试全网最全C++题库,让您在练习中快速成长。
stable_sort()为静态排序函数#include

题解:此题按照结构体的排序方法,自定义排序方法,先按学号排序,可使得按语文成绩排序时若语文成绩相同,学号仍然按照从小到大的顺序排列,按总成绩排序若相同时,也会继续按照之前的顺序。

结构体排序方法如下:

struct stu{
        int num;    //学号
        int Chi;    //语文成绩
        int math;
        int Eng;
        int sum;    //成绩总和
};
 
//comp1为sort函数的排序规则,作为sort函数的第三个参数
//"<"为升序排列,">"为降序排列
bool comp1(stu s1,stu s2)   //按总分降序
{
    return s1.sum>s2.sum;
}
 
stable_sort()为静态排序函数


 2007NOIP普及组排序结构体知识点题目:奖学金-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
#include<bits/stdc++.h>
using namespace std;
//定义结构体表示学生的信息
struct stu{
        int num;    //学号
        int Chi;    //语文成绩
        int math;
        int Eng;
        int sum;    //成绩总和
    };
 
bool comp1(stu s1,stu s2)   //按总分降序
{
    return s1.sum>s2.sum;
}
 
bool comp2(stu s1,stu s2)   //按语文成绩降序
{
    return s1.Chi>s2.Chi;
}
 
bool comp3(stu s1,stu s2)   //按学号升序
{
    return s1.num<s2.num;
}
 
int main()
{
    int n;
    cin>>n;
    stu a[n];
    for(int i=0;i<n;i++)
    {
        a[i].num = i+1;
        cin>>a[i].Chi>>a[i].Eng>>a[i].math;
        a[i].sum = a[i].Chi+a[i].Eng+a[i].math;
    }
    //稳定排序,先按学号排序,再按语文成绩排序,最后按总成绩排名
    stable_sort(a,a+n,comp3);
    stable_sort(a,a+n,comp2);
    stable_sort(a,a+n,comp1);
    for(int i=0;i<5;i++)
    {
        cout<<a[i].num<<' '<<a[i].sum<<endl;
    }
    return 0;
}


 2007NOIP普及组排序结构体知识点题目:奖学金-第2张图片-东莞河马信息技术

(图片来源网络,侵删)


#includeusing namespace std;
struct sadbee
{
	int yu; 
	int shu; 
	int ying;
	int z;
	int x;
}a[10001];
int main()
{
	int n,i,j;
	cin>>n;
	for(i=1;i>a[i].yu>>a[i].shu>>a[i].ying;
		a[i].z=a[i].yu+a[i].shu+a[i].ying;
		a[i].x=i;
	}
	for(i=1;ia[j].x)
			{
				swap(a[i],a[j]);
			}
		}
	}
	

	for(i=1;i

标签: int函数