题目描述
2024华为OD-E卷-100分-优秀学员统计
某学校在一次考试中,记录了学生的成绩和姓名。现在需要统计出成绩在90分以上的优秀学员,并输出他们的姓名和成绩。
输入格式:
- 第一行输入一个整数 n,表示学生人数。
- 接下来 n 行,每行输入一个学生的姓名和成绩,姓名和成绩之间用空格隔开。
输出格式:
- 输出所有成绩在90分以上的学生的姓名和成绩,每个学生的姓名和成绩占一行,按照输入顺序输出。
示例输入:
5
Alice 85
Bob 92
Charlie 95
David 88
Eve 90
示例输出:
Bob 92
Charlie 95
Eve 90
思路
- 读取输入:首先读取学生人数 n,然后读取每个学生的姓名和成绩。
- 存储数据:可以使用一个列表或数组来存储每个学生的姓名和成绩。
- 筛选数据:遍历存储的数据,筛选出成绩在90分以上的学生。
- 输出结果:按照输入顺序输出符合条件的学生的姓名和成绩。
Java 编码解析
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ExcellentStudents {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
List<String[]> students = new ArrayList<>();
for (int i = 0; i < n; i++) {
String line = scanner.nextLine();
String[] parts = line.split(" ");
students.add(parts);
}
for (String[] student : students) {
String name = student[0];
int score = Integer.parseInt(student[1]);
if (score > 90) {
System.out.println(name + " " + score);
}
}
scanner.close();
}
}
C++ 编码解析
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
cin.ignore(); // 忽略换行符
vector<pair<string, int>> students;
for (int i = 0; i < n; ++i) {
string line;
getline(cin, line);
size_t pos = line.find(' ');
string name = line.substr(0, pos);
int score = stoi(line.substr(pos + 1));
students.push_back({name, score});
}
for (const auto& student : students) {
if (student.second > 90) {
cout << student.first << " " << student.second << endl;
}
}
return 0;
}
Python 编码解析
def main():
import sys
input = sys.stdin.read
data = input().split()
n = int(data[0])
index = 1
students = []
for _ in range(n):
name = data[index]
score = int(data[index + 1])
students.append((name, score))
index += 2
for student in students:
if student[1] > 90:
print(student[0], student[1])
if __name__ == "__main__":
main()