7-1 学生成绩排序 分数 20 作者 孔德桢 单位 浙大城市学院 给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。 输入格式: 第一行给出不大于10000的整数N。 接下来N行,每行给出学生姓名和成绩,以空格分隔。学生姓名不超过20个字符。 输出格式: 共输出N行,每行包含对应的学生排名和姓名,以空格分隔。
时间: 2024-03-11 13:44:08 浏览: 249
好的,这是一道经典的排序题目,可以使用快速排序、归并排序等算法进行解答。这里给出一种使用Python内置的sorted函数进行排序的方法:
```python
n = int(input())
students = []
for i in range(n):
name, score = input().split()
students.append((name, int(score)))
# 按成绩从大到小排序,成绩相同按姓名字典序从小到大排序
students = sorted(students, key=lambda x: (-x[1], x[0]))
# 输出排名和姓名
for i, (name, score) in enumerate(students):
print(i+1, name)
```
这里使用了Python内置的sorted函数进行排序,其中key参数指定了排序的依据,使用了lambda表达式来指定按成绩从大到小排序,成绩相同按姓名字典序从小到大排序。
相关问题
7-1 输出学生成绩 分数 20 全屏浏览题目 作者 张泳 单位 浙大城市学院
题目描述:
本题要求编写程序,读入N个学生的姓名、学号、成绩,输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
输入第一行正整数N(≤10^4),即学生人数。
随后N行,每行格式为:
姓名 学号 成绩
其中姓名为长度不超过10的非空字符串,学号为长度不超过20的非空字符串,成绩为不超过100的非负整数。
输出格式:
在一行中按照格式“最高成绩学生姓名 学号”,输出成绩最高学生的姓名和学号,中间用空格分隔。
在另一行中按照格式“最低成绩学生姓名 学号”,输出成绩最低学生的姓名和学号,中间用空格分隔。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
解题思路:
输入数据比较简单,直接按照题目要求读入即可。
然后可以定义一个字典,将每个学生的成绩存储在字典中,并保存该学生成绩的姓名和学号。在循环读入的过程中,同时对最高分和最低分进行更新,记录下对应的学生姓名和学号。
最后输出即可。
参考代码:
7-5 输出学生成绩 分数 300 作者 张泳 单位 浙大城市学院 本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。 输入格式: 输入第一行首先给出一
下样例中的正整数N(≤1000),表示学生的人数。接下来N行,每行给出一个学生的成绩,为不超过100的非负整数。 输出格式: 按照以下格式输出统计结果,其中平均成绩精确到小数点后一位: average = 平均成绩最高成绩为: highest 最低成绩为: lowest 输入样例: 3 88 77 90 输出样例: average = 85.0 highest = 90 lowest = 77
阅读全文