华为机考编程题解析:评委打分与数组排序

版权申诉
5星 · 超过95%的资源 8 下载量 93 浏览量 更新于2024-08-20 3 收藏 11KB DOCX 举报
"华为机考试题包含了两道编程题目,主要涉及数据处理和排序算法的应用。第一题是关于选秀节目打分的计算,涉及到数组操作、条件判断以及平均数的计算。第二题要求对输入数组进行特定方式的排序,根据数组长度的奇偶性决定最大值的位置,并按照特定顺序填充剩余元素。" 详细解释: 1. **选秀节目打分计算**: - 题目要求计算选手的总分,依据是专家评委和大众评委的打分。分数存储在`score[]`数组中,对应的评委类型存储在`judge_type[]`数组中。 - `cal_score`函数接收三个参数:`score[]`,`judge_type[]`和`n`,其中`n`表示评委总数。 - 函数通过遍历数组,分别计算专家评委和大众评委的分数总和`sum1`和`count1`(专家评委的数量)以及大众评委的分数总和`sum2`和`count2`(大众评委的数量)。 - 如果没有大众评委(`count2==0`),则总分等于专家评委的平均分,否则总分是两者平均分的加权平均(专家评委平均分的60%加上大众评委平均分的40%),结果都取整。 - 返回计算得到的总分。 2. **特定方式的数组排序**: - 第二题要求对输入数组`input[]`进行特殊排序,生成一个新的数组`output[]`。 - 函数`sort`接收三个参数:输入数组`input[]`,其长度`n`,以及输出数组`output[]`。 - 首先找出数组`input[]`中的最大值,然后根据`n`的奇偶性确定最大值在`output[]`中的位置。 - 对于奇数长度的数组,最大值放在中间;对于偶数长度的数组,最大值放在中间偏右的位置。 - 接下来,按照从大到小的顺序,剩余元素依次填充`output[]`,遵循“一左一右”的规则,即较大的元素在较大空位的两侧交替插入。 这两个问题都考察了基本的编程能力,包括数组操作、条件判断、循环、数学计算(如平均分的计算)以及逻辑思维能力。在实际的编程面试或考试中,这类题目有助于评估应聘者的编程基础和问题解决技巧。