【华为OD机试真题】299、选修课 | 机试真题+思路参考+代码分析(C++、Java、Py)

这篇博客分享了华为在线测评(OD)的一道选修课题目,涉及C++、Java、Python三种语言的解题思路和代码。博主提供了详细的问题描述、输入输出格式、样例及解题步骤,旨在帮助读者理解如何找出同时选修两门课且按特定条件排序的学生信息。
摘要由CSDN通过智能技术生成


订阅本专栏后即可解锁在线OJ刷题权限
 
🍂个人博客首页: KJ.JK
 
🍂专栏介绍: 2024年最新的华为OD机试真题B、C和D卷,使用C++、Java、Python语言进行解答,每个题目的思路分析都非常详细,支持在线OJ评测刷题!!!!订阅后获取权限,新增图解思路,问题解疑,多样例测试,超过百字的思路参考解析,持续更新,欢迎订阅学习,有代码问题随时解答


一、题目


🎃题目描述

现有两门选修课,每门选修课都有一部分学生选修, 每个学生都有选修课的成绩,需要你找出同时选修了两门选修课的学生,先按照班级进行划分,班级编号小的先输出,每个班级按照两门选修课成绩和的

题目描述不太完整,不过可以根据题意来实现。假设我们已经有了每个学生的选修课成绩和所在班级,可以按照以下步骤实现: 1. 将学生按照班级编号和选修课成绩和排序,可以使用Python内置的sorted函数,其中key参数表示按照哪个值排序,reverse参数表示是否倒序排列。代码如下: ```python students = [...] # 学生列表,每个元素是一个字典,包含班级编号和选修课成绩 sorted_students = sorted(students, key=lambda x: (x['班级编号'], x['选修课成绩和']), reverse=True) ``` 2. 遍历排序后的学生列表,找到同时选修了两门选修课的学生,并输出。代码如下: ```python for i in range(len(sorted_students)): student = sorted_students[i] # 如果是同一班级的最后一个学生,或者与下一个学生班级编号不同,则跳过 if i == len(sorted_students) - 1 or student['班级编号'] != sorted_students[i+1]['班级编号']: continue # 找到同班级的下一个学生 next_student = sorted_students[i+1] # 如果选修课成绩和相等,则输出 if student['选修课成绩和'] == next_student['选修课成绩和']: print('班级编号:{},学生编号:{},选修课成绩和:{}'.format(student['班级编号'], student['学生编号'], student['选修课成绩和'])) print('班级编号:{},学生编号:{},选修课成绩和:{}'.format(next_student['班级编号'], next_student['学生编号'], next_student['选修课成绩和'])) ``` 注意,这里假设每个班级都至少有两个学生同时选修了两门选修课,如果不满足这个条件,需要做一些额外处理。另外,如果没有完整的题目描述,也无法确定选修课成绩和的计算方式,需要根据实际情况调整代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KJ.JK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值