2012华为笔试题:比较数组不同元素个数

需积分: 50 1 下载量 171 浏览量 更新于2024-09-16 收藏 59KB DOC 举报
"2012年华为公司校园招聘的机试题目,主要涉及数组操作和比较,提供了一个用于比较两个数组中不同元素个数的函数实现。" 这篇内容是关于华为2012年校园招聘的笔试题目,主要考察了编程基础,特别是数组处理能力。题目要求编写一个名为`compare_array`的函数,该函数接收两个整数数组的长度以及数组本身作为参数,其目的是计算从两个数组的最后一个元素开始比较,直到第一个元素,这两个数组中不同元素的个数。 题目给出的具体例子有两个数组:`array1[5]={77,21,1,3,5}`和`array2[3]={1,3,5}`。按照题目要求,从`array1[4]`(即5)与`array2[2]`(即5)开始比较,直到`array1[2]`(即1)与`array2[0]`(即1)结束。在这个过程中,没有发现不同的元素,因此不同元素的个数为0。另一个例子是`array1[6]={77,21,1,3,5,7}`和`array2[3]={1,3,5}`,在这种情况下,从`array1[5]`(即7)开始比较,到`array1[3]`(即3)结束,有3个元素不同,即7、21和77。 函数`compare_array`的实现中,首先对两个数组进行了反转操作,这是因为题目要求从数组末尾开始比较。反转后,数组的末尾元素变成了起始元素,这样可以直接从末尾开始遍历。然后,根据较小数组的长度(`small`)进行遍历,如果当前索引位置的元素相同,则减去1,表示没有找到不同的元素。最后返回`num`,即为不同元素的个数。 在提供的代码中,还包含了一些未使用的`printf`语句,这些原本可能是用于调试的,用于打印倒置后的数组和最终的计数值。`main`函数中调用了`compare_array`,并传入了示例数组和它们的长度,用于测试该函数的功能。 这个题目和解决方案展示了基础的数组操作和逻辑思维,是编程面试中常见的类型。它考察了程序员对数组的理解、反转操作的实现以及如何有效地比较数组元素来找出差异。对于准备类似面试或笔试的求职者来说,理解和掌握这类问题的解决方法是非常重要的。