EOJ 2849 成績排序 C

2021-09-20 06:47:45 字數 1497 閱讀 8562

期中考試終於落下了帷幕,我又有時間來做oj題了【捂臉

近期一直在學資料結構,感覺好久沒做oj題了,,

比起寫資料結構,我覺得做oj題更需要技巧,然後合理使用庫函式很必要。

今天這道題一開始一直wa,以為是sort或stable_sort函式的問題,

最後在論壇大佬指點下終於找到了錯誤,是字串比較出現了問題【扶額

不管他能不能看到,在這裡,一定要感謝那位老哥,一針見血指出我的問題~

- 出錯點:

庫里的sort函式是不穩定的排序。(所以sort兩遍行不通)

兩種解決方法:①改寫cmp函式,使之可以二級排序;②用兩遍stable_sort

用字元陣列存的學號,在比較時直接用 < 來比。

解決方法:使用庫函式 strcmp 來比較學號大小(字典序)。

成績排序

單點時限: 2.0 sec

記憶體限制: 256 mb

有 n(1⩽n⩽100)個學生的成績記錄,其中包含學號和成績兩項。

按照成績從高到低順序輸出成績及格(⩾60)學生的學號和成績。成績相同時按照學號從小到大順序輸出。

輸入格式

第 1 行:輸入乙個整數 n,表示學生記錄數。

第 2 行 ~ n+1 行:每行是學號(11 位數字)及成績(0 到 100 之間的整數)。學號和成績之間有乙個空格。

輸出格式

按要求輸出結果,每行輸出乙個空格分隔的學號及成績。

樣例input

510002130201 90

10002130230 80

10002130231 85

10002130148 48

10002130167 90

output

10002130167 90

10002130201 90

10002130231 85

10002130230 80

#include

#include

#include

using namespace std;

struct student

;bool cmp

(student stu1, student stu2)

else

return

false;}

int main()

sort

(stu,stu+n,cmp)

;for

(i=0

;i)}

看看這「輝煌」的戰績【捂臉

其實也沒啥感受,就感覺自己挺菜的,然後做題還挺爽的。

emm,還有,找到問題,解決問題的感覺真好~

——2019.4.29 23點34分 於寢室

68 成績排序

題目描述 查詢和排序 題目 輸入任意 使用者,成績 序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。例示 jack 70 peter 96 tom 70 smith 67 從高到低 成績 peter 96 jack 70 tom 70 smith 67 從低到高 ...

1178 成績排序

問題描述 給出班裡某門課程的成績單,請你按成績從高到低對成績單排序輸出,如果有相同分數則名字字典序小的在前。輸入 第一行為n 0 n 20 表示班裡的學生數目 接下來的n行,每行為每個學生的名字和他的成績,中間用單個空格隔開。名字只包含字母且長度不超過20,成績為乙個不大於100的非負整數。輸出 把...

1178 成績排序

問題描述 給出班裡某門課程的成績單,請你按成績從高到低對成績單排序輸出,如果有相同分數則名字字典序小的在前。輸入 第一行為n 0 n 20 表示班裡的學生數目 接下來的n行,每行為每個學生的名字和他的成績,中間用單個空格隔開。名字只包含字母且長度不超過20,成績為乙個不大於100的非負整數。輸出 把...