华为校园招聘上机考试题_第1页
华为校园招聘上机考试题_第2页
华为校园招聘上机考试题_第3页
华为校园招聘上机考试题_第4页
华为校园招聘上机考试题_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华为校园招聘上机考试题目(9月6日下午1点场) 在网上看到华为在有的地方已经开始机试了,于是决定自己先编着试试。下面是题目和自己写的代码。1、选秀节目打分,分为专家评委和大众评委,score 数组里面存储每个评委打的分数,judge_type 里存储与 score 数组对应的评委类别,judge_typei = 1,表示专家评委,judge_typei = 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 *0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整

2、。函数最终返回选手得分。函数接口 int cal_score(int score, int judge_type, int n)view plaincopy to clipboardprint?1. #include 2. #include 3. #include 4. #include 5. #defineN5 6. 7. intcal_score(intscore,intjudge_type,intn)8. 9. 10. intexpert=0;11. intdazhong=0;12. intzongfen=0;13. inti;14. intnumber=0;15. 16. for(i=

3、0;iN;i+)17. 18. if(judge_typei=1)19. 20. expert=expert+scorei;21. number+;22. 23. elsedazhong=dazhong+scorei;24. 25. if(number=N)26. 27. zongfen=(int)(expert/N);28. 29. else30. 31. 32. expert=(int)(expert/number);33. dazhong=(int)(dazhong/(N-number);34. zongfen=int(0.6*expert+0.4*dazhong);35. 36. 37

4、. returnzongfen;38. 39. 40. intmain()41. 42. intscoreN;43. intjudge_typeN;44. intnumberlast=0;45. inti;46. printf(pleaseinputthe%dscore:n,N);47. for(i=0;iN;i+)48. scanf(%d,&scorei);49. printf(pleaseinputthelevel(1:expert,2:dazhong)n);50. for(i=0;iN;i+)51. scanf(%d,&judge_typei);52. numberlast=cal_sc

5、ore(score,judge_type,N);53. printf(thelastscoreis%dn,numberlast);54. return0;55. 运行结果分析:please input the 5 score:90 80 87 89 91please input the level(1:expert,2:dazhong)1 2 1 1 1the last score is 85 2、给定一个数组input ,如果数组长度n为奇数,则将数组中最大的元素放到 output 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output 数组中间两个位置偏右的那个位置

6、上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input = 3, 6, 1, 9, 7 output = 3, 7, 9, 6, 1; input = 3, 6, 1, 9, 7, 8 output =1, 6, 8, 9, 7, 3view plaincopy to clipboardprint?1. #include 2. #include 3. #include 4. 5. 6. 7. voidsort(intinput,intn,intoutput)8. 9. inti,j;10. intk=1;11. inttemp;12. in

7、tmed;13. for(i=0;in;i+)14. for(j=0;jinputj+1)16. temp=inputj;inputj=inputj+1;inputj+1=temp;17. if(n%2!=0)18. 19. for(i=0;in;i+)20. printf(%2d,inputi);21. printf(n);22. med=(n-1)/2;23. outputmed=inputn-1;24. for(i=1;i=med;i+)25. 26. outputmed-i=inputn-1-k;27. outputmed+i=inputn-2-k;28. k=k+2;29. 30.

8、31. 32. else33. 34. 35. for(i=0;in;i+)36. printf(%2d,inputi);37. printf(n);38. med=n/2;39. outputmed=inputn-1;40. for(i=1;i=med-1;i+)41. 42. outputmed-i=inputn-1-k;43. outputmed+i=inputn-2-k;44. k=k+2;45. 46. output0=input0;47. 48. for(i=0;in;i+)49. printf(%2d,outputi);50. printf(n);51. 52. 53. 54.

9、intmain()55. 56. inta6=3,6,1,9,7,8;57. intb6=0;58. for(inti=0;i6;i+)59. printf(%2d,ai);60. printf(n);61. sort(a,6,b);62. return0;63. 运行结果3 6 1 9 7 81 3 6 7 8 91 6 8 9 7 33、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 = 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task,长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数sche

10、duler实现如下功能,将task 中的任务按照系统任务、用户任务依次存放到 system_task 数组和 user_task 数组中(数组中元素的值是任务在task 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。 例如:task = 0, 30, 155, 1, 80, 300, 170, 40, 99 system_task = 0, 3, 1, 7, -1 user_task = 4, 8, 2, 6, -1 函数接口 void scheduler(int task, int n, int system_task, int user_task)view plain

11、copy to clipboardprint?1. #include 2. #include 3. #include 4. #include 5. 6. voidscheduler1(inttask,intn,intsystem_task,intuser_task)7. 8. inti;9. intj=0;10. int*p,*pp,*p_user,*pp_user;11. intindex=0;12. intcount,count2;13. intmin=0;14. intk=0;15. p=(int*)malloc(sizeof(int)*n);16. for(i=0;in;i+)17.

12、pi=0;18. pp=(int*)malloc(sizeof(int)*n);19. for(i=0;in;i+)20. ppi=0;21. p_user=(int*)malloc(sizeof(int)*n);22. for(i=0;in;i+)23. p_useri=0;24. pp_user=(int*)malloc(sizeof(int)*n);25. for(i=0;in;i+)26. pp_useri=0;27. 28. for(i=0;in;i+)29. 30. if(taski50)31. 32. 33. system_taskj=taski;34. ppj=i;35. j+

13、;36. 37. count=j;38. 39. 40. elseif(taski=255)41. 42. 43. 44. user_taskk=taski;45. pp_userk=i;46. k+;47. 48. count2=k;49. 50. elsetaski=taski;51. 52. 53. 54. for(i=0;icount;i+)55. printf(%3d,system_taski);56. printf(n);57. 58. 59. for(i=0;icount;i+)60. 61. min=system_task0;62. for(j=1;jcount;j+)63.

14、64. 65. if(system_taskjmin)66. 67. min=system_taskj;68. pi=j;69. 70. 71. 72. system_taskpi=51;73. 74. 75. ppcount=-1;76. for(i=0;icount;i+)77. printf(%3d,pppi);78. printf(%3dn,ppcount);79. 80. 81. /*/82. 83. for(i=0;icount2;i+)84. printf(%4d,user_taski);85. printf(n);86. 87. for(i=0;icount2;i+)88. 8

15、9. min=user_task0;90. for(j=1;jcount2;j+)91. 92. 93. if(user_taskjmin)94. 95. min=user_taskj;96. p_useri=j;97. 98. 99. 100. user_taskp_useri=256;101. 102. 103. pp_usercount2=-1;104. for(i=0;icount2;i+)105. printf(%4d,pp_userp_useri);106. printf(%3dn,pp_usercount2);107. 108. 109. 110. 111. 112. 113.

16、intmain()114. 115. inttask9=0,30,155,1,80,300,170,40,99;116. intsystem_task9=0;117. intuser_task9=0;118. scheduler1(task,9,system_task,user_task);119. return0;120. 运行结果:0 30 1 400 3 1 7 -1155 80 170 994 8 2 6 -12012华为校园招聘机试(成都)-1第一道就是说算分数的问题,去掉一个最高分一个最低分,求平均分view plaincopy to clipboardprint?1. #incl

17、ude 2. floatavescore(floatscore,intn)3. 4. floatmin=0;5. floatmax=0;6. intminindex=0;7. intmaxindex=0;8. floatsum=0;9. min=score0;10. for(inti=0;in;i+)11. if(scoreimin)12. 13. min=scorei;14. minindex=i;15. 16. scoreminindex=0;17. max=score0;18. for(i=0;imax)20. 21. max=scorei;22. maxindex=i;23. 24.

18、scoremaxindex=0;25. for(i=0;in;i+)26. sum+=scorei;27. sum=sum/(n-2);28. returnsum;29. 30. voidmain()31. 32. floatscore6=70,80,90,98,87,86;33. floatlastscore;34. lastscore=avescore(score,6);35. printf(thelastscoreis:%5.2fn,lastscore);36. 37. 运行结果:the last score is :85.752012华为校园招聘机试(成都)-2 分类: 华为准备 20

19、11-09-08 22:23 324人阅读 评论(2) 收藏 举报 第二道:对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。-思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。 view plaincopy to clipboardprint?1. #include 2. #include 3. 4. voidjiou(inta,intn)5. 6. int*p1;7. int*p2;8. inti,j;9. intk=0;10. intkk=0;11. int

20、count1=0;12. intcount2=0;13. inttemp;14. inttemp2;15. intm=0;16. p1=(int*)malloc(sizeof(int)*n);17. p2=(int*)malloc(sizeof(int)*n);18. for(i=0;in;i+)19. 20. p1i=0;21. p2i=0;22. 23. 24. for(i=0;in;i+)25. 26. 27. if(ai%2)!=0)28. p2kk+=ai;29. else30. p1k+=ai;31. 32. count1=k;33. count2=kk;34. 35. for(i=0;icount2;i+)36. printf(%3d,p2i);37. printf(n);38. 39. for(i=0;icount2;i+)40. for(j=0;jp2j+1)42. temp2=p2j;p2j=p2j+1;p2j+1=temp2;43. for(i=0;icount2;i+)44. printf(%3d,p2i);45. printf(n);46.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论