欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)

程序员文章站 2024-03-19 08:42:10
...

题目

读入 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刽子手游戏

下一篇: