#include <iostream>
#include <cassert>
using namespace std;
/************************************************************
*
*题一
*
*************************************************************/
int cal_score(int score[], int judge_type[], int n)
{
assert(NULL !=score && NULL!=judge_type && n!=0);
int sumPrf=0;
int sumPep=0;
int cntPrf=0;
for(int i=0;i<n;i++)
{
judge_type[i]==1?(sumPrf+=score[i],++cntPrf):(sumPep+=score[i]);
}
if(cntPrf==n)
return sumPrf/cntPrf;
else
return ((sumPrf/cntPrf)*0.6+(sumPep/(n-cntPrf))*0.4);
}
/************************************************************
*
*题二
*
*************************************************************/
void sort(int input[], int n, int output[])
{
assert(input !=NULL && n!=0 && output !=NULL);
int temp=0;
int poslft=n/2;
int posrht=poslft;
bool blft=false;
for(int i=n-1;i>=0;i--)
{
for(int j=0;j<i;j++)
{
if(input[j]>input[j+1])
{
temp=input[j];
input[j]=input[j+1];
input[j+1]=temp;
}
}
if(blft)
{
output[--poslft]=input[i];
blft=false;
}
else
{
output[posrht++]=input[i];
blft=true;
}
}
}
/************************************************************
*
*题三
*
*************************************************************/
typedef struct entry
{
int value;
int index;
} taskEntry;
void scheduler(int task[], int n, int system_task[], int user_task[])
{
assert(task !=NULL && n!=0 && system_task!=NULL && user_task !=NULL);
taskEntry *tmptask = new taskEntry[n];
for(int i=0;i<n;i++)
{
tmptask[i].value=task[i];
tmptask[i].index=i;
}
taskEntry temp;
int isys=0;
int iusr=0;
for(int i=0;i<n;i++)
{
for(int j=n-1;j>i; j--)
{
if(tmptask[j].value<tmptask[j-1].value)
{
temp=tmptask[j];
tmptask[j]=tmptask[j-1];
tmptask[j-1]=temp;
}
}
printf("task[%d]=%d\n",tmptask[i].index,tmptask[i].value);
if(tmptask[i].value>255)
break;
tmptask[i].value<50?(system_task[isys++]=tmptask[i].index):(user_task[iusr++]=tmptask[i].index);
}
system_task[isys]=-1;
user_task[iusr]=-1;
delete []tmptask;
}
int main()
{
//题一测试
{
//int score[3]={12,13,50};
//int judge_type[3]={1,1,2};
//printf("%d\n",cal_score(score, judge_type, 3) );
}
// 题二测试
{
//int input1[] = {3, 6, 1, 9, 7};
//int output1[5];
//memset(output1,0,5*sizeof(int));
//int input2[] = {3, 6, 1, 9, 7, 8} ;
//int output2[6];
//memset(output2,0,6*sizeof(int));
//
//sort(input1, 5, output1);
//sort(input2, 6, output2);
//for(int k=0;k<5;k++)
//printf("%d ",output1[k]);
//printf("\n");
//for(int k=0;k<6;k++)
//printf("%d ",output2[k]);
//printf("\n");
}
// 题三测试
{
int task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} ;
int n=sizeof(task)/sizeof(int);
int *system_task=new int[n];
int *user_task=new int[n];
scheduler(task, n, system_task, user_task);
for(int k=0;k<n;k++)
{
if (system_task[k]!=-1)
{
printf("%d ",system_task[k]);
}
else
{
printf("%d ",system_task[k]);
break;
}
}
printf("\n");
for(int k=0;k<n;k++)
{
if (user_task[k]!=-1)
{
printf("%d ",user_task[k]);
}
else
{
printf("%d ",system_task[k]);
break;
}
}
printf("\n");
delete []system_task;
delete []user_task;
}
system("pause");
}
各大计算机公司 笔试及面试 题目 - 华为(上机 1-3 答案)
最新推荐文章于 2021-01-30 17:56:45 发布