C語言中使用系統自帶的快排函式

2022-04-15 07:10:57 字數 2357 閱讀 2910

題目

1015. 德才論 (25

)宋代史學家司馬光在《資治通鑑》中有一段著名的「德才論」:「是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,苟不得聖人,君子而與之,與其得小人,不若得愚人。」

現給出一批考生的德才分數,請根據司馬光的理論給出錄取排名。

輸入格式:

輸入第1行給出3個正整數,分別為:n(

<=105),即考生總數;l(>=60),為錄取最低分數線,即德分和才分均不低於l的考生才有資格被考慮錄取;h(<100

),為優先錄取線——德分和才分均不低於此線的被定義為「才德全盡」,此類考生按德才總分從高到低排序;才分不到但德分到線的一類考生屬於「德勝才」,也按總分排序,但排在第一類考生之後;德才分均低於h,但是德分不低於才分的考生屬於「才德兼亡」但尚有「德勝才」者,按總分排序,但排在第二類考生之後;其他達到最低線l的考生也按總分排序,但排在第三類考生之後。

隨後n行,每行給出一位考生的資訊,包括:准考證號、德分、才分,其中准考證號為8位整數,德才分為區間[

0, 100

]內的整數。數字間以空格分隔。

輸出格式:

輸出第1行首先給出達到最低分數線的考生人數m,隨後m行,每行按照輸入格式輸出一位考生的資訊,考生按輸入中說明的規則從高到低排序。當某類考生中有多人總分相同時,按其德分降序排列;若德分也並列,則按准考證號的公升序輸出。

輸入樣例:

1460

8010000001

6490

10000002

9060

10000011

8580

10000003

8580

10000004

8085

10000005

8277

10000006

8376

10000007

9078

10000008

7579

10000009

5990

10000010

8845

10000012

80100

10000013

9099

10000014

6660

輸出樣例:

1210000013

9099

10000012

80100

10000003

8580

10000011

8580

10000004

8085

10000007

9078

10000006

8376

10000005

8277

10000002

9060

10000014

6660

10000008

7579

10000001

6490

這裡使用了多字段排序,呼叫系統自帶的快速排序最為合適,需要實現自己的cmp函式。

#include #include 

#include

typedef

struct

student;

int comp(const

void *a, const

void *b)

intmain()

}qsort(p1,n1,

sizeof

(student),comp);

qsort(p2,n2,

sizeof

(student),comp);

qsort(p3,n3,

sizeof

(student),comp);

qsort(p4,n4,

sizeof

(student),comp);

printf(

"%d\n

",n1+n2+n3+n4);

for(i=0;i)

printf(

"%d %d %d\n

",p1[i].num,p1[i].d,p1[i].c);

for(i=0;i)

printf(

"%d %d %d\n

",p2[i].num,p2[i].d,p2[i].c);

for(i=0;i)

printf(

"%d %d %d\n

",p3[i].num,p3[i].d,p3[i].c);

for(i=0;i)

printf(

"%d %d %d\n

",p4[i].num,p4[i].d,p4[i].c);

return0;

}

c語言中使用自帶的qsort(結構體排序) 快排

c中沒有自帶的sort函式emm 不過有自帶的qsort函式 其實用法都差不多 只是我經常以為c中有sort 標頭檔案要用 1 include 一定要重新把指標指向的值賦值給乙個node型別,不然比較不了 1 struct nodea n 45 int cmp const void x,const ...

c語言中使用自帶的qsort(結構體排序) 快排

c中沒有自帶的sort函式emm 不過有自帶的qsort函式 其實用法都差不多 只是我經常以為c中有sort 標頭檔案要用 1 include 一定要重新把指標指向的值賦值給乙個node型別,不然比較不了 1 struct nodea n 45 int cmp const void x,const ...

C語言快排函式qsort

原本以為c語言中的快排函式都要靠自己去實現,今天才知道,原來qsort就是c語言中的快排函式,包含在stdlib.h標頭檔案中,函式一共有四個引數,沒有返回值。int cmp const void const void qsort s,n,sizeof s 0 cmp 其中第乙個引數s是乙個位址,即...