[PAT B] 1004 成績排名

Squ1rrel發表於2019-12-23

題目

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

輸入格式:

每個測試輸入包含 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 tem 3項

注意題幹,無相同成績

注意第一層迴圈就要用tem 替換 max min 保證不為空

舉一反三

stdcin 只會讀到下一個空格或是換行符 $,如果需要一次讀一行需要使用 getline() 函式

程式碼

#include <iostream>

using namespace std;

struct student {
    string name, id;
    int score;
};

int main() {
    student tem;
    student max{"", "", 0};
    student min{"", "", 100};
    int n;
    cin >> n;
    while (n--) {
        cin >> tem.name >> tem.id >> tem.score;
        max = tem.score > max.score ? tem : max;
        min = tem.score < min.score ? tem : min;
    }
    cout << max.name << " " << max.id << "\n";
    cout << min.name << " " << min.id << endl;

    return 0;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
辛勞 篤定 輕苦 微甜 ----汪曾祺

相關文章