1080 mooc期終成績 (25分)
現在的問題是,每次考試都產生一張獨立的成績單。本題就請你編寫程式,把不同的成績單合為一張。
列印出獲得合格證書的學生名單。每個學生佔一行,格式為:
學生學號
gp gmid−term gfinal g
如果有的成績不存在(例如某人沒參加期中考試),則在相應的位置輸出「−」。輸出順序為按照總評分數(四捨五入精確到整數)遞減。若有並列,則按學號遞增。題目保證學號沒有重複,且至少存在1個合格的學生。
6 6 7
01234 880
a1903 199
ydjh2 200
wehu8 300
dx86w 220
missing 400
ydhfu77 99
wehu8 55
ydjh2 98
dx86w 88
a1903 86
01234 39
ydhfu77 88
a1903 66
01234 58
wehu8 84
ydjh2 82
missing 99
dx86w 81
missing 400 -1 99 99
ydjh2 200 98 82 88
dx86w 220 88 81 84
wehu8 300 55 84 84
這道題,我放到了倒數第二題才來寫,當初怎麼想都不明白,現在指標終於指明白了
整體思路:
按照學號排序(qsort
)。
讀取期中考試成績。使用二分查詢(bsearch
)找到該學號的記錄並更新。找不到(返回null
)的說明沒有程式設計成績,也就無需做什麼了。
讀取期末考試成績,並計算總評。
按總評降序和學號公升序排序。
依次輸出總評60及以上的成績。
寫qsort/bsearch的比較(cmp)函式時,真的能檢驗對指標的理解程度
我狗一般的三個比較函式
int cmp_bsearch(constvoid *a, const
void *b)
int cmp_id(const
void *a, const
void *b)
int cmp_total(const
void *a, const
void *b)
那個最長的比較函式長這樣
int cmp_total(constvoid *a, const
void *b)
完整ac**:
#define _crt_secure_no_warnings#include#include
#include
#define max_size 10000typedef
struct
score;
int cmp_bsearch(const
void *a, const
void *b)
int cmp_id(const
void *a, const
void *b)
int cmp_total(const
void *a, const
void *b)
int main(void
), *s = buf; //
避免移動結構體
scanf("
%d %d %d
", &p, &m, &n);
for (int i = 0; i < p; i++)
}//接下去的輸入需要匹配id在這裡排個序,便於bsearch
qsort(scores, count, sizeof(scores[0
]), cmp_id);
void *result; //
void的指標指向null,可以指向任何型別
for (int i = 0; i < m; i++)
}for (int i = 0; i < n; i++)
else}}
//按總分排序
qsort(scores, count, sizeof(scores[0
]), cmp_total);
for (score **p = scores; *p && (*p)->total_mark >= 60; p++)
return0;
}
pat不易,諸君共勉!
1080 MOOC期終成績
最後乙個測試點 6分 如果有的成績不存在 例如某人沒參加期中考試 則在相應的位置輸出 1 如果有的成績為0,則相應的位置應該輸出的是 0 注意不要也輸出成 1 了 額外輸入樣例 2 2 2 aaa 0 bbb 200 aaa 0 bbb 0 aaa 0 bbb 60 正確的輸出樣例 bbb 200 ...
PAT 1080 MOOC期終成績
g g mi d te rm 40 g fi nal 60 g g mi d te rm 40 g fi nal 60 如果g mid term gf inal g m id t er m gf inal 否則總評 g 就是 gf inal g fi na l。這裡 gm id t erm gmi ...
PAT 1080 MOOC期終成績
現在的問題是,每次考試都產生一張獨立的成績單。本題就請你編寫程式,把不同的成績單合為一張。列印出獲得合格證書的學生名單。每個學生佔一行,格式為 學生學號g p g mid term g final g 如果有的成績不存在 例如某人沒參加期中考試 則在相應的位置輸出 輸出順序為按照總評分數 四捨五入精...