PAT 乙級 1004.成績排名 C++/Java

1004 成績排名 (20 分)

題目來源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

C++實現:

分析:

定義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 }

 

Java實現:

分析:

將輸入的樣例以空格分割爲三部分,比較第三部分[即成績]的大小,最後輸出該項的所有信息。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 }
相關文章
相關標籤/搜索