华为博士招聘上机考试题目_华为校园招聘上机考试题目

第一题和答案

题目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)

答案//

#include "stdafx.h"

#include

#include

using namespace std;

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

int _tmain(int argc, _TCHAR* argv[])

{

intfenshu;

int score[]={100,89,90,11,10};

int judge_type[]={1,2,1,2,1};

int n=5;

fenshu=cal_score(score,judge_type,n);

cout <

system("pause");

}

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

{

int i,zuizhongave;

double yuanshiave;

double zhuanjiaave,dazhongave;

int zhuanjiasum=0;

int zhuanjiashu=0;

int dazhongsum=0;

int dazhongshu=0;

for (i=0;i

{

if (judge_type[i]=1)

{

zhuanjiasum+=score[i];

zhuanjiashu++;

}

//这里用else if比用if

效率要高else if (judge_type[i]=2)

{

dazhongsum+=score[i];

dazhongshu++;

}

}

//这里要判断zhuanjiashu、dazhongshu,0不能做除数

if (zhuanjiashu>0)

zhuanjiaave=zhuanjiasum/zhuanjiashu;

if (dazhongshu>0)

dazhongave=dazhongsum/dazhongshu;

if (dazhongshu==0)

yuanshiave=zhuanjiaave;

else

yuanshiave=zhuanjiaave*0.6+dazhongave*0.4;

zuizhongave=yuanshiave;

returnzuizhongave;

}

给定一个数组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}函数接口void sort(int input[[, int n, int output[])

*/#include "stdafx.h"#include #include #include #includeusing namespace std;void sort(int input[],int output[], int n);int _tmain(int argc, _TCHAR* argv[])

{ int input[] = {3, 6, 1, 9, 7, 8, 2,10};

int wc=0;

int nCount =sizeof(input)/sizeof(int);

for(wc=0; wc

{

cout<

//cout<

}

cout << endl;

int output[]= {3, 6, 1, 9, 7, 8, 2, 10};

sort(input,output, nCount);system("pause");

return 0;}

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

{

int m=n;

//cout<

int i,j,temp;

bool exchange;//交换标志

//对数组进行排序

for(i=0;i

{

exchange=FALSE;

for(j=m-2;j>=i;j--) //对当前无序区R[i..n]自下向上扫描

if(input[j+1]

{//交换记录

temp=input[j+1];

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

input[j]=temp;

exchange=TRUE;

}

if(!exchange)

break;

}

for(int wc1=0; wc1

{

cout<

}

cout << endl;

int q=m-1;

if((m%2)==0)

{

intmid=m/2;

for (inttempmid=0; tempmid<=mid; tempmid++)//注意循环语句的执行顺序

{

output[mid+tempmid]=input[q];

q--;

output[mid-tempmid-1]=input[q];

q--;

}

}

if((m%2)!=0)//注意循环语句的执行顺序

{

intmid=q/2;

output[mid]=input[q];

for (inttempmid=1;tempmid<=mid;tempmid++)

{

q--;

output[mid-tempmid]=input[q];

q--;

output[mid+tempmid]=input[q];

}

}

for(int wc=0; wc

{

cout<

}

cout << endl;

}

测试结果:

当int input[] = {3, 6, 1, 9,7, 8, 2, 10};,结果如下:

3 6 1 9 7 8 2 10

1 2 3 6 7 8 9 10

1 3 7 9 10 8 6 2

当int input[] = {3, 6, 1, 9,7, 8, 2, 10};,结果如下:

3 6 1 9 7 8 2

1 2 3 6 7 8 9

2 6 8 9 7 3 1

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2013-09-22 00:06

浏览 464

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值