华为机考题目解析:评分规则与数组操作

版权申诉
5星 · 超过95%的资源 5 下载量 76 浏览量 更新于2024-08-20 1 收藏 12KB PDF 举报
"华为机考试题+答案.pdf" 这部分内容包含了两个编程题目,主要涉及C++语言,涵盖了数据处理和算法应用。下面是详细解释: 1、第一个题目是关于选秀节目打分系统的实现。在这个系统中,分数由专家评委和大众评委给出,分别存储在`score[]`数组中,而评委类别则存储在`judge_type[]`数组中。函数`cal_score(int score[], int judge_type[], int n)`用于计算选手的最终得分。 - 题目要求首先计算两类评委的平均分,专家评委的平均分(`sum1`除以`count1`)和大众评委的平均分(`sum2`除以`count2`)。这里使用了循环遍历数组,根据`judge_type[]`的值(1代表专家评委,2代表大众评委)来累加相应的分数。 - 如果没有大众评委(`count2==0`),那么总分直接等于专家评委的平均分。 - 否则,根据规则,总分是专家评委平均分的60%加上大众评委平均分的40%,然后取整得到`zhongfen`。 - 最后,函数返回选手的得分`zhongfen`。 2、第二个题目要求根据输入数组`input[]`创建一个新的数组`output[]`,并将`input[]`中的最大元素放置在特定位置,同时保持`output[]`数组的元素按降序排列。 - 当`input[]`的长度`n`为奇数时,最大元素放在`output[]`的中间位置。 - 如果`n`为偶数,最大元素放在中间两个位置的右侧。 - 接下来,从大到小依次填充剩余的元素,左右交替放置。 例如,对于`input[] = {3, 6, 1, 9, 7}`,最大元素9会放在`output[]`的中间位置,得到`output[] = {3, 7, 9, 6, 1}`;而对于`input[] = {3, 6, 1, 9, 7, 8}`,最大元素9和8会分别放在中间位置,得到`output[] = {3, 7, 9, 8, 6, 1}`。 这两个题目都是典型的编程问题,考察了对数组操作的理解、条件判断的应用以及计算逻辑的实现。解决这些问题需要熟悉C++的基本语法,理解数组操作,能够编写循环和条件语句,以及具备一定的算法思维。在实际编程考试或面试中,这类题目可以帮助评估考生的数据处理能力和逻辑思维能力。