當前位置:學問君>學習教育>考研>

網易C++筆試題

學問君 人氣:2.54W

網易C++筆試題1. #i nclude 和#i nclude “filename.h” 有什麼區別?

網易C++筆試題

答:對於#i nclude ,編譯器從標準庫路徑開始搜尋filename.h

對於#i nclude “filename.h”,編譯器從用戶的工作路徑開始搜尋filename.h

網易C++筆試題2. 在C++ 程序中調用被C 編譯器編譯後的函數,爲什麼要加extern “C”?

答:C++語言支援函數重載,C 語言不支援函數重載。函數被C++編譯後在庫中的名字與C 語言的不同。假設某個函數的原型爲: void foo(int x, int y);

該函數被C 編譯器編譯後在庫中的名字爲_foo , 而C++ 編譯器則會產生像_foo_int_int 之類的名字。

C++提供了C 連接交換指定符號extern“C”來解決名字匹配問題。

網易C++筆試題3. 一個類有基類、內部有一個其他類的成員對象,構造函數的執行順序是怎樣的?

答:先執行基類的(如果基類當中有虛基類,要先執行虛基類的,其他基類則按照聲明派生類時的順序依次執行),再執行成員對象的',最後執行自己的。

網易C++筆試題4. New delete 與malloc free 的區別

答案:用malloc 函數不能初始化對象,new 會調用對象的構造函數。Delete 會調用對象的destructor,而free 不會調用對象的destructor.

網易C++筆試題5. Struct 和class 的區別

答案:struct 中成員變量和成員函數默認訪問權限是public,class 是private

網易C++筆試題6.請問下面程序有什麼錯誤?

int a[60][250][1000],i,j,k;

for(k=0;k<=1000;k++)

for(j=0;j<250;j++)

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

a[i][j][k]=0;

答案:把循環語句內外換一下

網易C++筆試題7. 請寫出下列代碼的輸出內容

#include

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return 0;

}

答:10,12,120

網易C++筆試題8. 寫出BOOL,int,float,指針類型的變量a 與零的比較語句。

答案: BOOL : if ( !a )

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL)

網易C++筆試題9.已知strcpy 函數的原型是:

char *strcpy(char *strDest, const char *strSrc);

其中strDest 是目的字元串,strSrc 是源字元串。不調用C++/C 的字元串庫函數,請編寫函數 strcpy

答案:

char *strcpy(char *strDest, const char *strSrc)

{

if ( strDest == NULL || strSrc == NULL)

return NULL ;

if ( strDest == strSrc)

return strDest ;

char *tempptr = strDest ;

while( (*strDest++ = *strSrc++) != ‘’)

;

return tempptr ;

}

網易C++筆試題10.寫一個函數找出一個整數數組中,第二大的數

答案:

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count) //類似於1 4 4 4這樣的序列將認爲1是第二大數

{

int maxnumber = data[0] ;

int sec_max = MINNUMBER ;

for ( int i = 1 ; i < count ; i++)

{

if ( data[i] > maxnumber )

{

sec_max = maxnumber ;

maxnumber = data[i] ;

}

else

{

if ( data[i] > sec_max )

sec_max = data[i] ;

}

}

return sec_max ;

}

TAGS:筆試 網易