PAT B 1004 成績排名

2021-07-11 11:28:22 字數 1302 閱讀 9703

讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。

輸入格式:每個測試輸入包含1個測試用例,格式為

第1行:正整數n

第2行:第1個學生的姓名 學號 成績

第3行:第2個學生的姓名 學號 成績

... ... ...

第n+1行:第n個學生的姓名 學號 成績

其中姓名和學號均為不超過10個字元的字串,成績為0到100之間的乙個整數,這裡保證在一組測試用例中沒有兩個學生的成績是相同的。

輸出格式:對每個測試用例輸出2行,第1行是成績最高學生的姓名和學號,第2行是成績最低學生的姓名和學號,字串間有1空格。

輸入樣例:

3

joe math990112 89

mike cs991301 100

mary ee990830 95

輸出樣例:

mike cs991301

joe math990112

初始化建立三個結構體 ,定義三個指標,分別代表,最大(max)最小(min)和臨時儲存(p)。(tmp是交換位址用的)

本題思路是用(p)獲取輸入,然後跟(max)和(min)比較,如果(p)的分數比(max)大,或者比(min)小,則交換位址。這樣可以保證,(max)和(min)總是指向最大和最小的結構體。

為了保證(max)和(min)種的資料總是有效的,在迴圈開始前,讀取第一組資料,同時賦給(max)和(min)。

#include 

#include

int main()

stu[3], *p = stu, *min = p+1, *max = p+2, *tmp;

scanf("%d", &n);

scanf("%s %s %d", max->name, max->num, &max->score);

memcpy(min, max, sizeof(stu[0])); // 第一組資料同時賦值給 max 和 min

for (int i = 1; i < n; i++)

printf("%s %s\n", max->name, max->num);

printf("%s %s", min->name, min->num);

return

0;}

點這裡進入試題網頁

PAT B 1004 成績排名

讀入n名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。輸入格式 每個測試輸入包含1個測試用例,格式為 第1行 正整數n 第2行 第1個學生的姓名 學號 成績 第3行 第2個學生的姓名 學號 成績 第n 1行 第n個學生的姓名 學號 成績 其中姓名和學號均為不超過10個字元的字串...

PAT B1004 成績排名

1004 成績排名 20 分 讀入 n 0 名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。每個測試輸入包含 1 個測試用例,格式為 第 1 行 正整數 n 第 2 行 第 1 個學生的姓名 學號 成績 第 3 行 第 2 個學生的姓名 學號 成績 第 n 1 行 第 n 個學...

PAT B 1004 成績排名

1004 成績排名 20 分 讀入 n 0 名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。每個測試輸入包含 1 個測試用例,格式為 第 1 行 正整數 n 第 2 行 第 1 個學生的姓名 學號 成績 第 3 行 第 2 個學生的姓名 學號 成績 第 n 1 行 第 n 個學...