题目链接
题目描述
牛客大学的综合评估系统根据学生的学业成绩和社会实践得分来评定其是否为 "Excellent"。评定标准如下:
- 每位学生有学业成绩
和社会实践得分
。
- 综合分数
按以下权重计算:学业成绩占 70%,社会实践得分占 30%。
- 优秀学生 (Excellent) 必须同时满足以下两个条件:
- 学业成绩与社会实践得分之和
。
- 综合分数
。
- 学业成绩与社会实践得分之和
题目以核心代码模式提供,你需要实现一个函数,接受一个 Student
对象,返回一个布尔值表示该学生是否优秀。
示例:
- 学生A: 学业 95, 实践 59
- 分数和:
- 综合分:
- 结果:
Excellent
- 分数和:
- 学生B: 学业 92, 实践 52
- 分数和:
- 综合分:
- 结果:
Excellent
- 分数和:
解题思路
解决这个问题需要严格按照题目定义的逻辑进行判断。这是一个直接的条件判断问题,没有任何复杂的算法。
算法步骤如下:
- 从输入的
Student
对象中获取academic_score
() 和
activity_score
()。
- 检查第一个条件:计算两个分数的和
,判断是否
> 140
。 - 检查第二个条件:根据
综合分数 S = A * 0.7 + B * 0.3
计算综合分,判断是否>= 80
。 - 只有当上述两个条件同时成立时,函数才返回
true
(或True
),否则返回false
(或False
)。
为了代码的清晰性,可以将两个条件的检查结果分别存储在布尔变量中,最后返回它们的逻辑与(&&
或 and
)结果。
代码
bool isExcellent(Student student) {
// 条件1: 学业成绩与社会实践得分之和 > 140
bool sum_check = (student.academic_score + student.activity_score) > 140;
// 条件2: 综合分数 >= 80
double comprehensive_score = student.academic_score * 0.7 + student.activity_score * 0.3;
bool comprehensive_check = comprehensive_score >= 80;
return sum_check && comprehensive_check;
}
static boolean isExcellent(Student student) {
// 条件1: 分数之和 > 140
boolean sumCheck = (student.academic_score + student.activity_score) > 140;
// 条件2: 综合分 >= 80
double comprehensiveScore = student.academic_score * 0.7 + student.activity_score * 0.3;
boolean comprehensiveCheck = comprehensiveScore >= 80;
return sumCheck && comprehensiveCheck;
}
def is_excellent(student: Student) -> bool:
# 条件1: 分数之和 > 140
sum_check = (student.academic_score + student.activity_score) > 140
# 条件2: 综合分 >= 80
comprehensive_score = student.academic_score * 0.7 + student.activity_score * 0.3
comprehensive_check = comprehensive_score >= 80
return sum_check and comprehensive_check
算法及复杂度
- 算法: 条件判断
- 时间复杂度:
。每次调用函数都执行固定数量的算术运算和比较,与输入值的大小无关。
- 空间复杂度:
。只使用了少数几个变量来存储中间计算结果,没有使用额外的与输入规模相关的空间。