福大OJ 多關鍵字排序和排名

2021-09-02 23:20:23 字數 2449 閱讀 9132

下面是某一屆學生在oj系統某一時刻的完成情況統計(學生總數不超過170人):

學號 姓名 解題數目 提交次數

222200221 高豔紅 77 124

222200116 吳志贇 80 90

222200240 高一鑫 80 173

222200111 唐煥翔 81 157

學號用字串存放(長度為9),姓名最多5個漢字,0<=解題數目、提交次數<100000。

現要求程式設計完成下述功能:

(1)讀入學生總數和這些學生的學號、姓名、解題數目、提交次數資訊(假定資料都滿足前面的規定);

(2)為每個學生自動計算其"正確比例"(保留2位小數,第3位小數四捨五入);

(3)先按"解題數目",再按"正確比例"從高到低排序,如果它們都相同,就按"學號"從小到大排序;

(4)輸出上述完整的oj系統完成情況統計表。

如果"解題數目"和"正確比例"都相同,則名次並列。並列規則:有2個第1名,則第3個人的名次為第3名。

輸出格式規定:名次4位左對齊,學號9+3位左對齊,姓名10+1位左對齊,解題數目和提交次數6位右對齊,正確比例8位2位小數右對齊。

第1行為學生總數 第2行開始,每行為1個學生的學號、姓名、解題數目、提交次數(均用空格分開)

已經按題目要求排序後的oj系統完成情況統計表。 每行為1個學生的排名、學號、姓名、解題數目、提交次數、正確比例

13222200221 高豔紅 77 124

222200116 吳志贇 80 90

222200201 翁詩寧 80 147

222200127 王建洲 80 128

222200128 曾榮流 80 332

222200125 張明星 80 128

222200203 李長泉 80 110

222200212 胡武揚 80 154

222200219 張華榮 80 198

222200227 劉成斌 80 117

222200240 高一鑫 80 173

222200101 流葉笛 81 150

222200111 唐煥翔 81 157

1 222200101 流葉笛 81 150 54.00%

2 222200111 唐煥翔 81 157 51.59%

3 222200116 吳志贇 80 90 88.89%

4 222200203 李長泉 80 110 72.73%

5 222200227 劉成斌 80 117 68.38%

6 222200125 張明星 80 128 62.50%

6 222200127 王建洲 80 128 62.50%

8 222200201 翁詩寧 80 147 54.42%

9 222200212 胡武揚 80 154 51.95%

10 222200240 高一鑫 80 173 46.24%

11 222200219 張華榮 80 198 40.40%

12 222200128 曾榮流 80 332 24.10%

13 222200221 高豔紅 77 124 62.10%

嚴格按要求的格式輸出。

#include

#include

#include

struct student

;int

cmp(

const

void

* a,

const

void

* b)

//結構體排序函式,小於0則說明第乙個減數小

else

return c1->submitnum-c2->submitnum;

}else

return c2->solvenum-c1->solvenum;

}struct student se[

175]

;//軟體工程系學生總人數

intmain

(void

)qsort

(se+

1,n,

sizeof

(se[0]

),cmp)

;for

(int i=

1;i<=n;i++

) pastsolvenum=se[i]

.solvenum;

pastsubmitnum=se[i]

.submitnum;

printf

("%-4d%-12s%-11s%6d%6d%8.2f%%"

,ranking,se[i]

.stunum,se[i]

.stuname,se[i]

.solvenum,se[i]

.submitnum,se[i]

.acceptrate);if

(i!=n)

printf

("\n");

}return0;

}

lintcode多關鍵字排序

給定 n 個學生的學號 從 1 到 n 編號 以及他們的考試成績,表示為 學號,考試成績 請將這些學生按考試成績降序排序,若考試成績相同,則按學號公升序排序。使用sort方法,先對item0排序,再對item1排序,優先順序越高的排序越後做 class solution param array th...

成績排序 多關鍵字

題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入描述 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出描述 按照學生的成績從小到大進行排序,並將排序後的學生資訊列印出來。如果學生的成績相同,則按照學號的大小...

多關鍵字排序。c

多關鍵字排序 乙個長方形有長和寬,分別設為 a 和 b,現在想對一些長方形進行排序。有一種新的排序方法。如下 我們按照兩個長方形的a b值來對他們按降序排序,如果有重複,按照b值公升序排序,如果還有重複,按照輸入的順序排序。也就是說,是多關鍵字排序 第1關鍵字,a b,降序 第2關鍵字,b,公升序 ...