华为成研所2013.4.26下午2:15-4:15上机笔试题目。
2013年华为软件校园招聘编程测验
类别:软件C/C++语言
编程题(共3题)
注意:
1、请上机编写程序,按题目要求提交文件。[详见考试说明,点击进入考试说明]
2、本试题采用自动执行测试用例进行评分,测试用例不对考生公开
3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。
4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况,题目中注明的例外
5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误
6、被要求实现的函数如果包含返回参数,该返回参数涉及的空间分配和释放均在函数外完成,在被要求实现函数内部可以直接使用返回参数
7、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分
8、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目
1. 字串确认
- 问题描述:
给定一个字符串,确认该字符串中是否顺序含有”test”。”test”可能是连续出现的,也可能是分开出现;区分大小写。”test”仅出现一次。
- 要求实现函数:
int getTest(char input[]);
【输入】 input 输入字符串
【输出】无
【返回】 如果顺序含有连续的test,返回1;
如果顺序含有分散的test,返回2;
没有找到,返回0;
- 示例
输入abadtestcbad,返回1;
输入tdfesjklt,返回2
2. 识别偶数
- 问题描述:
请将输入的字符串中的相邻数字字符(0-9)转换成整数,并输出其中偶数的个数和对应的偶数。
比如:在输入的”asd123&23ASD7823wer100”中,其中可以转换出来四个数,分别是123、23、7823和100,偶数个数为1,对应偶数为100。
注:题目中的数字不会超过int范围,考生不需要考虑此异常;
- 要求实现函数:
int my_convert(char input[],int output[])
【输入】 char input[],输入字符串
【输出】 output[] ,转换的偶数
【返回】 偶数的个数
- 示例
输入:char input[] = “asd123&23ASD7823wer100”,返回1,output[0] = 100;
输入:char input[]=”aAAb9B121Buw1451xyZZ”, 返回0;
3. 二叉树的遍历
- 问题描述:
二叉树的遍历是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:访问结点本身,遍历该结点的左子树,遍历该结点的右子树。
其中常用的有前序遍历,中序遍历和后序遍历。
前序遍历:访问根结点的操作发生在遍历其左右子树之前。即首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
中序遍历:访问根结点的操作发生在遍历其左右子树之中。
后序遍历:访问根结点的操作发生在遍历其左右子树之后。
要求在已知前序遍历和中序遍历结果的基础上,输出后序遍历的结果。
- 要求实现函数:
void traver(char *input1, char* input2, char* output)
【输入】 char *input1,前序遍历字串
char *input2,中序遍历字串
【输出】 char *output,输出的后序遍历字串
【返回】 无
· 示例
输入:input1 = “abdcef” ,input2 = “dbaecf”
输出:output = “dbefca”