根据给定的信息,我们可以从以下两个方面来详细分析并总结其中涉及的重要知识点: ### 一、选秀节目评分系统实现 #### 1.1 题目背景与需求 该题目来源于2012年华为校园招聘上机考试,旨在通过实际应用场景考察应聘者对C++编程语言的理解以及算法设计能力。题目要求编写一个程序,用于计算选手的最终得分。得分由两部分组成:专家评委得分和大众评委得分,并给出了具体的计算规则。 #### 1.2 数据结构与变量定义 - `score[]` 数组用于存储所有评委给出的分数。 - `judge_type[]` 数组用于标记评委类型,`1` 表示专家评委,`2` 表示大众评委。 - `n` 表示评委总数。 - 其他辅助变量如 `sum_zhuanjia`、`sum_dazhong` 分别用于累加专家评委和大众评委的分数;`number_zhuanjia`、`number_dazhong` 用于记录两类评委的数量等。 #### 1.3 逻辑处理流程 1. **初始化计数器和累加器**:定义几个整型变量来记录专家评委和大众评委的数量以及他们给出的分数之和。 2. **遍历输入数据**:使用 `for` 循环遍历 `score[]` 和 `judge_type[]` 数组,根据 `judge_type[]` 中的值判断评委类型,并相应地更新专家评委和大众评委的分数累加器及数量计数器。 3. **计算平均分**:根据评委数量计算两类评委的平均分,注意平均分需要进行取整操作。 4. **计算总分**:如果存在大众评委,则按照规定的权重计算总分;否则,总分即为专家评委的平均分。 5. **返回结果**:最后返回计算得到的总分。 #### 1.4 编程技巧与注意事项 - 使用条件语句(`if`、`else if`)来区分不同类型的评委。 - 利用 `for` 循环来遍历数组。 - 注意边界情况处理,例如当没有大众评委时应如何处理。 - 使用整型除法计算平均分时,要注意可能会导致的结果不准确问题。 ### 二、数组排序与重新排列 #### 2.1 题目背景与需求 本题同样出自2012年华为校园招聘上机考试。题目要求根据给定的数组,首先找出数组中的最大值并将其放置于数组的指定位置(若数组长度为奇数,则放在中间位置;若为偶数,则放在中间偏右的位置)。接着,将剩余的元素按照从大到小的顺序,依次在一左一右的位置插入,直到所有元素都被正确放置。 #### 2.2 数据结构与变量定义 - `input[]` 数组存储原始数据。 - `n` 表示数组长度。 - `output[]` 数组用于存储排序后的结果。 #### 2.3 逻辑处理流程 1. **查找最大值**:使用 `for` 循环遍历 `input[]` 数组,找到数组中的最大值及其索引。 2. **交换最大值位置**:将最大值与数组中间位置(或中间偏右位置)的元素进行交换。 3. **前半部分排序**:使用冒泡排序法对前半部分的元素进行升序排列。 4. **后半部分排序**:使用冒泡排序法对后半部分的元素进行降序排列。 5. **合并结果**:将排序好的前半部分和后半部分合并至 `output[]` 数组中。 #### 2.4 编程技巧与注意事项 - 使用冒泡排序法来实现升序和降序排列。 - 注意数组索引的操作,特别是对于数组长度为奇数或偶数的不同处理方式。 - 在交换最大值位置时,需注意原数组中最大值索引的变化。 - 对于数组的分割,需要考虑数组长度的奇偶性,以便正确地确定最大值的位置。 这两个题目不仅考验了应聘者的编程基础,还要求具备一定的算法设计能力和逻辑思维能力。通过解决这些问题,可以有效地提升应聘者在实际工作中解决问题的能力。
- ruoranwusheng2013-05-24内容还可以,不过感觉一般企业不怎么会用到这个
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助