PAT乙級1004

1004 成績排名 (20分)

題目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448ios

讀入 n(>0)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。c++

輸入格式:

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

第 1 行:正整數 n
第 2 行:第 1 個學生的姓名 學號 成績
第 3 行:第 2 個學生的姓名 學號 成績
  ... ... ...
第 n+1 行:第 n 個學生的姓名 學號 成績

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

輸出格式:

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

輸入樣例

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

輸出樣例

Mike CS991301
Joe Math990112

個人理解

思路簡單,構建學生結構體,循環輸入記錄數據,遍歷找到成績最低和最高的學生記錄。ci

代碼段

#include<iostream>
using namespace std;
struct Student{
    string name;
    string studentId;
    short score;
};
int main() {
    int studentNumber = 0;
    cin >> studentNumber;
    Student students[studentNumber];
    for (int i = 0; i < studentNumber; i++) {
        students[i] = Student();
        cin >> students[i].name >> students[i].studentId >> students[i].score;
    }
    int minScore = 101;
    int maxScore = -1;
    int minStudentIndex = -1;
    int maxStudentIndex = -1;
    for (int i = 0; i < studentNumber; i++) {
        if (students[i].score > maxScore) {
            maxScore = students[i].score;
            maxStudentIndex = i;
        }
        if (students[i].score < minScore) {
            minScore = students[i].score;
            minStudentIndex = i;
        }
    }
    cout << students[maxStudentIndex].name << ' ' << students[maxStudentIndex].studentId << endl;
    cout << students[minStudentIndex].name << ' ' << students[minStudentIndex].studentId << endl;
    return 0;
}
相關文章
相關標籤/搜索