【華為公司2014屆校園招聘軟件類上機考試樣題】包含前兩題答案


2013-09-04 22:25:17

華為公司2014屆校園招聘軟件類上機考試樣題

粵港澳    2013-08-30 13:49:20
華為公司2014屆校園招聘軟件類上機考試樣題  
需進行上機考試的崗位:軟件開發工程師、操作系統工程師、底層軟件開發工程師、雲計算開發工程師、 DSP工程師 
在線考試:機考系統的內核為VS2005及JDK1.7,使用Java答題時,類名必須為“Main”;使用C/C++答題時,使用VS2005支持的數據類型和函數。
題目類型:涉及數組、鏈表、指針、字符串、循環、枚舉、排序等等。
考試時長:2小時
考試題目:3道題(共計320分),初級題(60分),中級題(100),高級題(160分),難度遞增。
 
各難度上機考試樣題
 
初級題: 從考試成績中划出及格線 
10個學生考完期末考試評卷完成后,A老師需要划出及格線,要求如下:
(1) 及格線是10的倍數;
(2) 保證至少有60%的學生及格;
(3) 如果所有的學生都高於60分,則及格線為60分
 
中級題:亮着電燈的盞數
 
一條長廊里依次裝有n(1 ≤ n ≤ 65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由一個拉線開關控制。開始,電燈全部關着。
n 個學生從長廊穿過。第一個學生把號碼凡是 1 的倍數的電燈的開關拉一下;接着第二個學生把號碼凡是 2 的倍數的電燈的開關拉一下;接着第三個學生把號碼凡是 3 的倍數的電燈的開關拉一下;如此繼續下去,最后第 n 個學生把號碼凡是 n 的倍數的電燈的開關拉一下。 n 個學生按此規定走完后,長廊里電燈有幾盞亮着。
注:電燈數和學生數一致。
 
高級題:地鐵換乘
已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程序,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含輸入的起點和終點,換乘站點只計算一次)。
地鐵線A(環線)經過車站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
地鐵線B(直線)經過車站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15
 
前兩個題比較簡單,最后一題有點難,沒做,哪位大神做出來了分享一下哦。
 注意:
  1. 對bool變量取反,不能用按位取反運算符~,而應該用邏輯非!,因為用~時,因為操作數的整形提升,使得操作數為1時,結果仍為1,而非0;

如下:

 

bool b = true;  //布爾變量按位取反,與取非!效果不一樣
    b = ~b;
    cout<<b<<endl;

 

輸出為1;

若b為false,輸出也為1。

 

 
前兩個題代碼(歡迎交流指正):
  1 #include <iostream>
  2 #include <cassert>
  3 using namespace std;
  4 
  5 typedef size_t DataType;
  6 const int SIZE = 10;
  7 
  8 void DisplayArray(DataType *array,size_t len)
  9 {
 10     assert(array != NULL);
 11 
 12     size_t index = 0;
 13     while (index < len)
 14     {
 15         cout<<array[index]<<"\t";
 16         ++index;
 17     }
 18     cout<<endl;
 19 }
 20 
 21 void DisplayArray(bool *array,size_t len)
 22 {
 23     assert(array != NULL);
 24 
 25     size_t index = 0;
 26     while (index < len)
 27     {
 28         cout<<array[index]<<"\t";
 29         ++index;
 30     }
 31     cout<<endl;
 32 }
 33 
 34 //int compare(const DataType *p,const DataType *q)
 35 int compare(const void *p,const void *q)   //參數是void *類型
 36 {
 37     return (*(DataType *)p - *(DataType *)q);
 38 }
 39 
 40 DataType GetPassLine(DataType *scoreArray,size_t len)
 41 {
 42     assert(scoreArray != NULL);
 43     assert(len == 10);
 44 
 45     qsort(scoreArray,len,sizeof(DataType),compare);
 46 
 47     cout<<"the sorted score is : "<<endl;
 48     DisplayArray(scoreArray,len);
 49 
 50     if (scoreArray[0] > 60)
 51     {
 52         return 60;
 53     }
 54 
 55     return ( (scoreArray[4] / 10) * 10);
 56 }
 57 
 58 size_t GetNumberOfLigthOn(size_t n)
 59 {
 60     bool *OnOffState = new bool[n + 1];   //多申請一個空間,是的有效下標從1開始
 61     memset(OnOffState,1,n*sizeof(bool));   //有問題么?沒問題
 62 
 63     size_t onCount = 0;
 64     size_t index;
 65     size_t j;
 66 
 67     for (index = 2;index <= n;++index)
 68     {
 69         //DisplayArray(OnOffState + 1,n);
 70 
 71         for (j = index;j <= n;j += index)
 72         {
 73             OnOffState[j] = !OnOffState[j];  //不能OnOffState[j] = ~OnOffState[j];
 74         }
 75     }
 76 
 77     for (index = 1;index <= n;++index)
 78     {
 79         onCount = OnOffState[index] ? (onCount + 1) : onCount;
 80     }
 81 
 82     return onCount;
 83 }
 84 
 85 
 86 void TestDriver()
 87 {
 88     //測試GetPassLine
 89     //DataType scoreArray[SIZE] = {61,67,89,71,  73,78,90,65, 100,82};   //60,全部及格
 90     //DataType scoreArray[SIZE] = {60,67,89,71,  73,78,90,65, 100,82};    //70,此時有7個及格
 91     ////DataType scoreArray[SIZE] = {60,67,89,62,  73,78,90,65, 100,82};    //70,有6個及格
 92 
 93     //size_t len = SIZE;
 94     //
 95     //cout<<"the pass line is : "<<GetPassLine(scoreArray,len)<<endl;
 96 
 97     //測試GetNumberOfLigthOn(size_t n)
 98     size_t numberOfLights = 10;
 99 
100     cout<<GetNumberOfLigthOn(numberOfLights)<<" lights in "<<numberOfLights<<" are on finally!"<<endl;
101 }
102 
103 int main()
104 {
105     /*bool b = false;  //布爾變量按位取反,與取非!效果不一樣
106     b = ~b;
107     cout<<b<<endl;
108 */
109     TestDriver();
110     return 0;
111 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM