題目來源html
讀入 n(>)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。java
每一個測試輸入包含 1 個測試用例,格式爲ios
第 1 行:正整數 n 第 2 行:第 1 個學生的姓名 學號 成績 第 3 行:第 2 個學生的姓名 學號 成績 ... ... ... 第 n+1 行:第 n 個學生的姓名 學號 成績
其中姓名
和學號
均爲不超過 10 個字符的字符串,成績爲 0 到 100 之間的一個整數,這裏保證在一組測試用例中沒有兩個學生的成績是相同的。測試
對每一個測試用例輸出 2 行,第 1 行是成績最高學生的姓名和學號,第 2 行是成績最低學生的姓名和學號,字符串間有 1 空格。spa
3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95
Mike CS991301 Joe Math990112
定義Student結構體保存學生姓名,學號,分數,比較分數找到最大最小的就好了code
1 #include <iostream> 2 using namespace std; 3 4 typedef struct Student 5 { 6 string name; 7 string number; 8 unsigned int score; 9 }Student; 10 11 int main() 12 { 13 int n; 14 cin >> n; 15 Student *stu = new Student[n]; 16 Student max, min; 17 18 for (int i = 0; i < n; ++i) 19 { 20 cin >> stu[i].name >> stu[i].number >> stu[i].score; 21 } 22 max = stu[0]; 23 min = stu[0]; 24 for (int i = 1; i < n; ++i) 25 { 26 if (stu[i].score > max.score) 27 { 28 max = stu[i]; 29 continue; 30 } 31 if (stu[i].score < min.score) 32 { 33 min = stu[i]; 34 } 35 36 } 37 cout << max.name << " " << max.number << endl; 38 cout << min.name << " " << min.number; 39 delete[] stu; 40 return 0; 41 }
將輸入的樣例以空格分割爲三部分,比較第三部分[即成績]的大小,最後輸出該項的所有信息。htm
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int n = input.nextInt(); 7 input.nextLine(); 8 String[][] data = new String[n][3]; 9 int[] score = new int [n]; 10 for(int i = 0; i < n; i++){ 11 String s = input.nextLine(); 12 data[i] = s.split("\\s+"); 13 score[i] = Integer.parseInt(data[i][2]); 14 } 15 int max = 0; 16 int min = 0; 17 for(int i = 1; i < n; i++){ 18 if(score[i] > score[max]){ 19 max = i; 20 } 21 if(score[i] < score[min]){ 22 min = i; 23 } 24 } 25 System.out.println(data[max][0] + " " + data[max][1]); 26 System.out.println(data[min][0] + " " + data[min][1]); 27 } 28 }