题目链接

学生综合评估系统

题目描述

牛客大学的综合评估系统根据学生的学业成绩和社会实践得分来评定其是否为 "Excellent"。评定标准如下:

  • 每位学生有学业成绩 和社会实践得分
  • 综合分数 按以下权重计算:学业成绩占 70%,社会实践得分占 30%。
  • 优秀学生 (Excellent) 必须同时满足以下两个条件
    1. 学业成绩与社会实践得分之和
    2. 综合分数

题目以核心代码模式提供,你需要实现一个函数,接受一个 Student 对象,返回一个布尔值表示该学生是否优秀。

示例:

  • 学生A: 学业 95, 实践 59
    • 分数和:
    • 综合分:
    • 结果: Excellent
  • 学生B: 学业 92, 实践 52
    • 分数和:
    • 综合分:
    • 结果: Excellent

解题思路

解决这个问题需要严格按照题目定义的逻辑进行判断。这是一个直接的条件判断问题,没有任何复杂的算法。

算法步骤如下

  1. 从输入的 Student 对象中获取 academic_score () 和 activity_score ()。
  2. 检查第一个条件:计算两个分数的和 ,判断是否 > 140
  3. 检查第二个条件:根据 综合分数 S = A * 0.7 + B * 0.3 计算综合分,判断是否 >= 80
  4. 只有当上述两个条件同时成立时,函数才返回 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

算法及复杂度

  • 算法: 条件判断
  • 时间复杂度: 。每次调用函数都执行固定数量的算术运算和比较,与输入值的大小无关。
  • 空间复杂度: 。只使用了少数几个变量来存储中间计算结果,没有使用额外的与输入规模相关的空间。