pat乙級1080C語言

2021-10-06 21:08:29 字數 2647 閱讀 3742

列印出獲得合格證書的學生名單。每個學生佔一行,格式為:

學生學號 gp gmid−term gfinal g

如果有的成績不存在(例如某人沒參加期中考試),則在相應的位置輸出「−1」。輸出順序為按照總評分數(四捨五入精確到整數)遞減。若有並列,則按學號遞增。題目保證學號沒有重複,且至少存在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

**#void *bsearch(const void *key, const void base, size_t nitems, size_t size, int (compar)(const void , const void )) key – 指向要查詢的元素的指標,型別轉換為 void。

base – 指向進行查詢的陣列的第乙個物件的指標,型別轉換為 void。

nitems – base 所指向的陣列中元素的個數。

size – 陣列中每個元素的大小,以位元組為單位。

compar – 用來比較兩個元素的函式。

首先先判斷程式設計成績是否合格,合格就用結構體儲存它的資訊,這裡期末和期中要置為-1,然後對id進行排序,然後折半查詢,如果它的期中成績有值就給他賦值,期末成績也是一樣的,最後判斷期末成績和期中成績的大小,給他的最後成績賦值,最後對成績和學號進行最後排序輸出即可

#include

#include

#include

typedef

struct

student;

//定義結構體,包含id,程式設計成績,期中成績,期末成績,總成績

intcmp1

(const

void

*a,const

void

*b)//按照id排序的比較函式

intcmp2

(const

void

*a,const

void

*b)//按照總成績和id排序的比較函式

intcmp_bsearch

(const

void

*str,

const

void

*stu)

//bsearch的比較函式

intmain()

;int itempscore=

0,icnt=

0,icntpass=0;

for(

int i=

0;i)//讀入通過程式設計考試的資料並初始化

}qsort

(student,icnt,

sizeof

(student)

,cmp1)

;//按照id快排

for(

int i=

0;i)for

(int i=

0;iqsort

(pass,icntpass,

sizeof

(pass[0]

),cmp2)

;//最終排序

for(

int i=

0;i)return0;

}

二刷

#include

#include

#include

typedef

struct

student;

intcmp

(const

void

*a,const

void

*b)else

}int

cmp_bsearch

(const

void

*str,

const

void

*stu)

//bsearch的比較函式

intmain()

//printf("**********==\n");

qsort

(s,p,

sizeof

(student)

,cmp)

;for

(int i=

0;i)for

(int i=

0;i)for

(int i=

0;i)else}}

qsort

(s,p,

sizeof

(student)

,cmp)

;for

(int i=

0;i}

PAT乙級1080 C 龍哥哥的刷題路

輸出格式 列印出獲得合格證書的學生名單。每個學生佔一行,格式為 學生學號 g p g mid term gfinal g 如果有的成績不存在 例如某人沒參加期中考試 則在相應的位置輸出 1 輸出順序為按照總評分數 四捨五入精確到整數 遞減。若有並列,則按學號遞增。題目保證學號沒有重複,且至少存在1個...

PAT乙級 1080 MOOC期終成績

列印出獲得合格證書的學生名單。每個學生佔一行,格式為 學生學號 gp g mid term gfinal g 如果有的成績不存在 例如某人沒參加期中考試 則在相應的位置輸出 1 輸出順序為按照總評分數 四捨五入精確到整數 遞減。若有並列,則按學號遞增。題目保證學號沒有重複,且至少存在1個合格的學生。...

PAT1016乙級c語言

正整數 a 的 da 為 1 位整數 部分 定義為由 a 中所有 da組成的新整數 pa。例如 給定 a 3862767,da 6,則 a 的 6 部分 pa是 66,因為 a 中有 2 個 6。現給定 a da b db 請編寫程式計算 pa pb。輸入格式 輸入在一行中依次給出 a da b d...