網(wǎng)易校園招聘C/C++筆試題和面試題答案

思而思學(xué)網(wǎng)

1. #i nclude < filename.h >和#i nclude “filename.h” 有什么區(qū)別?

答:對于#i nclude < filename.h >,編譯器從標(biāo)準(zhǔn)庫路徑開始搜索filename.h 對于#i nclude “filename.h”,編譯器從用戶的工作路徑開始搜索filename.h

2. 在C++ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern “C”?

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

該函數(shù)被C 編譯器編譯后在庫中的名字為_foo , 而C++ 編譯器則會產(chǎn)生像_foo_int_int 之類的名字。

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

3. 一個類有基類、內(nèi)部有一個其他類的成員對象,構(gòu)造函數(shù)的執(zhí)行順序是怎樣的?

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

4. New delete 與malloc free 的區(qū)別

答:用malloc 函數(shù)不能初始化對象,new 會調(diào)用對象的構(gòu)造函數(shù)。Delete 會調(diào)用對象的destructor,而free 不會調(diào)用對象的destructor.

5. Struct 和class 的區(qū)別

答:struct 中成員變量和成員函數(shù)默認(rèn)訪問權(quán)限是public,class 是private

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;

答:把循環(huán)語句內(nèi)外換一下

7. 請寫出下列代碼的輸出內(nèi)容 #include <.stdio.h> main() {

int a,b,c,d; a=10; b=a++; c=++a; d=10a++;

printf("b,c,d:%d,%d,%d",b,c,d); return 0; }

答:10,12,120

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)

9.已知strcpy 函數(shù)的原型是:

char strcpy(char strDest, const char strSrc);

其中strDest 是目的字符串,strSrc 是源字符串。不調(diào)用C++/C 的字符串庫函數(shù),請編寫函數(shù) 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++) != ‘\0’) ;

return tempptr

}

10.寫一個函數(shù)找出一個整數(shù)數(shù)組中,第二大的數(shù)。

答案:

const int MINNUMBER = -32767

int find_sec_max( int data[] , int count) //類似于1 4 4 4這樣的序列將認(rèn)為1是第二大數(shù)

{

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

}

熱門推薦

最新文章