高質量C++/C程式設計指南(附錄B :C++/C試題) (轉)

worldblog發表於2007-12-12
高質量C++/C程式設計指南(附錄B :C++/C試題) (轉)[@more@] 

:C++/C試題

  本試題僅用於考查C++/C員的基本技能。內容限於C++/C常用語法,不涉及資料結構、演算法以及深奧的語法。考試成績能反映出考生的程式設計質量以及對C++/C的理解程度,但不能反映考生的智力和開發能力。

  筆試時間90分鐘。請考生認真答題,切勿輕視。

 :namespace prefix = o ns = "urn:schemas--com::office" />

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

提示:這裡“零值”可以是0, 0.0 , FALSE或者“空指標”。例如 int 變數 n 與“零值”比較的 if 語句為:

  if ( n == 0 )

  if ( n != 0 )

以此類推。

 

請寫出 BOOL  flag 與“零值”比較的 if 語句:

 

 

請寫出 float  x 與“零值”比較的 if 語句:

 

 

 

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

 

 

 

二、以下為 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])

{

請計算

 sizeof( str ) = 

}

 

void *p = malloc( 100 );

請計算

sizeof ( p ) =

 

 

三、簡答題(25分)

 

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

 

 

 

2、#include    和  #include  “filename.h” 有什麼區別?

 

 

 

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

 

 

 

4、在C++ 程式中被 C編譯後的,為什麼要加 extern “C”宣告?

 

 

 

 

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

 

// 第一個

for (i=0; i

{

if (condition)

  DoSomething();

else

  DoOtherthing();

}

// 第二個

if (condition)

{

for (i=0; i

  DoSomething();

}

else

{

  for (i=0; i

  DoOtherthing();

}

優點:

 

 

缺點:

 

 

 

優點:

 

 

缺點:

 

 

 

四、有關的思考題(20分)

 

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str); 

strcpy(str, "hello world");

printf(str);

}

 

請問執行Test函式會有什麼樣的結果?

答:

 

 

 

 

char *GetMemory(void)

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory(); 

printf(str);

}

 

請問執行Test函式會有什麼樣的結果?

答:

Void GetMemory2(char **p, int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello"); 

printf(str); 

}

請問執行Test函式會有什麼樣的結果?

答:

 

 

 

 

 

void Test(void)

{

char *str = (char *) malloc(100);

  strcpy(str, “hello”);

  free(str);   

  if(str != NULL)

  {

    strcpy(str, “world”);

printf(str);

}

}

請問執行Test函式會有什麼樣的結果?

答:

 

 

 

 

 

 

五、編寫strcpy函式(10分)

已知strcpy函式的原型是

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

  其中strDest是目的字串,strSrc是源字串。

 

(1)不呼叫C++/C的字串庫函式,請編寫函式 strcpy

 

 

 

 

 

 

 

(2)strcpy能把strSrc的內容複製到strDest,為什麼還要char * 型別的返回值?

 

 

 

 

六、編寫類String的建構函式、解構函式和賦值函式(25分)

已知類String的原型為:

  class String

  {

    public:

    String(const char *str = NULL);  // 普通建構函式

    String(const String &other);    // 複製建構函式

  ~ String(void);        // 解構函式

    String & operate =(const String &other);  // 賦值函式

    private:

  char    *m_data;      // 用於儲存字串

  };

  請編寫String的上述4個函式。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991860/,如需轉載,請註明出處,否則將追究法律責任。

相關文章