上海貝爾的面試題43分即可進入複試

2021-08-30 19:53:12 字數 2805 閱讀 7022

一、請填寫bool , float, 指標變數 與「零值」比較的 if 語句。(10分)

if ( n == 0 )

if ( n != 0 )

以此類推。

請寫出 bool flag 與「零值」比較的 if 語句:

請寫出 float x 與「零值」比較的 if 語句:

請寫出 char *p 與「零值」比較的 if 語句:

二、以下為windows nt下的32位c++程式,請計算sizeof的值(10分)

char str = 「hello」 ;

char *p = str ;

int n = 10;

請計算sizeof (str ) =

sizeof ( p ) =

sizeof ( n ) =void func ( char str[100])

void *p = malloc( 100 );

請計算sizeof ( p ) =

、簡答題(25分)

1、標頭檔案中的 ifndef/define/endif 幹什麼用?

2、#i nclude 和 #i nclude 「filename.h」 有什麼區別?

3、const 有什麼用途?(請至少說明兩種)

4、在c++ 程式中呼叫被 c編譯器編譯後的函式,為什麼要加 extern 「c」宣告?

5、請簡述以下兩個for迴圈的優缺點

// 第乙個

for (i=0; i= - epsinon) && (x <= epsinon)

不可將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」此類形式。

如下是錯誤的寫法,不得分。

if (x == 0.0)

if (x != 0.0)

請寫出 char *p 與「零值」比較的 if 語句。(3分)

標準答案:

if (p == null)

if (p != null)如下寫法均屬不良風格,不得分。

if (p == 0)

if (p != 0)

if (p)

if (!)

二、以下為windows nt下的32位c++程式,請計算sizeof的值(10分)

char str = 「hello」 ;

char *p = str ;

int n = 10;

請計算sizeof (str ) = 6 (2分)

sizeof ( p ) = 4 (2分)

sizeof ( n ) = 4 (2分)void func ( char str[100])

void *p = malloc( 100 );

請計算sizeof ( p ) = 4 (2分)

三、簡答題(25分)

1、標頭檔案中的 ifndef/define/endif 幹什麼用?(5分)

答:防止該標頭檔案被重複引用。

2、#i nclude 和 #i nclude 「filename.h」 有什麼區別?(5分)

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

對於#i nclude 「filename.h」 ,編譯器從使用者的工作路徑開始搜尋 filename.h

3、const 有什麼用途?(請至少說明兩種)(5分)

答:(1)可以定義 const 常量

(2)const可以修飾函式的引數、返回值,甚至函式的定義體。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。

4、在c++ 程式中呼叫被 c編譯器編譯後的函式,為什麼要加 extern 「c」? (5分)

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

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

c++提供了c連線交換指定符號extern「c」來解決名字匹配問題。

5、請簡述以下兩個for迴圈的優缺點(5分)

for (i=0; i

#i nclude

int pheponatch(int);

int pheponatch2(int);

int main()

//遞迴演算法

int pheponatch(int n)

else

return pheponatch( n -1 ) + pheponatch( n -2 );

}//非遞迴演算法

int pheponatch2(int n)

return y;

}25.完成下列程式

**.*.

*..*..*..

*…*…*…*…

*….*….*….*….*….

*…..*…..*…..*…..*…..*…..

*……*……*……*……*……*……*……

*…….*…….*…….*…….*…….*…….*…….*…….

#i nclude

#define n 8

int main()

#i nclude

#i nclude

#define n 8

int main()

tnode;

tnode* root=null;

int main()

else

if(n>=temp->value)

temp->left=newnode;

else

temp->right=newnode;

return;}}

面試題43 n個骰子的點數

注意點 n 個骰子的面朝上點數和的範圍 n,6n 一共有6n n 1種可能 每個骰子的範圍 1,6 n 個骰子分為兩部分,第一骰子和其餘的n 1個骰子 遞迴的終止條件為當前其餘骰子個數為0個 include include include includeusing namespace std int...

面試題43 n個骰子的點數

題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s所有可能的值出現的概率。該題是典型的動態規劃問題。n個骰子它的和顯然和前面n 1個骰子的狀態有關。可以一步步劃分來求,一般考慮設個數祖,乙個記錄當前是第多少個骰子,乙個記錄總和多少,還要記錄總和的概率,因此此處考慮設個二維陣列...

面試題43 n個骰子的點數

1.將n個骰子扔在地上,所有骰子朝上一面的點數之和為s,輸入n,列印出s的所有可能的值出現的概率。分析 1 基於遞迴的方法 可以將n個骰子分為兩堆,第一堆只有1個,第二個堆有n 1個,單獨的那乙個可能出現的1到6的點數,只需計算1到6的每一種和剩餘的n 1個骰子的和,再將n 1個骰子分為1個和n 2...