首页 > 其他 > 详细

1004 成绩排名 (20 分)

时间:2019-07-04 19:52:51      阅读:106      评论:0      收藏:0      [点我收藏+]

题目:

读入 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

题目没说明n的限制是多少,原本想用vector容器让其自行调整的,结果使用失败了,那就先不用vector过掉再说。

  • 至于数据存储,用结构体就好了,整体思路很简单,就不多说。

代码:

 1 #include <iostream>
 2 #include <string>
 3 #define MAXN 1e8
 4 using namespace std;
 5 
 6 struct student{
 7     string name;
 8     string number;
 9     int grade;
10 }stu[150];
11 
12 int main()
13 {
14     int n;
15     cin >> n;
16     for(int i = 0; i < n; i++)
17     {
18         cin >> stu[i].name >> stu[i].number >> stu[i].grade;
19     }
20     int max = 0, min = MAXN;
21     int maxstu, minstu;        //用来标记成绩最高和最低的学生
22     for(int i = 0; i < n; i++)
23     {
24         if(stu[i].grade > max)
25         {
26             max = stu[i].grade;
27             maxstu = i;
28         }            
29         if(stu[i].grade < min)
30         {
31             min = stu[i].grade;
32             minstu = i;
33         }            
34     }
35     cout << stu[maxstu].name << " " << stu[maxstu].number << endl;
36     cout << stu[minstu].name << " " << stu[minstu].number << endl;
37     return 0;
38 }

 

注释:

  • 刚开始用的stu[100]去试,有一个案例标明是段错误,于是猜是太小了,便放到150,就过了。
  • 出于好奇,又试了试这组测试用例的上限个数,发现竟是101……

 

1004 成绩排名 (20 分)

原文:https://www.cnblogs.com/Anber82/p/11134160.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!