PAT 乙级 1004.成绩排名 C++/Java

1004 成绩排名 (20 分)

题目来源

读入 n(>)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:

每个测试输入包含 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

C++实现:

分析:

定义Student结构体保存学生姓名,学号,分数,比较分数找到最大最小的就行了

 

 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实现:

分析:

将输入的样例以空格分割为三部分,比较第三部分[即成绩]的大小,最后输出该项的全部信息。

 

 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 }

 

posted @ 2019-08-18 23:51  47的菠萝~  阅读(226)  评论(0编辑  收藏  举报