华为校园招聘机试题目:选秀节目打分算法

需积分: 16 4 下载量 36 浏览量 更新于2024-07-26 收藏 33KB PDF 举报
"这篇资料是关于2012年华为公司校园招聘的机试题目,主要涉及编程问题,特别是如何处理评委打分的算法。题目要求编写一个`cal_score`函数,该函数根据给定的评委分数和评委类型计算选手的最终得分。" 在机试题目中,提供的代码是一个计算选手得分的函数`cal_score`,它接收三个参数:`score[]`(评委打分数组)、`judge_type[]`(评委类型数组)和`n`(评委总数)。`score[]`数组存储了每个评委给出的分数,而`judge_type[]`数组则标记了每个分数是由专家评委(值为1)还是大众评委(值为2)给出的。 函数首先初始化了几个变量:`expert`用于累计专家评委的分数,`publicJudge`用于累计大众评委的分数,`numOfExpert`记录专家评委的数量,`averageScore`用于计算最终的平均分。 接着,通过一个`for`循环遍历`score[]`和`judge_type[]`数组,根据`judge_type[]`中的值将分数累加到对应的总分变量中。如果`judge_type[index]`等于1,分数累加到`expert`,否则累加到`publicJudge`。 在循环结束后,判断所有评委是否都是专家评委。如果是,那么直接用`expert`除以`numOfExpert`得到专家评委的平均分;否则,按照规则计算总分,即0.6乘以专家评委的平均分加上0.4乘以大众评委的平均分,然后将结果取整。这里注意,大众评委的平均分是除以`n-numOfExpert`,因为要排除专家评委的数量。 最后,`averageScore`被返回作为选手的得分。 在测试代码部分,创建了一个包含10个评委分数和对应类型的数组,并调用了`cal_score`函数进行计算,打印出选手的平均分。 这个题目考察的是编程者对数据结构的理解、条件判断的应用以及数学计算能力,特别是对数组操作和逻辑推理的掌握。在实际开发中,类似的评分算法可能会出现在数据分析、比赛排名或用户评价系统等场景。解决这类问题需要对编程基本语法有扎实的掌握,并能灵活运用逻辑思维处理复杂条件下的计算问题。