招聘面试届华为校园招聘上机考试题.docx
《招聘面试届华为校园招聘上机考试题.docx》由会员分享,可在线阅读,更多相关《招聘面试届华为校园招聘上机考试题.docx(13页珍藏版)》请在冰豆网上搜索。
![招聘面试届华为校园招聘上机考试题.docx](https://file1.bdocx.com/fileroot1/2023-1/3/f36a1e4f-f5fd-4ee5-8e59-327b5cdd4366/f36a1e4f-f5fd-4ee5-8e59-327b5cdd43661.gif)
招聘面试届华为校园招聘上机考试题
(招聘面试)届华为校园招聘上机考试题
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.#defineN5
6.intcal_score(intscore[],intjudge_type[],intn)
7.{
8.intexpert=0;
9.intdazhong=0;
10.intzongfen=0;
11.inti;
12.intnumber=0;
13.for(i=0;i14.{
15.if(judge_type[i]==1)
16.{
17.expert=expert+score[i];
18.number++;
19.}
20.elsedazhong=dazhong+score[i];
21.}
22.if(number==N)
23.{
24.zongfen=(int)(expert/N);
25.}
26.else
27.{
28.expert=(int)(expert/number);
29.dazhong=(int)(dazhong/(N-number));
30.zongfen=int(0.6*expert+0.4*dazhong);
31.}
32.returnzongfen;
33.}
34.intmain()
35.{
36.intscore[N];
37.intjudge_type[N];
38.intnumberlast=0;
39.inti;
40.printf("pleaseinputthe%dscore:
\n",N);
41.for(i=0;i42.scanf("%d",&score[i]);
43.printf("pleaseinputthelevel(1:
expert,2:
dazhong)\n");
44.for(i=0;i45.scanf("%d",&judge_type[i]);
46.numberlast=cal_score(score,judge_type,N);
47.printf("thelastscoreis%d\n",numberlast);
48.return0;
49.}
运行结果分析:
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.voidsort(intinput[],intn,intoutput[])
5.{
6.inti,j;
7.intk=1;
8.inttemp;
9.intmed;
10.for(i=0;i11.for(j=0;j12.if(input[j]>input[j+1])
13.{temp=input[j];input[j]=input[j+1];input[j+1]=temp;}
14.if(n%2!
=0)
15.{
16.for(i=0;i17.printf("%2d",input[i]);
18.printf("\n");
19.med=(n-1)/2;
20.output[med]=input[n-1];
21.for(i=1;i<=med;i++)
22.{
23.output[med-i]=input[n-1-k];
24.output[med+i]=input[n-2-k];
25.k=k+2;
26.}
27.}
28.else
29.{
30.for(i=0;i31.printf("%2d",input[i]);
32.printf("\n");
33.med=n/2;
34.output[med]=input[n-1];
35.for(i=1;i<=med-1;i++)
36.{
37.output[med-i]=input[n-1-k];
38.output[med+i]=input[n-2-k];
39.k=k+2;
40.}
41.output[0]=input[0];
42.}
43.for(i=0;i44.printf("%2d",output[i]);
45.printf("\n");
46.}
47.intmain()
48.{
49.inta[6]={3,6,1,9,7,8};
50.intb[6]={0};
51.for(inti=0;i<6;i++)
52.printf("%2d",a[i]);
53.printf("\n");
54.sort(a,6,b);
55.return0;
56.}
运行结果
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.voidscheduler1(inttask[],intn,intsystem_task[],intuser_task[])
6.{
7.inti;
8.intj=0;
9.int*p,*pp,*p_user,*pp_user;
10.intindex=0;
11.intcount,count2;
12.intmin=0;
13.intk=0;
14.p=(int*)malloc(sizeof(int)*n);
15.for(i=0;i16.p[i]=0;
17.pp=(int*)malloc(sizeof(int)*n);
18.for(i=0;i19.pp[i]=0;
20.p_user=(int*)malloc(sizeof(int)*n);
21.for(i=0;i22.p_user[i]=0;
23.pp_user=(int*)malloc(sizeof(int)*n);
24.for(i=0;i25.pp_user[i]=0;
26.for(i=0;i27.{
28.if(task[i]<50)
29.{
30.{
31.system_task[j]=task[i];
32.pp[j]=i;
33.j++;
34.}
35.count=j;
36.}
37.elseif(task[i]<=255)
38.{
39.{
40.user_task[k]=task[i];
41.pp_user[k]=i;
42.k++;
43.}
44.count2=k;
45.}
46.elsetask[i]=task[i];
47.}
48.for(i=0;i49.printf("%3d",system_task[i]);
50.printf("\n");
51.for(i=0;i52.{
53.min=system_task[0];
54.for(j=1;j55.{
56.if(system_task[j]57.{
58.min=system_task[j];
59.p[i]=j;
60.}
61.}
62.system_task[p[i]]=51;
63.}
64.pp[count]=-1;
65.for(i=0;i66.printf("%3d",pp[p[i]]);
67.printf("%3d\n",pp[count]);
68./***********************************************************/
69.for(i=0;i70.printf("%4d",user_task[i]);
71.printf("\n");
72.for(i=0;i73.{
74.min=user_task[0];
75.for(j=1;j76.{
77.if(user_task[j]78.{
79.min=user_task[j];
80.p_user[i]=j;
81.}
82.}
83.user_task[p_user[i]]=256;
84.}
85.pp_user[count2]=-1;
86.for(i=0;i87.printf("%4d",pp_user[p_user[i]]);
88.printf("%3d\n",pp_user[count2]);
89.}
90.intmain()
91.{
92.inttask[9]={0,30,155,1,80,300,170,40,99};
93.intsystem_task[9]={0};
94.intuser_task[9]={0};
95.scheduler1(task,9,system_task,user_task);
96.return0;
97.}
运行结果:
030140
0317-1
1558017099
4826-1
2012华为校园招聘机试(成均)-1
第壹道就是说算分数的问题,去掉壹个最高分壹个最低分,求平均分
viewplaincopytoclipboardprint?
1.#include
2.floatavescore(floatscore[],intn)
3.{
4.floatmin=0;
5.floatmax=0;
6.intminindex=0;
7.intmaxindex=0;
8.floatsum=0;
9.min=score[0];
10.for(inti=0;i11.if(score[i]12.{
13.min=score[i];
14.minindex=i;
15.}
16.score[minindex]=0;
17.max=score[0];
18.for(i=0;i19.if(score[i]>max)
20.{
21.max=score[i];
22.maxindex=i;
23.}
24.score[maxindex]=0;
25.for(i=0;i26.sum+=score[i];
27.sum=sum/(n-2);
28.returnsum;
29.}
30.voidmain()
31.{
32.floatscore[6]={70,80,90,98,87,86};
33.floatlastscore;
34.lastscore=avescore(score,6);
35.printf("thelastscoreis:
%5.2f\n",lastscore);
36.}
运行结果:
thelastscoreis:
85.75
2012华为校园招聘机试(成均)-2
分类:
华为准备2011-09-0822:
23324人阅读评论
(2)收藏举报
第二道:
对壹个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第壹位放奇数若奇数和偶数不等长,则把剩下的直接放到数组中。
-------------------思路:
先进行奇偶判断,得到奇数和偶数数组。
然后对俩数组排序,进行长度判断,最后组织数据。
viewplaincopytoclipboardprint?
1.#include
2.#include
3.voidjiou(inta[],intn)
4.{
5.int*p1;
6.int*p2;
7.inti,j;
8.intk=0;
9.intkk=0;
10.intcount1=0;
11.intcount2=0;
12.inttemp;
13.inttemp2;
14.intm=0;
15.p1=(int*)malloc(sizeof(int)*n);
16.p2=(int*)malloc(sizeof(int)*n);
17.for(i=0;i18.{
19.p1[i]=0;
20.p2[i]=0;
21.}
22.for(i=0;i23.{
24.if((a[i]%2)!
=0)
25.{p2[kk++]=a[i];}
26.else
27.{p1[k++]=a[i];}
28.}
29.count1=k;
30.count2=kk;
31.for(i=0;i32.printf("%3d",p2[i]);
33.printf("\n");
34.for(i=0;i35.for(j=0;j36.if(p2[j]>p2[j+1])
37.{temp2=p2[j];p2[j]=p2[j+1];p2[j+1]=temp2;}
38.for(i=0;i39.printf("%3d",p2[i]);
40.printf("\n");
41.for(i=0;i42.printf("%3d",p1[i]);
43.printf("\n");
44.for(i=0;i45.for(j=0;j46.if(p1[j]47.{temp=p1[j];p1[j]=p1[j+1];p1[j+1]=temp;}
48.for(i=0;i49.printf("%3d",p1[i]);
50.printf("\n");
51.if(count1>count2)
52.{
53.for(i=0;i54.{
55.a[i+m]=p2[i];
56.a[i+1+m]=p1[i];
57.m=m+1;
58.}
59.for(i=0;i60.a[2*count2+i]=p1[i+count2];
61.}
62.else
63.{
64.for(i=0;i65.{
66.a[i+m]=p2[i];
67.a[i+1+m]=p1[i];
68.m=m+1;
69.}
70.for(i=0;i71.a[2*count1+i]=p2[i+count1];
72.}
73.for(i=0;i74.printf("%3d",a[i]);
75.printf("%\n");
76.}
77.voidmain()
78.{
79.inta[10]={2,3,14,6,2,15,12,14,4,11};
80.jiou(a,10);
81.}
运行结果:
31511
31115
2146212144
1414126422
314111415126422