### 华为机试题库分析
#### 题目一:电话号码验证
这段代码的主要功能是验证输入的电话号码是否符合特定格式。具体来说,它检查电话号码是否以“86”开头,并且总长度为13位,其中除了开头的“86”,其余部分都是数字。
**代码解析**
1. **函数`fun()`**:
- 接受一个字符指针作为参数,代表待验证的电话号码。
- 首先检查电话号码的长度是否为13。
- 如果长度正确,则进一步检查电话号码是否以“86”开头。
- 然后遍历整个电话号码字符串,确保所有字符都是数字。
- 根据验证结果返回不同的整数值表示验证状态:
- `1`: 长度不符合要求。
- `2`: 开头不是“86”。
- `3`: 字符串中间包含非数字字符。
- `4`: 电话号码格式完全正确。
2. **主函数`main()`**:
- 提示用户输入电话号码。
- 调用`fun()`函数进行验证。
- 根据返回的状态码输出相应的提示信息。
#### 题目二:数组比较
该题目要求编写一个程序来比较两个整型数组。比较从数组的最后一个元素开始向前逐个元素比较,如果两个数组长度不同,则仅比较较短数组中的元素数量。
**代码解析**
1. **函数`array_compare()`**:
- 接受四个参数:两个整数表示数组的长度,以及两个整型数组的指针。
- 使用两个索引变量`i`和`j`分别指向两个数组的末尾。
- 当两个索引均在各自数组的有效范围内时,比较对应的元素是否相等。
- 如果不相等,则计数器`m`加一。
- 返回最终计数器`m`的值,表示不相等的元素数量。
2. **主函数`main()`**:
- 提示用户输入两个数组的长度和元素。
- 调用`array_compare()`函数比较数组。
- 输出不相等的元素数量。
#### 题目三:求两个数组的和差(去重并排序)
本题目的目标是去除两个数组中的重复元素,并将剩余的元素按照升序排列到一个新的数组中。
**代码解析**
1. **函数`sort()`**:
- 实现了简单的冒泡排序算法,用于对整型数组进行升序排序。
- 参数包括数组的长度和数组本身。
- 内部通过双重循环实现元素之间的比较和交换。
2. **主函数`main()`**:
- 首先提示用户输入两个数组的长度及元素。
- 对两个数组分别调用`sort()`函数进行排序。
- 完成排序后,输出两个数组的内容。
- 然后进行数组比较操作,但提供的代码片段中缺少了完整的比较逻辑。
**补充完整后的逻辑**:
- 继续使用两个索引变量`i1`和`j1`,分别指向两个排序后的数组。
- 比较当前索引下的元素,如果相等则跳过;如果不相等,则将较小的元素添加到新的数组`array3`中。
- 通过这种方式可以有效地去除重复元素,并保持新数组中的元素升序排列。
通过以上三个题目的分析,我们可以看出这些题目主要涉及到了基本的数据结构操作、字符串处理以及排序算法的应用,对于理解基础的编程概念和技巧非常有帮助。