华为2012校园招聘上机试题及答案.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华为2012校园招聘上机试题及答案

2011年华为软件校园招聘编程测验 1、请上机编写程序,按题目要求提交文件。[详见考试说明,点击进入考试说明] 3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。两者相同则得分,不同则不得分。 4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况 5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误 6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分 7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目 1,判断电话号码是否合法: //要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符 int fun(char num[]) { char *p=num; int n=strlen(num); if(n==13){ if(*p==8*(p+1)==6) while(*p!=\0){ if(*p=0*p=9) p++; else return 2; if(*p==\0) return 0; } else return 3; } else return 1; } int main() { char num[]=87139a3887671; int k=fun(num); coutkendl; return 0; } 1.?数组比较(20分) ? 问题描述:? 比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数 比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0 数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3 ? 要求实现函数:? int?array_compare(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 函数返回:0 2) 输入:int?array1[]?=?{1,3,5},int?len1?=?3,int?array2[]?=?{77,21,1,3,5,7},int?len2?=?6 函数返回:3 函数如下: using namespace std; int f(int len1,int arry1[],int len2,int arry2[]) { int k=0; for(int i=len1-1,j=len2-1;i=0j=0;i--,j--) if(arry1[i]!=arry2[j]) k++; return k; } int main() { int num1[]={1,3,5}; int num2[]={77,21,1,3,5}; int k=f(3,num1,5,num2); coutkendl; return 0; } 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?in

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档