我的PAT系列文章更新重心已移至Github柒爵,歡迎來看PAT題解的小伙伴請到Github Pages瀏覽最新內容。此處文章目前已更新至與Github Pages同步唆貌。歡迎star我的repo熬甫。
題目
讀入 (
)名學生的姓名、學號隅肥、成績,分別輸出成績最高和成績最低學生的姓名和學號袄简。
輸入格式:
每個測試輸入包含 1 個測試用例腥放,格式為
第 1 行:正整數(shù) n
第 2 行:第 1 個學生的姓名 學號 成績
第 3 行:第 2 個學生的姓名 學號 成績
... ... ...
第 n+1 行:第 n 個學生的姓名 學號 成績
其中姓名
和學號
均為不超過 10 個字符的字符串,成績?yōu)?0 到 100 之間的一個整數(shù)绿语,這里保證在一組測試用例中沒有兩個學生的成績是相同的秃症。
輸出格式:
對每個測試用例輸出 2 行,第 1 行是成績最高學生的姓名和學號吕粹,第 2 行是成績最低學生的姓名和學號种柑,字符串間有 1 空格。
輸入樣例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
輸出樣例:
Mike CS991301
Joe Math990112
思路
只需要3組變量即可:最高匹耕、最低和當前聚请。邊讀取邊更新。
代碼實現(xiàn):
成績的最高稳其、最低初始化為-1和101良漱,這樣方便地處理了特殊情況。
代碼
最新代碼@github欢际,歡迎交流
#include <stdio.h>
#include <string.h>
int main()
{
int N;
scanf("%d", &N);
char maxname[11], minname[11], curname[11],
maxid[11], minid[11], curid[11];
int maxgrade = -1, mingrade = 101, curgrade;
for(int i = 0; i < N; i++)
{
scanf("%s %s %d", curname, curid, &curgrade);
if(curgrade > maxgrade)
{
strcpy(maxname, curname);
strcpy(maxid, curid);
maxgrade = curgrade;
}
if(curgrade < mingrade)
{
strcpy(minname, curname);
strcpy(minid, curid);
mingrade = curgrade;
}
}
printf("%s %s\n%s %s", maxname, maxid, minname, minid);
return 0;
}