文档介绍:2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)1,判断电话号码是否合法://要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符intfun(charnum[]){ char*p=num; intn=strlen(num); if(n==13){ if(*p=='8'&&*(p+1)=='6') while(*p!='\0'){ if(*p>='0'&&*p<='9') p++; else return2; if(*p=='\0') return0; } elsereturn3; } else return1;}intmain(){ charnum[]="87139a3887671"; intk=fun(num); cout<<k<<endl; return0;}(18) 数组比较(20分)•问题描述: 比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3•要求实现函数: int pare(int len1, int array1[], int len2, int array2[])•示例 1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5函数返回:02)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6函数返回:3函数如下:usingnamespacestd;intf(intlen1,intarry1[],intlen2,intarry2[]){ intk=0; for(inti=len1-1,j=len2-1;i>=0&&j>=0;i--,j--) if(arry1[i]!=arry2[j]) k++; returnk;}intmain(){ intnum1[]={1,3,5}; intnum2[]={77,21,1,3,5}; intk=f(3,num1,5,num2); cout<<k<<endl; return0;}2. 约瑟夫问题•问题描述: 输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺比如:输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数最后一轮计数出列数字为4,计数过程完成。输出数值出列顺序为:2,3,1,4。•要求实现函数: void array_iterate(int len, int input_array[], int m, int output_array[])【输入】int len:输入数列的长度;int intput_array[]:输入的初始数列int m:初始计数值【输出】int output_array[]:输出的数值出列顺序•示例 输入:int input_array[] = {3,1,2,4},int len = 4, m=7输出:output