XXXX届华为校园招聘上机考试题.docx

上传人:b****2 文档编号:18861621 上传时间:2023-04-24 格式:DOCX 页数:17 大小:18.43KB
下载 相关 举报
XXXX届华为校园招聘上机考试题.docx_第1页
第1页 / 共17页
XXXX届华为校园招聘上机考试题.docx_第2页
第2页 / 共17页
XXXX届华为校园招聘上机考试题.docx_第3页
第3页 / 共17页
XXXX届华为校园招聘上机考试题.docx_第4页
第4页 / 共17页
XXXX届华为校园招聘上机考试题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

XXXX届华为校园招聘上机考试题.docx

《XXXX届华为校园招聘上机考试题.docx》由会员分享,可在线阅读,更多相关《XXXX届华为校园招聘上机考试题.docx(17页珍藏版)》请在冰豆网上搜索。

XXXX届华为校园招聘上机考试题.docx

XXXX届华为校园招聘上机考试题

XXXX届华为校园招聘上机考试题

分类:

华为预备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?

#include  

#include  

#include  

#include  

#define N 5  

  

int cal_score(int score[], int judge_type[], int n)   

  

{  

    int expert=0;  

    int dazhong=0;  

    int zongfen=0;  

    int i;  

    int number=0;  

      

    for(i=0;i

    {  

        if(judge_type[i]==1)  

        {  

            expert=expert+score[i];  

            number++;  

        }  

        else dazhong=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);  

          

    }  

    return zongfen;  

      

}  

int main()  

{  

    int score[N];  

    int judge_type[N];  

    int numberlast=0;  

    int i;  

    printf("please input the %d score:

\n",N);  

    for(i=0;i

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

    printf("please input the level(1:

expert,2:

dazhong)\n");  

    for(i=0;i

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

    numberlast=cal_score(score,judge_type,N);  

    printf("the last score is %d\n",numberlast);  

    return 0;  

}  

运行结果分析:

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?

#include  

#include  

#include  

  

  

  

void sort(int input[], int n, int output[])  

{  

    int i,j;  

    int k=1;  

    int temp;  

    int med;  

    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");  

}  

  

  

int main()  

{  

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

    int b[6]={0};  

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

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

    printf("\n");  

    sort(a,6,b);  

    return 0;  

}  

运行结果

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?

#include  

#include  

#include  

#include  

  

void scheduler1(int task[], int n, int system_task[], int user_task[])  

{  

    int i;  

    int j=0;  

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

    int index=0;  

    int count,count2;  

    int min=0;  

    int k=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;  

        }  

          

        else if(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]);  

      

      

}  

  

  

  

int main()  

{  

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

    int system_task[9]={0};  

    int user_task[9]={0};  

    scheduler1(task,9,system_task,user_task);  

    return 0;  

}  

运行结果:

 030 140

 0 3 1 7-1

155 80170 99

 4  8  2  6-1

2012华为校园聘请机试(成都)-1

第一道确实是讲算分数的咨询题,去掉一个最高分一个最低分,求平均分 

viewplaincopytoclipboardprint?

#include  

float avescore(float score[],int n)  

{  

    float min=0;  

    float max=0;  

    int minindex=0;  

    int maxindex=0;  

    float sum=0;  

    min=score[0];  

    for(int i=0;i

        if(score[i]

        {  

            min=score[i];  

            minindex=i;  

        }  

        score[minindex]=0;  

        max=score[0];  

        for(i=0;i

            if(score[i]>max)  

            {  

                max=score[i];  

                maxindex=i;  

            }  

            score[maxindex]=0;  

            for(i=0;i

                sum+=score[i];  

            sum=sum/(n-2);  

            return sum;           

}  

void main()  

{  

    float score[6]={70,80,90,98,87,86};  

    float lastscore;  

    lastscore=avescore(score,6);  

    printf("the last score is :

%5.2f\n",lastscore);  

      

}  

运行结果:

thelastscoreis:

85.75

2012华为校园聘请机试(成都)-2

分类:

华为预备2011-09-0822:

23324人阅读评论

(2)收藏举报

 第二道:

对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直截了当放到数组中。

-------------------思路:

先进行奇偶判定,得到奇数和偶数数组。

然后对两数组排序,进行长度判定,最后组织数据。

             

viewplaincopytoclipboardprint?

#include  

#include  

  

void jiou(int a[],int n)  

{  

    int *p1;  

    int *p2;  

    int i,j;  

    int k=0;  

    int kk=0;  

    int count1=0;  

    int count2=0;  

    int temp;  

    int temp2;  

    int m=0;  

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

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

    for(i=0;i

    {  

        p1[i]=0;  

        p2[i]=0;  

    }  

      

    for(i=0;i

    {  

          

        if((a[i]%2)!

=0)  

        {p2[kk++]=a[i];}  

        else  

        {p1[k++]=a[i];}  

    }  

    count1=k;  

    count2=kk;  

      

    for(i=0;i

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

    printf("\n");  

      

    for(i=0;i

        for(j=0;j

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

            {temp2=p2[j];p2[j]=p2[j+1];p2[j+1]=temp2;}  

            for(i=0;i

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

            printf("\n");  

              

            for(i=0;i

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

            printf("\n");  

              

              

            for(i=0;i

                for(j=0;j

                    if(p1[j]

                    {temp=p1[j];p1[j]=p1[j+1];p1[j+1]=temp;}  

                    for(i=0;i

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

                

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

当前位置:首页 > 高等教育 > 管理学

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

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