C&C++部分html
選擇題(每題5分)數據結構
{性能
int count=0; int m=779;spa
while(m)操作系統
{count++; m=m&(m-1);}指針
printf("%d\n",count); return 0;htm
}blog
請問最終輸出的count值爲( ) 資源
A: 3 B:4 C:5 D:8
註解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: 4 B:40 C:8 D:80
註解by Snowwolf_Yang:這是n實際是一個 int**類型的數據。因此n其實是一個指針,指針即地址,對於32位機器來講一個地址爲4字節。
3、int main(void)
{
int i=1; int j=i++;
if((i++>++j) && (++i == j)) i+=j;
printf("%d\n",i); return 0;
}
請問最終輸出的i值爲( ) A: 2 B:3 C:4 D:5
註解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:能夠在一個函數中定義另外一個函數 B:main()函數必須放在其餘函數以前
C:構成C++語言程序的基本單位是類 D:全部被調用的函數必定要在調用以前進行定義
註解by Snowwolf_Yang:很明顯其餘都是錯的。A中,能夠在一個函數中聲明一個函數,但不能定義
綜合題(每題15分)
有10億個數,這些數的值都在0~1000萬以內。請使用定義一個數據結構實現這些數字的存儲,並實現函數 get_bigger_count( unsigned value ),輸入一個值value,返回這10億個數中比value值大的數的數目。
要求:不能使用STL,請儘可能考慮性能與資源的佔用。