华为2012校园招聘上机试题解析:数组比较与约瑟夫问题

5星 · 超过95%的资源 需积分: 9 14 下载量 22 浏览量 更新于2024-09-12 收藏 73KB DOC 举报
本资源是一份针对2012年华为校园招聘上机考试的试题及其答案,主要涉及两个部分:数组比较和约瑟夫问题。 1. **数组比较** (20分) - 问题描述:编写一个名为`array_compare`的函数,接受四个参数:两个整数(数组长度`len1`和`len2`)和两个整数数组`array1[]`和`array2[]`。函数需要从数组末尾开始逐个向前比较元素,若两个数组长度不同,则只比较较短数组的元素个数。返回的是不相等元素的个数。 - 示例: - 输入:`array1` = [1, 3, 5], `len1` = 3, `array2` = [77, 21, 1, 3, 5], `len2` = 5,返回0,因为所有元素都相等。 - 输入:`array1` = [1, 3, 5], `len1` = 3, `array2` = [77, 21, 1, 3, 5, 7],返回3,因为有三个元素(77, 5, 7)不相等。 2. **约瑟夫问题** - 问题描述:给定一个包含随机正整数的数列和初始计数器`m`,按照特定规则进行计数和移除元素。从数列的第一个位置开始,计数到`m`后将当前位置的数替换为`m`,并将该数移除,接着从下一个位置重新开始计数。当数列所有元素都被处理过或计数达到末尾时,返回到数列的第一个位置继续计数。最后输出移除的数字顺序。 - 要求实现函数:`void array_iterate`,接收四个参数:整数数组`list[]`、其长度`length`、初始计数值`m`和一个整型指针(用于记录当前计数位置)。 这两个问题考察了应聘者的编程基础、数据结构理解和逻辑分析能力,特别是数组操作和循环控制的运用。解决这类问题需要清晰的算法设计思路,如采用双指针遍历数组、动态更新计数器等技巧。通过这份试题,华为旨在评估候选人在实际编程任务中的解决问题的能力以及对细节的把控。