华为机试题目参考1.docx

上传人:b****8 文档编号:28245445 上传时间:2023-07-09 格式:DOCX 页数:18 大小:51.31KB
下载 相关 举报
华为机试题目参考1.docx_第1页
第1页 / 共18页
华为机试题目参考1.docx_第2页
第2页 / 共18页
华为机试题目参考1.docx_第3页
第3页 / 共18页
华为机试题目参考1.docx_第4页
第4页 / 共18页
华为机试题目参考1.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

华为机试题目参考1.docx

《华为机试题目参考1.docx》由会员分享,可在线阅读,更多相关《华为机试题目参考1.docx(18页珍藏版)》请在冰豆网上搜索。

华为机试题目参考1.docx

华为机试题目参考1

华为南京地区校园招聘软件类上机考试说明同学您好!

欢迎您应聘华为公司。

软件研发类岗位(软件研发、云计算、操作系统开发、数据库开发)需要提前进行上机考试。

现将上机考试做如下说明。

一、        题目类别

本次上机考试题目设置C/C++、Java两个类别,根据个人情况选作一个类别。

二、        题目数量

每个考生有三道题,第一二道题必答,第三道题为附加题可以选作,附加题做出,成绩会计入总分。

三、        考试时间安排

1、简历筛选后,从9月17日开始分批安排上机考试

2、每个考生上机考试时间为2小时

一、        上机考试步骤

1、打开IE输入服务器的IP地址或者直接打开收藏夹中已经收藏好的地址;

2、输入姓名和手机号,选择考试语言,提交登录:

3、登录后会进入试题说明页面,考试阅读完试题要求后,在页面下方点击下载试题框架并解压到D盘。

如果是C/C++则用VC打开工程进行编程,只在func.cpp文件中进行函数编写,函数名已经定义好;如果是Java则用Eclips打开Java工程进行编程,只在SWTest.java文件中进行函数编写,函数名已经定义好。

注意,考生不要进行任何IO输入输出的处理(题目说明中已经有写了),否则会得0分。

4、编完代码并编译和调试通过后,点击试题页面下方的按钮,在弹出的窗口中,如果是C/C++则将test.exe和func.cpp拷贝到一个名为test的目录中然后打包该目录上传,如果是Java则将工程仍然打包为SWTest.rar一次性上传(这个过程非常重要,否则会因无法自动判卷而得0分)。

上传之后页面会显示“提交成功”,然后关闭所有IE窗口并清空客户机中您所创建的所有内容后结束考试离开考场。

二、        如何阅卷

1、考生提交试卷后,我们在服务器后台执行系统阅卷程序,进行自动判卷,不进行人工阅卷。

2、系统设置了多个测试用例,根据用例执行的情况判断考生所上机考试的分数。

三、        样题

编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素的个数并返回。

预祝您上机考试顺利!

华为南京校园招聘组

2011年9月

2012华为校园招聘机试(成都)

1.选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[]里存储与score[]数组对应的评委类别,judge_type[i]==1,表示专家评委,judge_type[i]==2,表示大众评委,n表示评委总数。

打分规则如下:

专家评委和大众评委的分数分别取一个平均分(平均分取整),然后,总分=专家分*0.6+大众评委*0.4,总分取整。

如果没有大众评委,则总分=专家评委平均分,总分取整。

函数最终返回选手得分。

函数接口:

intcal_score(intscore[],intjudge_type[],intn)

#include

#include

#include

#include

#defineN5

intcal_score(intscore[],intjudge_type[],intn)

