本题是关于华为机试题中的一段代码实现,涉及C语言编程中的函数设计与计算选手得分逻辑。题目背景是模拟华为2012年的校园招聘机试场景,考生需要对选秀节目的打分规则进行处理,该规则根据不同类型的评委(专家评委和大众评委)给出不同的权重计算最终得分。
函数`int cal_score(int score[], int judge_type[], int n)`的主要任务是根据给定的分数数组`score[]`和评委类型数组`judge_type[]`,其中`judge_type[i]`表示第`i`个评委的类型(1为专家评委,2为大众评委),计算选手的总分。函数接受三个参数:`score[]`(存储评委打分)、`judge_type[]`(存储评委类别)和`n`(评委总数)。主要步骤如下:
1. 初始化变量:`expert`用于存储专家评委的总分,`dazhong`用于存储大众评委的总分,`zongfen`存储最终得分,`number`记录专家评委的数量,`i`作为循环索引。
2. 遍历`score[]`和`judge_type[]`数组,根据`judge_type[i]`的值判断评委类别:
- 如果`judge_type[i]`为1(专家评委),将当前评委的分数累加到`expert`,并增加计数器`number`。
- 否则(`judge_type[i]`为2),将当前评委的分数累加到`dazhong`。
3. 分类计算平均分:
- 如果所有评委都是专家(`number == N`),则平均分取整除以评委数量,赋值给`zongfen`。
- 如果有大众评委,先分别计算专家评委和大众评委的平均分(`expert`除以`number`,`dazhong`除以`(N - number)`),然后按照题目规定的权重(专家评委60%,大众评委40%)计算总分`zongfen`。
4. 将计算出的总分`zongfen`四舍五入后返回。
在`main()`函数中,首先提示用户输入`score[]`的分数,然后询问评委类型,最后调用`cal_score()`函数计算并输出选手的得分。
这个题目测试了应聘者对于数组操作、条件判断以及数学运算的理解,以及如何运用这些知识来解决实际问题的能力。通过解答这个问题,应聘者不仅能掌握基本的C语言编程技巧,还能了解实际工作中如何处理数据和应用算法。