#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct de{
int zhun;
int de;
int cai;
int lei;//分类,如德才兼备为1,都不及格为5
int sum;//德才总分
};
int cmp(struct de *a,struct de *b)
{//快速排序
if(a->lei < b->lei) return -1;
else if(a->lei == b->lei&&a->sum > b->sum) return -1;
else if(a->lei == b->lei&&a->sum == b->sum&&a->de > b->de) return -1;
else if(a->lei == b->lei&&a->sum == b->sum&&a->de == b->de&&a->zhun < b->zhun) return -1;
else return 1;
}
int main(){
int n,l,h;
scanf("%d%d%d",&n,&l,&h);
int i,no=0;
struct de a[n];
for(i=0;i<n;i++)
{
scanf("%d%d%d",&a[i].zhun,&a[i].de,&a[i].cai);
if(a[i].de>=h&&a[i].cai>=h) {a[i].lei=1;a[i].sum=a[i].de+a[i].cai;}
else if(a[i].de<l||a[i].cai<l) {a[i].lei=5;a[i].sum=0;no++;}
else if(a[i].de>=h&&a[i].cai<h) {a[i].lei=2;a[i].sum=a[i].de+a[i].cai;}
else if(a[i].de<h&&a[i].cai<h&&a[i].de>=a[i].cai) {a[i].lei=3;a[i].sum=a[i].de+a[i].cai;}
else {a[i].lei=4;a[i].sum=a[i].de+a[i].cai;}
}
qsort(a,n,sizeof(struct de),cmp);
if(n-no!=0){
printf("%d\n",n-no);
for(i=0;i<n-no-1;i++)
printf("%d %d %d\n",a[i].zhun,a[i].de,a[i].cai);
printf("%d %d %d",a[i].zhun,a[i].de,a[i].cai);
}
else printf("0");
return 0;
}
本文介绍了一个使用C语言实现的快速排序算法,针对德才评估结构进行定制,根据德、才分数和分类标准对员工进行排序。通过比较函数实现不同条件下的元素比较,最后展示如何筛选并输出特定分类的员工成绩。
304

被折叠的 条评论
为什么被折叠?



