讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。初始化建立三個結構體 ,定義三個指標,分別代表,最大(max)最小(min)和臨時儲存(p)。(tmp是交換位址用的)輸入格式:每個測試輸入包含1個測試用例,格式為
其中姓名和學號均為不超過10個字元的字串,成績為0到100之間的乙個整數,這裡保證在一組測試用例中沒有兩個學生的成績是相同的。第1行:正整數n
第2行:第1個學生的姓名 學號 成績
第3行:第2個學生的姓名 學號 成績
... ... ...
第n+1行:第n個學生的姓名 學號 成績
輸出格式:對每個測試用例輸出2行,第1行是成績最高學生的姓名和學號,第2行是成績最低學生的姓名和學號,字串間有1空格。
輸入樣例:
輸出樣例:3
joe math990112 89
mike cs991301 100
mary ee990830 95
mike cs991301
joe math990112
本題思路是用(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 個學...