[PAT Basic] 1004.成绩排名

北城余情 提交于 2019-11-27 19:39:28

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

分析:

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!