PTA 1015 德才论(C语言实现)

Explanation

此题关键在于qsort()函数的应用.
可供参考(qsort函数分析):

https://blog.csdn.net/yzl_rex/article/details/7874513
https://blog.csdn.net/qq_38851937/article/details/89260263

Code

#include 
#include   //使用qsort()需要引入的STL(Standard Template Library)头文件
#define Max 100000typedef struct grade{int num;int de;int cai;
}stu;int cmp(const void *a, const void *b);
void printType(stu s[], int j);int main(int argc, char *argv[]) {int N,L,H;int i,i1,i2,i3,i4;i1=i2=i3=i4=0;stu s, type01[Max], type02[Max], type03[Max], type04[Max]; scanf("%d %d %d", &N,&L,&H);for(i=0; i<N; i++){scanf("%d %d %d", &s.num, &s.de, &s.cai);if(s.de>=L && s.cai>=L){if(s.de>=H && s.cai>=H)//才德全尽type01[i1++]=s;		else if(s.de>=H)//德胜才type02[i2++]=s;else if(s.de>=s.cai) // 尚有“德胜才”type03[i3++]=s;else//其他 	type04[i4++]=s;	} }qsort(type01,i1,sizeof(stu),cmp); qsort(type02,i2,sizeof(stu),cmp);qsort(type03,i3,sizeof(stu),cmp);qsort(type04,i4,sizeof(stu),cmp);printf("%d\n", i1+i2+i3+i4);printType(type01, i1);printType(type02, i2);printType(type03, i3);printType(type04, i4);return 0;
}int cmp(const void *a, const void *b)
{stu *s1, *s2;int sum1, sum2;s1 = (stu *)a;s2 = (stu *)b;sum1 = s1->de + s1->cai;sum2 = s2->de + s2->cai;//考生按输入中说明的规则从高到低排序。//当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。if(sum1 != sum2) return sum2-sum1;else if(s1->de != s2->de) return s2->de-s1->de;else return s1->num-s2->num;
}void printType(stu s[], int j)
{int i;for(i=0; i<j; i++)printf("%d %d %d\n", s[i].num, s[i].de, s[i].cai);
} 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部