华为机试题.docx
- 文档编号:7498599
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:16
- 大小:109.04KB
华为机试题.docx
《华为机试题.docx》由会员分享,可在线阅读,更多相关《华为机试题.docx(16页珍藏版)》请在冰点文库上搜索。
华为机试题
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)
{
intexpert=0;
intdazhong=0;
intzongfen=0;
inti;
intnumber=0;
for(i=0;i { if(judge_type[i]==1) { expert=expert+score[i]; number++; } elsedazhong=dazhong+score[i]; } if(number==N) { zongfen=(int)(expert/N); } else { expert=(int)(expert/number); dazhong=(int)(dazhong/(N-number)); zongfen=int(0.6*expert+0.4*dazhong); } returnzongfen; } intmain() { intscore[N]; intjudge_type[N]; intnumberlast=0; inti; printf("pleaseinputthe%dscore: \n",N); for(i=0;i scanf("%d",&score[i]); printf("pleaseinputthelevel(1: expert,2: dazhong)\n"); for(i=0;i scanf("%d",&judge_type[i]); numberlast=cal_score(score,judge_type,N); printf("thelastscoreis%d\n",numberlast); 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 #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 voidscheduler1(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; } elsetask[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}; scheduler1(task,9,system_task,user_task); return0; } #include #include #include #include #defineLENGTH13 intverifyMsisdn(char*inMsisdn) { char*pchar=NULL; assert(inMsisdn! =NULL); if(LENGTH==strlen(inMsisdn)) { if(('8'==*inMsisdn)&&(*(inMsisdn+1)=='6')) { while(*inMsisdn! ='\0') { if((*inMsisdn>='0')&&(*inMsisdn<='9')) inMsisdn++; else return2; } } else return3; } else return1; return0; } intmain() { char*pchar=NULL; unsignedcharichar=0; intresult; switch(ichar) { case0: pchar="8612345363789";break; case1: pchar="861111111111111";break; case2: pchar="86s1234536366";break; default: break; } result=verifyMsisdn(pchar); printf("resultis%d\n",result); } 华赛面试: 首先自我介绍,然后将自己的项目,然后拿出笔试题来让你做。 1. charm[]={"I","LOVE","CHINA"}char*p=m;printf("%s",*p++);printf("%c",**p); intmain() { doublex=1; doubley; y=x+3/2; printf("%f\n",y); return0; }//////2.0 2.x=0x? ? 求~x! x3.4.找错unsignedintf(){unsignedchara=123;unsignedcharres;while(a-->=0){res+=a;}returnres;}5.structnode{intdata;node*pre;node*next;}结构体数组转双向循环链表群面: 12个人分两组,介绍自己,全部介绍完,抓几个人评价别的某个人对10个按重要性排序公司前景,个人兴趣,薪酬,工作地点,父母期望,解决户口,就业政策。 10分钟讨论组长汇报排序结果谁贡献最多,排序 第一题: 比较一个数组的元素 是否为回文数组 #include #include inthuiwen(charstr[]) { inti,len,k=0; len=strlen(str); for(i=0;i { if(str[i]! =str[len-i-1]) { k=1; break; } } if(k==0) printf("%s不是一个回文数\n",str); else printf("%s是一个回文数\n",str); } voidmain() { charstr[100]={0}; inti; intlen; printf("Inputastring: ");/*提示输入Inputastring: */ scanf("%s",str);/*scan()函数输入一个字符串: */ huiwen(str); } 第二题: 求两个数组的和差 就是去掉两个数组中相同的元素 然后将两个数组中的元素存放在一个新的数组中 切数组A中元素要在B数组元素之前 第三题: 比较汗 求简单的四则运算 参与运算的数字只有0--9 逆序单链表 第一题【20分】: 鉴定回文数组。 第二题【30分】: 求两个整型数组的异集,即A+B-(A与B的交集)。 第三题【50分】: 判定德州扑克的牌型。 给5张牌,返回它的牌型,4个的,3个+对子,顺子,3个+2个单张,2对,1对,其他。 上午是输入一个数组,然后找出哪个比平均值大上午是输入一个数组,然后找出哪个比平均值大 华为上机题: 1)天大: 上午是输入一个数组,然后找出哪个比平均值大 下午是链表的reverse 2)四川大学: 刚考完,都是编程题,不难挺基本的。 数组比较,约瑟夫环,字符串计算 3) 第一题【20分】: 鉴定回文数组。 第二题【30分】: 求两个整型数组的异集,即A+B-(A与B的交集)。 第三题【50分】: 判定德州扑克的牌型。 给5张牌,返回它的牌型,4个的,3个+对子,顺子,3个+2个单张,2对,1对,其他。 算法都不难,关键看细心度啦。 祝各位好运! 第一题【20分】: 鉴定回文数组。 第二题【30分】: 求两个整型数组的异集,即A+B-(A与B的交集)。 第三题【50分】: 判定德州扑克的牌型。 给5张牌,返回它的牌型,4个的,3个+对子,顺子,3个+2个单张,2对,1对,其他。 算法都不难,关键看细心度啦。 祝各位好运! 销售网络问题 时间限制(普通/Java): 1000MS/3000MS运行内存限制: 65536KByte 问题描述 华为公司积极开拓北美市场,首先在北美建立销售总部,总部在附近地区发展一些销售点,这些销售点可以发展建立下一级销售点,依此类推,最终形成一个新型分级销售网络。 假设在销售网络中,有N个销售点(包括总部),将它们分别编号为1至N。 考虑到金融危机,销售总部决定撤销一些销售点,保留其他销售点。 需要注意是: (1)如果撤销一个销售点,那么该销售点发展的所有下级销售点均要撤销,依此类推; (2)销售总部不能撤销自己; (3)销售总部可以不撤销任何销售点。 请你帮忙告诉华为公司: 共存在多少个销售点撤销方案。 问题输入 输入包括多个行,首先给出一个整数N,接着N-1行给出销售网络的建立过程,在这N-1行中,第j行(1≤j≤N-1)给出一个整数k(i 销售点N就是销售总部。 问题输出 输出一行,给出销售点撤销方案数。 样例输入 3 2 3 样例输出 3 提示: 样例有3个销售点(包括总部),“销售点2”发展了“销售点1”,“销售点3”发展了“销售点2”,根据描述,有以下3种销售点撤销方案: (1)不撤销任何销售点; (2)撤销“销售点1”;(3)撤销“销售点1”、“销售点2”。 语言识别问题 时间限制(普通/Java): 10000MS/30000MS运行内存限制: 65536KByte 问题描述 给你一段英文或德文文字,你能编程识别它可能是哪种语言吗? 研究发现,统计文字中字母“t”(或“T”)与“s”(或“S”)出现的次数,如果给定文字中“t”(或“T”)的出现次数比“s”(或“S”)多,则可能为英文,否则可能为德文。 问题输入 输入包括多个行数,首先给出整数N(1 问题输出 输出包括一行,如果输入文字可能为英文,则输出English,否则输出Deutsch。 样例输入 6 ONTHISTHERESTOFTHEACHAEANSWITH ONEVOICEWEREFORRESPECTING THEPRIESTANDTAKINGTHERANSOMTHATHEOFFERED;BUTNOTSOAGAMEMNON, WHOSPOKEFIERCELYTOHIMANDSENTHIMROUGHLYAWAY. OLDMAN,SAIDHE, LETMENOTFINDYOUTARRYINGABOUTOURSHIPS 样例输出 English 提示 本题纯属虚构 股票投资问题 时间限制(普通/Java): 1000MS/3000MS运行内存限制: 65536KByte 问题描述 股票是一种有价证券,是股份公司为筹集资金发给投资者作为公司资本部分所有权的凭证,成为股东以此获得股息(股利),并分享公司成长或交易市场波动带来的利润;但也要共同承担公司运作错误所带来的风险。 南邮华为俱乐部会长小郑同学最近计划进入股市淘金,看中一支股票,借本次华为赛机会,请你帮忙指出: 何时买卖这支股票,才能获得最大收益。 已知小郑投资A元,可以预测到未来12天该支股票的价格,请注意: (1)股票每一天的价格都不一样; (2)如果同时有两种安排获得一样的收益,选择在股价最低时购买; (3)小郑在12天内只能购买一次股票,并且认购的股数必须为整数; (4)如果按照股价趋势,不能获得收益,只需输出IMPOSSIBLE。 问题输入 输入包括多个测试用例,首先给出测试用例数B,接着给出B个测试用例。 每一个测试用例包括两行,其中第一行给出小郑计划投资的资金数A,第一行给出以空格分隔的12个整数,指出未来12天股票每一天价格F。 注意: 100≤A≤500,B≤200,1≤F≤250。 问题输出 输出包括多行,对于每个测试用例输出一行,输出IMPOSSIBLE;或者以空格分隔的3个整数C、D、E,第1个整数C表示小郑第C天购买股票(1≤C≤11),第2个整数D表示小郑第D天卖出股票(C+1≤D≤12),第3个整数E表示小郑的股票收益。 样例输入 2 146 20811710923814424813839106915918 120 121110987654321 样例输出 10112400 IMPOSSIBLE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 试题