PAT之成績排名(B)

2021-07-22 16:00:39 字數 1539 閱讀 3223

題目描述

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

輸入描述:

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

第1行:正整數n

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

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

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

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

輸出描述:

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

輸入例子:

joe math990112 89

mike cs991301 100

mary ee990830 95

輸出例子:

mike cs991301

joe math990112

(題目來自牛客網pat乙級練習題1036,由小小上傳)

我的想法:

題目要求儲存兩組資料,乙個是最大的,乙個是最小的。我們還需要另乙個來儲存當前的輸入。所以我們一共需要三組資料空間,每組資料都是三個元素「名字,學號,成績」,我們可以用結構體來做,這裡比較簡單,我就直接用了9個變數。第一次輸入的值我們把它即當成最大,也當成最小(因為只有乙個啊),之後的輸入,再大的覆蓋大的,小的覆蓋小的。就有了下面:

#include

#include

using

namespace

std;

int main()else

if(score_tcout

<' '

<' '

0;}

上面程式8552kb記憶體,牛客網c語言最優解是8452kb。還真是湊巧,和我整整差了100kb,看起來我的路途還很遙遠啊。下面貼乙個8452kb的**,來自 「uncle_sugar」

# include

# include

using

namespace

std;

struct stu

void print()

};int main()

else

if (temp.grade>max.grade)

max = temp;

else

if (temp.grade**不同,但原理差不多的,我更想弄明白,為什麼他的記憶體占用會少這麼多,望高人賜教。

PAT乙級 成績排名

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

PAT考試乙級1004之成績排名

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

PAT乙級考試記錄之成績排名

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