首页 > 分享 > PAT1004

PAT1004

PAT1004

最新推荐文章于 2023-03-06 11:37:33 发布

RYKK77 于 2021-07-18 11:28:40 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

输入格式:

每个测试输入包含 1 个测试用例,格式为

第 1 行:正整数 n

第 2 行:第 1 个学生的姓名 学号 成绩

第 3 行:第 2 个学生的姓名 学号 成绩

... ... ...

第 n+1 行:第 n 个学生的姓名 学号 成绩

其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:

对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

方法一(较复杂):使用map函数关联姓名、学号、分数,再同时将分数单独写入数组找出最高最低分,最后引出答案

#include <iostream>

#include <string>

#include <map>

#include <vector>

using namespace std;

int main() {

int m,k,temp;

vector <int> mark;

string s, n;

map<string, string> a;

map<int, string> b;

cin >> k;

for (int i = 0; i < k; i++) {

cin >> s;

cin >> n;

cin >> m;

a.insert(make_pair(n, s));

b.insert(make_pair(m, n));

mark.push_back(m);

}

for(int i=0;i<k;i++)

for (int j = i; j < k; j++) {

if (mark[i] < mark[j]) {

temp = mark[j];

mark[j] = mark[i];

mark[i] = temp;

}

}

cout << a[b[mark[0]]] <<" "<<b[mark[0]] << endl;

cout << a[b[mark[k-1]]] <<" "<< b[mark[k-1]] << endl;

}

方法二(推荐):使用maxname,minname,maxnum,minmum通过逐一扫描而得到最大最小的同学数据,最后打印出来

#include <iostream>

using namespace std;

int main() {

int n, max = -1, min = 101, score;

cin >> n;

string maxname, minname, maxnum, minnum, name, num;

for (int i = 0; i < n; i++) {

cin >> name >> num >> score;

if (max < score) {

max = score;

maxname = name;

maxnum = num;

}

if (min > score) {

min = score;

minname = name;

minnum = num;

}

}

cout << maxname << " " << maxnum << endl << minname << " " << minnum;

return 0;

}

网址: PAT1004 https://m.huajiangbk.com/newsview462844.html

所属分类:花卉
上一篇: 图的储存
下一篇: 我的编号