2012届华为上机考试题目

转载 2017年01月02日 22:12:32

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) 

 

  1. #include<stdio.h>     
  2. #include<string.h>     
  3. #include<iostream.h>     
  4. #include<conio.h>     
  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<N;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<N;i++)    
  48.         scanf("%d",&score[i]);    
  49.     printf("please input the level(1:expert,2:dazhong)\n");    
  50.     for(i=0;i<N;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. }    


 

运行结果分析:

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}

  1. #include<stdio.h>     
  2. #include<string.h>     
  3. #include<conio.h>     
  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<n;i++)    
  14.         for(j=0;j<n-i;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<n;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<n;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<n;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. }    


运行结果

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[] 中的任务按照系统任务、用户任务依次存放到 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}

             函数接口    void scheduler(int task[], int n, int system_task[], int user_task[])

 

  1. #include<stdio.h>     
  2. #include<string.h>     
  3. #include<malloc.h>     
  4. #include<iostream.h>     
  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<n;i++)    
  17.         p[i]=0;    
  18.     pp=(int*)malloc(sizeof(int)*n);    
  19.     for(i=0;i<n;i++)    
  20.         pp[i]=0;    
  21.     p_user=(int*)malloc(sizeof(int)*n);    
  22.     for(i=0;i<n;i++)    
  23.         p_user[i]=0;    
  24.     pp_user=(int*)malloc(sizeof(int)*n);    
  25.     for(i=0;i<n;i++)    
  26.         pp_user[i]=0;    
  27.         
  28.     for(i=0;i<n;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<count;i++)    
  55.         printf("%3d",system_task[i]);    
  56.     printf("\n");    
  57.         
  58.         
  59.     for(i=0;i<count;i++)    
  60.     {    
  61.         min=system_task[0];    
  62.         for(j=1;j<count;j++)    
  63.         {    
  64.                 
  65.             if(system_task[j]<min)    
  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<count;i++)    
  77.         printf("%3d",pp[p[i]]);     
  78.     printf("%3d\n",pp[count]);    
  79.         
  80.         
  81.     /***********************************************************/    
  82.         
  83.     for(i=0;i<count2;i++)    
  84.         printf("%4d",user_task[i]);    
  85.     printf("\n");    
  86.         
  87.     for(i=0;i<count2;i++)    
  88.     {    
  89.         min=user_task[0];    
  90.         for(j=1;j<count2;j++)    
  91.         {    
  92.                 
  93.             if(user_task[j]<min)    
  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<count2;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. }    


 

运行结果:

 0 30  1 40
 0  3  1  7 -1
155  80 170  99
  4   8   2   6 -1

2016年华为校招上机考试试题答案

数组排序 描述: 用户输入有符号整型数组(十进制),去掉重复值后,按照升序输出整型数组(十进制)。 输入: 整数N,表示数组的个数;N个整数,整数之间以空格隔开 输出: 去掉重复后,按照升序输出数组 ...
  • guyuealian
  • guyuealian
  • 2016年04月06日 10:02
  • 8565

华为2017年实习招聘上机题

表示今年华为的上机题是在牛客网上进行的。难度较往年来说降低了几个档次,可能是实习生招聘的要求不是那么高。之前一直在刷华为武研所的OJ,总体而言今年实习生的上机题水平与OJ上的简单题一致。     离上...
  • u013780605
  • u013780605
  • 2017年03月21日 13:47
  • 575

华为2016校园招聘上机笔试题

序 3道编程题,只解决了2道。。。 ……|| 题目1 最高分是多少 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.  输入描述: 输...
  • fly_yr
  • fly_yr
  • 2016年03月21日 20:13
  • 4690

华为上机考试注意事项及编程技巧(精品)

这是一篇关于华为招聘软件类职位上机考试的博客,主要介绍一下华为机考的流程、注意事项以及一些机试题中常用的编程技巧,写得有点长,但都是尽心尽力敲的,如果真的要参加华为招聘(或者类似公司的招聘),建议稍微...
  • HIT_Coding_Cat
  • HIT_Coding_Cat
  • 2016年10月17日 22:49
  • 3880

华为 2016实习生 上机考试 题目

第一题:字符串去掉重复的字符 第二题:简单的均值滤波算法 第三题:大数求余...
  • u010161379
  • u010161379
  • 2016年04月02日 15:25
  • 2870

2016年华为机试题

这题其实超级简单,可能是由于第一次参加机试,有点紧张,也没有什么经验,看到题干太长就没有耐心看下去。导致这题没做出来,现在整理的时候,其实挺简单的。 在二进制位图数据中,通常1是稀疏的。在位图压缩的算...
  • smallfish_love
  • smallfish_love
  • 2016年08月24日 10:55
  • 2006

华为面试上机题及答案 JAVA写的

华为机考题,自己写的答案
  • Tony_an
  • Tony_an
  • 2016年04月05日 16:30
  • 2676

华为Java机试题

1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。     程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。 packag...
  • xcbeyond
  • xcbeyond
  • 2015年05月10日 22:55
  • 21270

华为校招软件上机考试题目解析

华为校招软件上机考试,技术岗需要软件上机考试。总共三道题。 题目 分数 可以提交次数 回文数字判断 100 5 字符串排序 200 5 整数排序 300 ...
  • Gane_Cheng
  • Gane_Cheng
  • 2016年08月11日 16:47
  • 4928

[华为机试练习题]23.修改字符串

题目描述: 将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母(z变为a),大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字...
  • SunnyYoona
  • SunnyYoona
  • 2015年06月30日 21:38
  • 1328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2012届华为上机考试题目
举报原因:
原因补充:

(最多只允许输入30个字)