{

intiExpert=0;

intiPeople=0;

intiTotalPoints=0;

inti;

intiNumber=0;

for(i=0;i

{

if(judge_type[i]==1)

{

iExpert=iExpert+score[i];

iNumber++;

}

else

{

iPeople=iPeople+score[i];

}

}

if(iNumber==N)

{

iTotalPoints=(int)(iExpert/N);

}

else

{

iExpert=(int)(iExpert/iNumber);

iPeople=(int)(iPeople/(N-iNumber));

iTotalPoints=(int)(iExpert*0.6+iPeople*0.4);

}

returniTotalPoints;

}

intmain()

{

intscore[N];

intjudge_type[N];

intiNumberLast=0;

inti;

printf("Pleaseinputthe%dscore:

\n",N);

for(i=0;i

{

scanf("%d",&score[i]);

}

printf("Pleaseinputthelevel(1:

Expert,2:

People)\n");

for(i=0;i

{

scanf("%d",&judge_type[i]);

}

iNumberLast=cal_score(score,judge_type,N);

printf("Thelastscoreis%d\n",iNumberLast);

return0;

}

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}

#include

usingnamespacestd;

intsort(intinput[],intn,intoutput[]);

intmain()

{

inti,n;

intinput[100],output[100];

cout<<"请输入数组的长度:

"<

cin>>n;

cout<<"请输入该数组:

"<

for(i=0;i

{

cin>>input[i];

}

sort(input,n,output);

cout<<"排序后的结果是:

"<

for(i=0;i

{

cout<

}

cout<

return0;

}

 

intsort(intinput[],intn,intoutput[])

{

inti,j;

inttemp;

intm;

intk;

for(i=0;i

{

for(j=i+1;j

{

if(input[i]>input[j])

{

temp=input[i];

input[i]=input[j];

input[j]=temp;

}

}

}

cout<<"升序排列数组:

"<

for(i=0;i

{

cout<

}

cout<

if(n%2==0)

{

m=n/2;

k=n-1;

output[m]=input[k--];

for(j=1;j

{

output[m-j]=input[k--];

output[m+j]=input[k--];

}

output[0]=input[0];

}

else

{

m=(n-1)/2;

k=n-1;

output[m]=input[k--];

for(j=1;j

{

output[m-j]=input[k--];

output[m+j]=input[k--];

}

}

return*output;

}

#include

#include

#include

voidsort(intinput[],intn,intoutput[])

{

inti,j;

intk=1;

inttemp;

intmed;

for(i=0;i

{

for(j=0;j

{

if(input[j]>input[j+1])

{

temp=input[j];

input[j]=input[j+1];

input[j+1]=temp;

}

}

}

if(n%2!

=0)

{

for(i=0;i

{

printf("%2d",input[i]);

}

printf("\n");

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("%2d",input[i]);

}

printf("\n");

med=n/2;

output[med]=input[n-1];

for(i=1;i<=med-1;i++)

{

output[med-i]=input[n-1-k];

output[med+i]=input[n-2-k];

k=k+2;

}

output[0]=input[0];

}

for(i=0;i

{

printf("%2d",output[i]);

}

printf("\n");

}

intmain()

{

inta[6]={3,6,1,9,7,8};

intb[6]={0};

for(inti=0;i<6;i++)

{

printf("%2d",a[i]);

}

printf("\n");

sort(a,6,b);

return0;

}

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[])

#include

#include

#include

#include

voidscheduler(inttask[],intn,intsystem_task[],intuser_task[])

{

inti;

intj=0;

intk=0;

ints;

inttemp;

 

for(i=0;i

{

if(task[i]<50)

{

system_task[j++]=i;

}

elseif(task[i]>=50&&task[i]<=255)

{

user_task[k++]=i;

}

}

system_task[j]=-1;

user_task[k]=-1;

for(i=1;i

{

for(s=0;s

{

if(task[system_task[s]]>task[system_task[s+1]])

{

temp=system_task[s];

system_task[s]=system_task[s+1];

system_task[s+1]=temp;

}

}

}

for(i=0;i<=j;i++)

{

cout<

}

cout<

for(i=1;i

{

for(s=0;s

{

if(task[user_task[s]]>task[user_task[s+1]])

{

temp=user_task[s];

user_task[s]=user_task[s+1];

user_task[s+1]=temp;

}

}

}

for(i=0;i<=k;i++)

{

cout<

}

cout<

}

intmain()

{

inttask[9]={0,30,155,1,80,300,170,40,99};

intsystem_task[9]={0};

intuser_task[9]={0};

scheduler(task,9,system_task,user_task);

return0;

}

#include

#include

#include

#include

voidscheduler(inttask[],intn,intsystem_task[],intuser_task[])

{

inti;

intj=0;

int*p,*pp,*p_user,*pp_user;

intindex=0;

intcount,count2;

intmin=0;

intk=0;

p=(int*)malloc(sizeof(int)*n);

for(i=0;i

{

p[i]=0;

}

pp=(int*)malloc(sizeof(int)*n);

for(i=0;i

{

pp[i]=0;

}

p_user=(int*)malloc(sizeof(int)*n);

for(i=0;i

{

p_user[i]=0;

}

pp_user=(int*)malloc(sizeof(int)*n);

for(i=0;i

{

pp_user[i]=0;

}

for(i=0;i

{

if(task[i]<50)

{

{

system_task[j]=task[i];

pp[j]=i;

j++;

}

count=j;

}

elseif(task[i]<=255)

{

{

user_task[k]=task[i];

pp_user[k]=i;

k++;

}

count2=k;

}

else

task[i]=task[i];

}

for(i=0;i

{

printf("%3d",system_task[i]);

}

printf("\n");

for(i=0;i

{

min=system_task[0];

for(j=1;j

{

if(system_task[j]

{

min=system_task[j];

p[i]=j;

}

}

system_task[p[i]]=51;

}

pp[count]=-1;

for(i=0;i

{

printf("%3d",pp[p[i]]);

}

printf("%3d\n",pp[count]);

 

for(i=0;i

{

printf("%4d",user_task[i]);

}

printf("\n");

for(i=0;i

{

min=user_task[0];

for(j=1;j

{

if(user_task[j]

{

min=user_task[j];

p_user[i]=j;

}

}

user_task[p_user[i]]=256;

}

pp_user[count2]=-1;

for(i=0;i

{

printf("%4d",pp_user[p_user[i]]);

}

printf("%3d\n",pp_user[count2]);

}

intmain()

{

inttask[9]={0,30,155,1,80,300,170,40,99};

intsystem_task[9]={0};

intuser_task[9]={0};

scheduler(task,9,system_task,user_task);

return0;

}

 

祝你好运!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1