華為2012機考ifif

2021-05-28 08:18:13 字數 4453 閱讀 2593

昨天去參加了華為的校園招聘上機考試,題目一共三道,都比較簡單,不要求演算法效率,也不要求對所給資料的合法性作檢測,主要還是注重基礎知識的考察,和大家分享一下,希望對接下來的同學有所幫助。

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

#include

#include

#include

#definen 5

intcal_score(int score, int judge_type, int n)

else dazhong=dazhong+score[i];

}if(number==n)

else

return zongfen;

}intmain()

2、給定乙個陣列input ,如果陣列長度n為奇數,則將陣列中最大的元素放到 output 陣列最中間的位置,如果陣列長度n為偶數,則將陣列中最大的元素放到 output 陣列中間兩個位置偏右的那個位置上,然後再按從大到小的順序,依次在第乙個位置的兩邊,按照一左一右的順序,依次存放剩下的數。

例如:input =    output = ;             input =     output = 

函式介面   void sort(int input[[, int n, int output)

#include

#include

#include

void sort(intinput, int n, int output)

if(n%2!=0)

}else

output[0]=input[0];                        

}    

for(i=0;iprintf("%2d",output[i]);

printf("\n");

}int main()

;int b[6]=;

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

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

printf("\n");

sort(a,6,b);

return 0;

}3、作業系統任務排程問題。作業系統任務分為系統任務和使用者任務兩種。其中,系統任務的優先順序 < 50,使用者任務的優先順序 >= 50且 <= 255。優先順序大於255的為非法任務,應予以剔除。現有一任務佇列task,長度為n,task中的元素值表示任務的優先順序,數值越小,優先順序越高。函式scheduler實現如下功能,將task 中的任務按照系統任務、使用者任務依次存放到 system_task 陣列和 user_task 陣列中(陣列中元素的值是任務在task 陣列中的下標),並且優先順序高的任務排在前面,優先順序相同的任務按照入隊順序排列(即先入隊的任務排在前面),陣列元素為-1表示結束。

例如:task =     system_task =     user_task =

函式介面    void scheduler(int task, int n, int system_task, int user_task)

#include

#include

#include

#include

voidscheduler1(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;ip[i]=0;

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

for(i=0;ipp[i]=0;

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

for(i=0;ip_user[i]=0;

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

for(i=0;ipp_user[i]=0;

for(i=0;iif(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;iprintf("%3d",system_task[i]);

printf("\n");

for(i=0;imin=system_task[0];

for(j=1;jif(system_task[j]min=system_task[j];  

p[i]=j;          

system_task[p[i]]=51;

pp[count]=-1;

for(i=0;iprintf("%3d",pp[p[i]]);     

printf("%3d\n",pp[count]);

for(i=0;iprintf("%4d",user_task[i]);

printf("\n");

for(i=0;imin=user_task[0];

for(j=1;jif(user_task[j]min=user_task[j];      

p_user[i]=j;         

user_task[p_user[i]]=256;

pp_user[count2]=-1;

for(i=0;iprintf("%4d",pp_user[p_user[i]]);  

printf("%3d\n",pp_user[count2]);

int main()

int task[9]=;

int system_task[9]=;

int user_task[9]=;

scheduler1(task,9,system_task,user_task);

return 0;

第三題的這種做法的排序的過程有點看不懂,下面貼出來我自己的做法,用的是常見的冒泡法排序的修改版,沒有用指標用的是陣列,這點不太好,

#include #include #include int schedule(int task,int n,int system_task,int user_task);

int schedule(int task,int n,int system_task,int user_task)

else

}for(i=0;i=0;i--)

}for(i=n-1;i>=0;i--)

}int *p=(int *)malloc(sizeof(int)*(c+1));

int *q=(int *)malloc(sizeof(int)*(d+1));

assert(p!=null);

assert(q!=null);

for(i=0;itask[system_task[j]])}}

for(i=0;itask[user_task[j]])}}

printf("\nresult:\n");

for(i=0;i<=c;i++)

printf("\n");

for(i=0;i<=d;i++)

return 0;

}int main()

; int system_task[9]=;

int user_task[9]=;

schedule(task,9,system_task,user_task);

return 0;

}

int check_phone(char *p)

else

return 2;

}if((*p=='8')&&(*(p+1)=='6'))

else

return 3;

}else

return 1;

}int main()

華為2012校園招聘 上機考試2

1.陣列比較 20分 比較兩個陣列,要求從陣列最後乙個元素開始逐個元素向前比較,如果2個陣列長度不等,則只比較較短長度陣列個數元素。請程式設計實現上述比較,並返回比較中發現的不相等元素的個數 比如 陣列和陣列按題述要求比較,不相等元素個數為0 陣列和陣列按題述要求比較,不相等元素個數為3 要求實現函...

華為2012校園招聘 上機考試1

1 選秀節目打分,分為專家評委和大眾評委,score 陣列裡面儲存每個評委打的分數,judge type 裡儲存與 score 陣列對應的評委類別,judge type i 1,表示專家 評委,judge type i 2,表示大眾評委,n表示評委總數。打分規則如下 專家評委和大眾評委的分數先分別取...

華為機考80 108

80 字串匹配 題目要求 判斷短字串是否在長字串 現 注意 雖然題目說只會輸入兩個字串,但是不加while還是會錯,所以應該吧while設為框架 ps 字串的 in 操作,只有切片完全一致才為true,亂序false while true try x input y input flag true ...