




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2016校招 华为提前批机试(2015年8月13日上午)今年的华为机试跟以往的有所不同,以往机试题侧重于字符串处理,分数权重为:60、100、160。今年貌似改革了,题目都偏向数学逻辑类。华为的名言“胜则举杯相庆,败则拼死相救”说话的人来头不小:任正非,顺带说了很欣赏华为的狼性文化,团队精神。1、猴子吃桃题目描述:猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,又多吃了一个。第二天早上有奖剩下的桃子吃掉一般,又多吃了一个。以后每天早上都吃了前一天剩下的一般零一个。到第m天早上再吃时,只剩下一个桃子。求第一天共摘了多少?输入:mwield天数,即第m早上再想吃时,只剩下一个桃子。输出:第一天共摘了多少个桃子。样例输入:2样例输出:4答题思路:从第m天推起,第m天为1个;第m-1天为(1+1)*2个;第m-2天为以此反推,for循环就可以搞定。2、海滩上有多少个桃子题目描述:海滩上有一堆桃子,只猴子来分。第一只猴子把这堆桃平均分为m份,多了一个,把多的一个扔到海里,拿走了一份。第二只猴子把剩下的桃子又平均分为m份,多了一个,丢入海里,拿走了一份第三第四第m只猴字都这样操作,请问海滩上原来最少有多少个桃子?输入:猴子个数m(3=m=9)输出:原来最少有多少个桃子样例输入:3样例输出:25答题思路:楼主是暴力求解的,所以效率比较低,i从第1开始,认为最后剩i个,再网上推算,能否被m整除(最后有一个测试用例没过,仔细想来应该是m=9时,溢出了,因为楼主是先乘后除的,所以问题应该出在这,以后牢记经验了)。回来后,差了一下猴子分桃这个经典案例,这位大神博客中有写得比较详细和巧妙:/hackbuteer1/article/details/6914395经验教训:要注意大数问题,像这种情况,long long比较保险一点,另外,做乘除时,能先除的先除,乘放在后面,避免溢出问题!2、自动售货系统题目太长了,直接上图好了答题思路:题目很长,但不算难,捋顺了逻辑就好了。楼主后面也有一个测试用例没过,真是伤感。猜测了一下,应该是当输入太长了,自动换行时没有读全经验教训:以后做题时一定要好好考虑边界、异常等比较全面的测试用例!华为机试题汇总作者:刘鹏举写在前面的话:由于最近准备华为机试,所以在网上找了一些资料,所以以下内容均摘自互联网,现整理一下以供各位找工作的战友参考。肯定不会遇到原题,就当练练手了。第一题:数组比较:问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组1,3,5和数组77,21,1,3,5按题述要求比较,不相等元素个数为0数组1,3,5和数组77,21,1,3,5,7按题述要求比较,不相等元素个数为3要求实现函数:intarray_compare(intlen1,intarray1,intlen2,intarray2)【输入】intlen1:输入被比较数组1的元素个数;intarray1:输入被比较数组1;intlen2:输入被比较数组2的元素个数;intarray2:输入被比较数组2;【输出】无【返回】不相等元素的个数,类型为int示例1)输入:intarray1=1,3,5,intlen1=3,intarray2=77,21,1,3,5,intlen2=5函数返回:02)输入:intarray1=1,3,5,intlen1=3,intarray2=77,21,1,3,5,7,intlen2=6函数返回:第二题:约瑟夫环(学软件的这个都应该知道)问题描述:输入一个由随机数组成的数列(数列中每个数均是大于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。要求实现函数:voidarray_iterate(intlen,intinput_array,intm,intoutput_array)【输入】intlen:输入数列的长度;intintput_array:输入的初始数列intm:初始计数值【输出】intoutput_array:输出的数值出列顺序【返回】无示例输入:intinput_array=3,1,2,4,intlen=4,m=7输出:output_array=2,3,1,4第三题:四则运算:问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注:1、表达式只含+,-,*,/四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况要求实现函数:intcalculate(intlen,char*expStr)【输入】intlen:字符串长度;char*expStr:表达式字符串;【输出】无【返回】计算结果示例1)输入:char*expStr=“1+4*5-8/3”函数返回:192)输入:char*expStr=“8/3*3”函数返回:6:第四题: 单链表逆序(这个大家都懂得)第五题:编写函数string deletestring(string str,string sub_str)从str中查找匹配的字符串sub_str,采用最左匹配,且输出形式为str+_+匹配的次数:第六题:高精度数相加,string addBigInt(string num1,string num2)需考虑正负数相加第七题:比较一个数组的元素是否为回文数组第八题:求两个整形数组的异集,接A+B-(A与B的交集)第九题:一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:1:四条:即四张一样数值的牌(牌均不论花色)2:三条带一对3:三条带两张不相同数值的牌4:两对5:顺子包括10,J,Q,K,A6:什么都不是7:只有一对第十题:手机号码合法性判断(20分)问题描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、长度13位;2、以86的国家码打头;3、手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1)如果手机号码合法,返回0;2)如果手机号码长度不合法,返回13)如果手机号码中包含非数字的字符,返回2;4)如果手机号码不是以86打头的,返回3;【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。要求实现函数:intsintverifyMsisdn(char*inMsisdn)【输入】char*inMsisdn,表示输入的手机号码字符串。【输出】无【返回】判断的结果,类型为int。示例输入:inMsisdn=“869123456789“输出:无返回:1输入:inMsisdn=“88139123456789“输出:无返回:3输入:inMsisdn=“86139123456789“输出:无返回:0第十一题:将一个字符串的元音字母复制到另一个字符串,并排序(30分)问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。说明:1、元音字母是a,e,i,o,u,A,E,I,O,U。2、筛选出来的元音字母,不需要剔重;最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。要求实现函数:voidsortVowel(char*input,char*output);【输入】char*input,表示输入的字符串【输出】char*output,排好序之后的元音字符串。【返回】无示例输入:char*input=“Abort!MayBeSomeErrorsInOutSystem.“输出:char*output=“aeeeooAEIO“第十二题:身份证号码合法性判断问题描述:我国公民的身份证号码特点如下:1、长度为18位;2、第117位只能为数字;3、第18位可以是数字或者小写英文字母x。4、身份证号码的第714位表示持有人生日的年、月、日信息。例如51100219880808011x。请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除或能被400整除的年份,闰年的2月份为29天,非闰年的2月份为28天。其他情况的合法性校验,考生不用考虑。函数返回值:1)如果身份证号合法,返回0;2)如果身份证号长度不合法,返回1;3)如果身份证号第117位含有非数字的字符,返回2;4)如果身份证号第18位既不是数字也不是英文小写字母x,返回3;5)如果身份证号的年信息非法,返回4;6)如果身份证号的月信息非法,返回5;7)如果身份证号的日信息非法,返回6(请注意闰年的情况);【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。要求实现函数:intverifyIDCard(char*input)示例1)输入:”511002111222”,函数返回值:1;2)输入:”511002abc123456789”,函数返回值:2;3)输入:”51100219880808123a”,函数返回值:3;4)输入:,函数返回值:4;5)输入:”511002198813081234”,函数返回值:5;6)输入:”511002198808321234”,函数返回值:6;7)输入:,函数返回值:7;8)输入:,函数返回值:0;第十三题:选秀节目打分,分为专家评委和大众评委,score数组里面存储每个评委打的分数,judge_type里存储与score数组对应的评委类别,judge_type=1,表示专家评委,judge_type=2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分*0.6+大众评委*0.4,总分取整。如果没有大众评委,则总分=专家评委平均分,总分取整。函数最终返回选手得分。函数接口intcal_score(intscore,intjudge_type,intn)第十四题:给定一个数组input,如果数组长度n为奇数,则将数组中最大的元素放到output数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input=3,6,1,9,7output=3,7,9,6,1;input=3,6,1,9,7,8output=1,6,8,9,7,3函数接口voidsort(intinput,intn,intoutput)第十五题:操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级=50且=255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task,长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task中的任务按照系统任务、用户任务依次存放到system_task数组和user_task数组中(数组中元素的值是任务在task数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。例如:task=0,30,155,1,80,300,170,40,99system_task=0,3,1,7,-1user_task=4,8,2,6,-1函数接口voidscheduler(inttask,intn,intsystem_task,intuser_task)2015届华为校园招聘机试题分类:面试珠玑2014-09-13 18:2519022人阅读评论(26)收藏举报华为机试第一题(60分): 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”cppview plaincopy1. 转载请标明出处,原文地址:/hackbuteer1/article/details/392537672. #include3. #include4. usingnamespacestd;5. 6. voidsolve(char*str,intn,intlen)7. 8. inti,j,k,quotient,remainder;9. quotient=len/n;/原字符串被分解的个数10. remainder=len-n*quotient;/剩余的字符串的个数11. 12. for(i=0;ilen;i+=n)13. 14. if(len-in)15. 16. k=n-len+i;17. for(j=i;jlen;+j)18. printf(%c,strj);19. for(j=0;jk;+j)20. putchar(0);21. 22. else23. 24. for(j=i;ji+n;+j)25. printf(%c,strj);26. 27. putchar();28. 29. printf(n);30. 31. 32. intmain(void)33. 34. inti,m,n,len;35. charstr1000;36. 37. while(scanf(%d%d,&m,&n)!=EOF)38. 39. for(i=0;im;+i)40. 41. scanf(%s,str);42. len=strlen(str);43. solve(str,n,len);44. 45. 46. return0;47. 第一题:拼音转数字输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:描述: 拼音 yi er san si wu liu qi ba jiu 阿拉伯数字 1 2 3 4 5 6 7 8 9输入字符只包含小写字母,所有字符都可以正好匹配运行时间限制:无限制内存限制: 无限制输入: 一行字符串,长度小于1000输出: 一行字符(数字)串样例输入: yiersansi样例输出: 1234cppview plaincopy1. 转载请标明出处,原文地址:/hackbuteer1/article/details/392537672. #include3. #include4. usingnamespacestd;5. 6. voidsolve(char*str,intlen)7. 8. inti;9. 10. for(i=0;ilen;)11. 12. switch(stri)13. 14. casey:15. putchar(1);16. i+=2;17. break;18. casee:19. putchar(2);20. i+=2;21. break;22. cases:23. if(stri+1=a)24. 25. putchar(3);26. i+=3;27. 28. else29. 30. putchar(4);31. i+=2;32. 33. break;34. casew:35. putchar(5);36. i+=2;37. break;38. casel:39. putchar(6);40. i+=3;41. break;42. caseq:43. putchar(7);44. i+=2;45. break;46. caseb:47. putchar(8);48. i+=2;49. break;50. casej:51. putchar(9);52. i+=3;53. break;54. 55. 56. printf(n);57. 58. 59. intmain(void)60. 61. intlen;62. charstr1000;63. 64. while(scanf(%s,str)!=EOF)65. 66. len=strlen(str);67. solve(str,len);68. 69. return0;70. 第二题:去除重复字符并排序运行时间限制:无限制内容限制: 无限制输入: 字符串输出: 去除重复字符并排序的字符串样例输入: aabcdefff样例输出: abcdefcppview plaincopy1. 转载请标明出处,原文地址:/hackbuteer1/article/details/392537672. #include3. #include4. #include5. usingnamespacestd;6. 7. voidsolve(char*str,intlen)8. 9. inti,hash256;10. memset(hash,0,sizeof(hash);11. 12. for(i=0;ilen;+i)13. 14. if(0=hashstri)15. hashstri=1;16. 17. for(i=0;i256;+i)18. 19. if(0!=hashi)20. putchar(i);21. 22. printf(n);23. 24. 25. intmain(void)26. 27. intlen;28. charstr1000;29. 30. while(scanf(%s,str)!=EOF)31. 32. len=strlen(str);33. solve(str,len);34. 35. return0;36. 第三题:等式变换输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 = 5请编写程序,统计满足输入整数的所有整数个数。输入: 正整数,等式右边的数字输出: 使该等式成立的个数样例输入:5样例输出:21cppview plaincopy1. 转载请标明出处,原文地址:/hackbuteer1/article/details/392537672. #include3. #include4. usingnamespacestd;5. 6. intops21;7. constcharsym3=+,-,;8. intresult,num;9. 10. voiddfs(intlayer,intcurrentResult,intlastOp,intlastSum)11. 12. lastSum*=(layer9)?100:10;13. lastSum+=layer;14. if(layer=9)15. 16. currentResult+=(lastOp)?(-1*lastSum):lastSum;17. if(currentResult=result)18. 19. +num;20. printf(1);21. for(inti=2;i=9;+i)22. 23. if(symopsi-1!=)24. printf(%c,symopsi-1);25. printf(%d,i);26. 27. printf(=%dn,result);28. 29. return;30. 31. opslayer=2;32. dfs(layer+1,currentResult,lastOp,lastSum);/Continue33. currentResult+=(lastOp)?(-1*lastSum):lastSum;34. opslayer=0;35. dfs(layer+1,currentResult,0,0);/Plus36. opslayer=1;37. dfs(layer+1,currentResult,1,0);/Minus38. 39. 40. intmain(void)41. 42. while(scanf(%d,&result)!=EOF)43. 44. num=0;45. dfs(1,0,0,0);46. printf(%dn,num);47. 48. return0;49. 华为2016校招机试题分类:C/C+算法C/C+笔试题目2015-09-05 23:0262人阅读评论(1)收藏举报目录(?)+题目一:根据指定的分隔符分隔字符串,并输出指定的段描述根据指定的分隔符分隔字符串,并输出指定的段。如果指定的段超过分隔的段数,输出:NULL举例:AAA?BBB?CCC?2字符串为:AAA?BBB?CCC?分隔符为:?指定的段为:2字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB输入输出格式要求输入分隔字符串长度小于128个字符,指定的段是一个正整数。样例输入:AAA?BBB?CCC?2输出:BBBcppview plaincopy1. #include2. #include3. usingnamespacestd;4. 5. voidspliteStr()6. 7. charstr100;8. cinstr;9. char*strTmp=str;10. char*strStart=strchr(strTmp,?);11. strStart+;12. char*strEnd=strchr(strStart,?);13. intlen=strEnd-strStart;14. while(len!=0)15. cout*strStart;16. strStart+;17. len-;18. 19. coutendl;20. 21. 22. intmain()23. 24. spliteStr();25. system(pause);26. return0;27. 题目二:输入若干整数,输出其中能被这些整数中其他元素整除的那些元素描述输入一组大于0小于1000的整数,且均不相同,逗号隔开,输出其中能被这些整数中其他元素整除的那些元素。输入输出格式要求输入要求同上述描述,输出要求整数顺序按照输入时的顺序输出。样例输入:2,4,6,8,10,12,3,9输出:4,6,8,10,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年果味啤酒行业当前竞争格局与未来发展趋势分析报告
- 2024年大数据应用及处理技术能力知识考试题库与答案
- 2025年保育员(初级)操作证考试试题及答案
- 2025年全民病毒感染防治基础知识试题与答案
- 2024年江苏省南京市保安员理论考试题库及答案
- (2025年)黑龙江省鸡西市中级会计职称经济法预测试题含答案
- (2025年)山西省晋城市中级会计职称经济法预测试题含答案
- 摔伤安全知识培训总结
- 陕西省汉中市2024-2025学年七年级下学期期末语文试题(解析版)
- 心复苏技术试题及答案
- GB/T 45460-2025钢丝绳在无轴向载荷条件下钢丝绳径向刚度的测定
- 社区健康教育知识讲座
- 2025-2030乐器产业规划专项研究报告
- 电视广播网络安全与数据保护技术考核试卷
- 防造假培训课件视频教程
- 2025届苏锡常镇高三语文一模作文解读及范文:我会洗碗呀
- 义务消防队组建方案
- 中邮保险笔试题型及答案
- 2025-2030中国ARM核心板行业市场现状分析及竞争格局与投资发展研究报告
- 脐灸技术操作流程图及考核标准
- 给药错误PDCA课件
评论
0/150
提交评论