題目
讀入 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 保證不為空
舉一反三
std
的 cin
只會讀到下一個空格或是換行符 $
,如果需要一次讀一行需要使用 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 協議》,轉載必須註明作者和本文連結