届华为校园招聘上机考试题.docx
- 文档编号:8241054
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:19.65KB
届华为校园招聘上机考试题.docx
《届华为校园招聘上机考试题.docx》由会员分享,可在线阅读,更多相关《届华为校园招聘上机考试题.docx(15页珍藏版)》请在冰豆网上搜索。
届华为校园招聘上机考试题
2012届华为校园招聘上机考试题目(9月6日下午1点场)
分类:
华为准备2011-09-0815:
10281人阅读评论(0)收藏举报
在网上看到华为在有的地方已经开始机试了,于是决定自己先编着试试。
下面是题目和自己写的代码。
1、选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[]里存储与score[]数组对应的评委类别,judge_type[i]==1,表示专家评委,judge_type[i]==2,表示大众评委,n表示评委总数。
打分规则如下:
专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分=专家评委平均分 * 0.6+大众评委*0.4,总分取整。
如果没有大众评委,则总分=专家评委平均分,总分取整。
函数最终返回选手得分。
函数接口 intcal_score(intscore[],intjudge_type[],intn)
viewplaincopytoclipboardprint?
1.#include
2.#include
3.#include
4.#include
5.#define N 5
6.
7.int cal_score(int score[], int judge_type[], int n)
8.
9.{
10. int expert=0;
11. int dazhong=0;
12. int zongfen=0;
13. int i;
14. int number=0;
15.
16. for(i=0;i 17. { 18. if(judge_type[i]==1) 19. { 20. expert=expert+score[i]; 21. number++; 22. } 23. else dazhong=dazhong+score[i]; 24. } 25. if(number==N) 26. { 27. zongfen=(int)(expert/N); 28. } 29. else 30. 31. { 32. expert=(int)(expert/number); 33. dazhong=(int)(dazhong/(N-number)); 34. zongfen=int(0.6*expert+0.4*dazhong); 35. 36. } 37. return zongfen; 38. 39.} 40.int main() 41.{ 42. int score[N]; 43. int judge_type[N]; 44. int numberlast=0; 45. int i; 46. printf("please input the %d score: \n",N); 47. for(i=0;i 48. scanf("%d",&score[i]); 49. printf("please input the level(1: expert,2: dazhong)\n"); 50. for(i=0;i 51. scanf("%d",&judge_type[i]); 52. numberlast=cal_score(score,judge_type,N); 53. printf("the last score is %d\n",numberlast); 54. return 0; 55.} 运行结果分析: pleaseinputthe5score: 9080878991 pleaseinputthelevel(1: expert,2: dazhong) 12111 thelastscoreis85 2、给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如: 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,3} viewplaincopytoclipboardprint? 1.#include 2.#include 3.#include 4. 5. 6. 7.void sort(int input[], int n, int output[]) 8.{ 9. int i,j; 10. int k=1; 11. int temp; 12. int med; 13. for(i=0;i 14. for(j=0;j 15. if(input[j]>input[j+1]) 16. {temp=input[j];input[j]=input[j+1];input[j+1]=temp;} 17. if(n%2! =0) 18. { 19. for(i=0;i 20. printf("%2d",input[i]); 21. printf("\n"); 22. med=(n-1)/2; 23. output[med]=input[n-1]; 24. for(i=1;i<=med;i++) 25. { 26. output[med-i]=input[n-1-k]; 27. output[med+i]=input[n-2-k]; 28. k=k+2; 29. 30. } 31. } 32. else 33. { 34. 35. for(i=0;i 36. printf("%2d",input[i]); 37. printf("\n"); 38. med=n/2; 39. output[med]=input[n-1]; 40. for(i=1;i<=med-1;i++) 41. { 42. output[med-i]=input[n-1-k]; 43. output[med+i]=input[n-2-k]; 44. k=k+2; 45. } 46. output[0]=input[0]; 47. } 48. for(i=0;i 49. printf("%2d",output[i]); 50. printf("\n"); 51.} 52. 53. 54.int main() 55.{ 56. int a[6]={3,6,1,9,7,8}; 57. int b[6]={0}; 58. for(int i=0;i<6;i++) 59. printf("%2d",a[i]); 60. printf("\n"); 61. sort(a,6,b); 62. return 0; 63.} 运行结果 361978 136789 168973 3、操作系统任务调度问题。 操作系统任务分为系统任务和用户任务两种。 其中,系统任务的优先级<50,用户任务的优先级>=50且<=255。 优先级大于255的为非法任务,应予以剔除。 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。 函数scheduler实现如下功能,将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} 函数接口 voidscheduler(inttask[],intn,intsystem_task[],intuser_task[]) viewplaincopytoclipboardprint? 1.#include 2.#include 3.#include 4.#include 5. 6.void scheduler1(int task[], int n, int system_task[], int user_task[]) 7.{ 8. int i; 9. int j=0; 10. int *p,*pp,*p_user,*pp_user; 11. int index=0; 12. int count,count2; 13. int min=0; 14. int k=0; 15. p=(int*)malloc(sizeof(int)*n); 16. for(i=0;i 17. p[i]=0; 18. pp=(int*)malloc(sizeof(int)*n); 19. for(i=0;i 20. pp[i]=0; 21. p_user=(int*)malloc(sizeof(int)*n); 22. for(i=0;i 23. p_user[i]=0; 24. pp_user=(int*)malloc(sizeof(int)*n); 25. for(i=0;i 26. pp_user[i]=0; 27. 28. for(i=0;i 29. { 30. if(task[i]<50) 31. { 32. { 33. system_task[j]=task[i]; 34. pp[j]=i; 35. j++; 36. } 37. count=j; 38. } 39. 40. else if(task[i]<=255) 41. { 42. 43. { 44. user_task[k]=task[i]; 45. pp_user[k]=i; 46. k++; 47. } 48. count2=k; 49. } 50. else task[i]=task[i]; 51. 52. } 53. 54. for(i=0;i 55. printf("%3d",system_task[i]); 56. printf("\n"); 57. 58. 59. for(i=0;i 60. { 61. min=system_task[0]; 62. for(j=1;j 63. { 64. 65. if(system_task[j] 66. { 67. min=system_task[j]; 68. p[i]=j; 69. } 70. 71. } 72. system_task[p[i]]=51; 73. } 74. 75. pp[count]=-1; 76. for(i=0;i 77. printf("%3d",pp[p[i]]); 78. printf("%3d\n",pp[count]); 79. 80. 81. /***********************************************************/ 82. 83. for(i=0;i 84. printf("%4d",user_task[i]); 85. printf("\n"); 86. 87. for(i=0;i 88. { 89. min=user_task[0]; 90. for(j=1;j 91. { 92. 93. if(user_task[j] 94. { 95. min=user_task[j]; 96. p_user[i]=j; 97. } 98. 99. } 100. user_task[p_user[i]]=256; 101. } 102. 103. pp_user[count2]=-1; 104. for(i=0;i 105. printf("%4d",pp_user[p_user[i]]); 106. printf("%3d\n",pp_user[count2]); 107. 108. 109.} 110. 111. 112. 113.int main() 114.{ 115. int task[9]={0, 30, 155, 1, 80, 300,170, 40, 99}; 116. int system_task[9]={0}; 117. int user_task[9]={0}; 118. scheduler1(task,9,system_task,user_task); 119. return 0; 120.} 运行结果: 030 140 0 3 1 7-1 155 80170 99 4 8 2 6-1 2012华为校园招聘机试(成都)-1 第一道就是说算分数的问题,去掉一个最高分一个最低分,求平均分 viewplaincopytoclipboardprint? 1.#include 2.float avescore(float score[],int n) 3.{ 4. float min=0; 5. float max=0; 6. int minindex=0; 7. int maxindex=0; 8. float sum=0; 9. min=score[0]; 10. for(int i=0;i 11. if(score[i] 12. { 13. min=score[i]; 14. minindex=i; 15. } 16. score[minindex]=0; 17. max=score[0]; 18. for(i=0;i 19. if(score[i]>max) 20. { 21. max=score[i]; 22. maxindex=i; 23. } 24. score[maxindex]=0; 25. for(i=0;i 26. sum+=score[i]; 27. sum=sum/(n-2); 28. return sum; 29.} 30.void main() 31.{ 32. float score[6]={70,80,90,98,87,86}; 33. float lastscore; 34. lastscore=avescore(score,6); 35. printf("the last score is : %5.2f\n",lastscore); 36. 37.} 运行结果: thelastscoreis: 85.75 2012华为校园招聘机试(成都)-2 分类: 华为准备2011-09-0822: 23324人阅读评论 (2)收藏举报 第二道: 对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。 -------------------思路: 先进行奇偶判断,得到奇数和偶数数组。 然后对两数组排序,进行长度判断,最后组织数据。 viewplaincopytoclipboardprint? 1.#include 2.#include 3. 4.void jiou(int a[],int n) 5.{ 6. int *p1; 7. int *p2; 8. int i,j; 9. int k=0; 10. int kk=0; 11. int count1=0; 12. int count2=0; 13. int temp; 14. int temp2; 15. int m=0; 16. p1=(int*)malloc(size
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 校园 招聘 上机 考试题
![提示](https://static.bdocx.com/images/bang_tan.gif)