2012届华为校园招聘上机考试题目(9月6日下午1点场)
分类: 华为准备 2011-09-08 15:10 281人阅读 评论(0) 收藏 举报
在网上看到华为在有的地方已经开始机试了,于是决定自己先编着试试。下面是题目和自己写的代码。
1、选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。
函数接口 int cal_score(int score[], int judge_type[], int n) view plaincopy to clipboardprint?
1. #include
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 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(\input the %d score:\\n\ 47. for(i=0;i 48. scanf(\ 49. printf(\input the level(1:expert,2:dazhong)\\n\ 50. for(i=0;i 51. scanf(\ 52. numberlast=cal_score(score,judge_type,N); 53. printf(\last score is %d\\n\ 54. return 0; 55. } 运行结果分析: please input the 5 score: 90 80 87 89 91 please input the level(1:expert,2:dazhong) 1 2 1 1 1 the last score is 85 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} view plaincopy to clipboardprint? 1. #include 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. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. { for(i=0;i printf(\ printf(\ med=(n-1)/2; output[med]=input[n-1]; for(i=1;i<=med;i++) { output[med-i]=input[n-1-k]; output[med+i]=input[n-2-k]; k=k+2; } } else { for(i=0;i printf(\ printf(\ med=n/2; output[med]=input[n-1]; for(i=1;i<=med-1;i++) { 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(\ 50. printf(\ 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(\ 60. printf(\ 61. sort(a,6,b); 62. return 0; 63. } 运行结果 3 6 1 9 7 8 1 3 6 7 8 9 1 6 8 9 7 3 3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、