输入一系列学生姓名及其语文成绩(不重复),请按语文成绩由高到低的顺序,打印姓名。 输入 第一行输入一个整数m(0<m<20),第二行输入m个字符串(空格分开),代表姓名,第三行输入m个0~100之间的不重复的整数,代表成绩。 输出 输出m个姓名(按成绩排序之后的),由空格隔开。
时间: 2024-04-13 22:30:22 浏览: 15
以下是一个示例代码,实现了按语文成绩由高到低的顺序打印学生姓名的功能:
```python
m = int(input("请输入学生数量:"))
names = input("请输入学生姓名(空格分开):").split()
scores = list(map(int, input("请输入学生语文成绩(空格分开):").split()))
# 将姓名和成绩对应起来
students = list(zip(names, scores))
# 按成绩进行排序
students.sort(key=lambda x: x[1], reverse=True)
# 打印排序后的姓名
sorted_names = [student[0] for student in students]
print("按成绩由高到低排序后的学生姓名:")
print(" ".join(sorted_names))
```
你可以将以上代码保存为一个.py文件,并运行它来测试。在运行时,按照要求输入学生数量、学生姓名和语文成绩即可。程序会输出按语文成绩由高到低排序后的学生姓名。
相关问题
用c++写输入一系列学生姓名及其语文成绩(不重复),请按语文成绩由高到低的顺序,打印姓名。 输入 第一行输入一个整数m(0<m<20),第二行输入m个字符串(空格分开),代表姓名,第三行输入m个0~100之间的不重复的整数,代表成绩。 输出 输出m个姓名(按成绩排序之后的),由空格隔开。
下面是用C++编写的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct Student {
std::string name;
int score;
};
bool compare(Student s1, Student s2) {
return s1.score > s2.score;
}
int main() {
int m;
std::cin >> m;
std::vector<Student> students;
for (int i = 0; i < m; i++) {
std::string name;
int score;
std::cin >> name >> score;
students.push_back({name, score});
}
std::sort(students.begin(), students.end(), compare);
for (const auto& student : students) {
std::cout << student.name << " ";
}
return 0;
}
```
这个程序首先读取一个整数m,表示学生人数。然后依次读取m个学生的姓名和成绩,并将其存储在一个名为`students`的向量中。接着,使用`std::sort`函数按照成绩从高到低对学生进行排序。最后,遍历排序后的学生向量,并打印出每个学生的姓名。
注意,这个程序假设输入的学生姓名和成绩没有重复。如果有重复的情况,可能会导致排序结果不准确。
从键盘输入以下5个学生的学号、姓名,以及数学、语文成绩
好的,我来给你写一段Python代码来实现这个功能:
```python
students = []
for i in range(5):
student = {}
student['id'] = input('请输入第{}个学生的学号:'.format(i+1))
student['name'] = input('请输入第{}个学生的姓名:'.format(i+1))
student['math'] = int(input('请输入第{}个学生的数学成绩:'.format(i+1)))
student['chinese'] = int(input('请输入第{}个学生的语文成绩:'.format(i+1)))
students.append(student)
print(students)
```
你可以将这段代码复制到Python的IDE中运行,然后按照提示输入每个学生的信息,最终会得到一个包含所有学生信息的列表。注意,这段代码假设每个学生的学号、姓名、数学成绩和语文成绩都是字符串类型,且输入的成绩会被转换为整数类型。