PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
题目
读入 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
C++实现
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
int n;
cin>>n;
int num,max=-1,min=101;
string name,number,maxname,minname,maxnum,minnum;
for (int i = 0; i < n; ++i) {
cin>>name>>number>>num;
if(num>max)
{
maxname=name;
maxnum=number;
max=num;
}
if(num<min)
{
minname=name;
minnum=number;
min=num;
}
}
cout<<maxname<<' '<<maxnum<<endl<<minname<<' '<<minnum<<endl;
return 0;
}
python实现
使用input()接收数据行数n,并通过for将详细信息存储在列表中。
考虑到每行数据都是以空格分割,因此使用.split(’ '),将字符串分割成字符串数组,存到列表中。
排序使用Python自带的sorted()函数。
该函数的语法是sorted(iterable[, cmp[, key[, reverse]]]),建议使用key或reverse参数,因为key和reverse比一个等价的cmp处理速度要快(对于每个列表元素,cmp都会被调用多次,而key和reverse只被调用一次)。
在这里key=lambda x:x[2]包含了一个lambda函数,key取每一行位置为2的数据(即第3列)进行升序排列(reverse = False为升序,默认)。
n=int(input())
sheet=[]
for i in range(0,n):
sheet.append(input().split(' '))
sheet[i][2]=int(sheet[i][2])
a=sorted(sheet,key=lambda x:x[2])
print(a[-1][0]+' '+a[-1][1])
print(a[0][0]+' '+a[0][1])
上一篇: UVa489刽子手游戏
推荐阅读
-
PAT (Basic Level) Practice (中文)1013 数素数 (20)
-
【JAVA】1004 成绩排名 (20分) PAT乙级 PAT (Basic Level) Practice(中文)
-
PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)(Java实现)
-
PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
-
PAT (Basic Level) Practice (中文)1004 成绩排名(20 分)C语言
-
PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会(20 分)C语言
-
PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20分)
-
PAT (Basic Level) Practice (中文)1016 部分A+B (15分)
-
PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)
-
PAT (Basic Level) Practice 1004 成绩排名 (20)