阿里巴巴集團 2011屆實習生招聘 技術筆試卷——C++部分

C&C++部分html

選擇題(每題5分)數據結構

1int main(void)
函數

{性能

  int count=0; int m=779;spa

  while(m)操作系統

  {count++;  m=m&(m-1);}指針

  printf("%d\n",count); return 0;htm

}blog

請問最終輸出的count值爲(     )         資源

A3      B4      C5      D8

註解by Snowwolf_Yang:這個題目其實是求解m轉換爲二進行制形式中1的個數,m=m&(m-1)每執行一次就消除一個1

更多求解二進制形式中1的個數的方法 http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html

 

 

2在32位操做系統中,咱們定義以下變量

int (*n)[10];

請問調用函數sizeof(n),返回值爲(     )  A     B40     C8      D80

 註解by Snowwolf_Yang:這是n實際是一個 int**類型的數據。因此n其實是一個指針,指針即地址,對於32位機器來講一個地址爲4字節。

 

 

3int main(void)

{

  int i=1;  int j=i++;

  if((i++>++j) && (++i == j)) i+=j;

  printf("%d\n",i);  return 0;

}

請問最終輸出的i值爲(     )              A2     B3       C4      D5

  註解by Snowwolf_Yang:++i是使用i以前先使i加一,i++是使用i以後再加一.若是不能理解,那麼能夠理解爲++i是先計算,再操做,i++是後計算,先操做。

是在執行完在if語句以前i = 2;j=1;if(i++>++j&&)是if(2>2)判斷失敗,後執行一次i+1,因此i=3

 

 

4如下敘述中正確的是(     )

A能夠在一個函數中定義另外一個函數     Bmain()函數必須放在其餘函數以前

C構成C++語言程序的基本單位是類      D全部被調用的函數必定要在調用以前進行定義

   註解by Snowwolf_Yang:很明顯其餘都是錯的。A中,能夠在一個函數中聲明一個函數,但不能定義

綜合題(每題15分)

有10億個數,這些數的值都在0~1000萬以內。請使用定義一個數據結構實現這些數字的存儲,並實現函數 get_bigger_count( unsigned value ),輸入一個值value,返回這10億個數中比value值大的數的數目。

要求:不能使用STL,請儘可能考慮性能與資源的佔用。 

相關文章
相關標籤/搜索