微軟研究院筆試題答案_第1頁
微軟研究院筆試題答案_第2頁
微軟研究院筆試題答案_第3頁
微軟研究院筆試題答案_第4頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、是一個聽起來就牛 B 的地方啊,反正我是進(jìn)不去,不過微軟不妨礙我看看他的筆試題到底是怎么樣的。下面四道題就是微軟研究院的筆試題目,題后附有解答。微軟(亞洲)的是:/asia/1改錯#include #include class CBufferchar * m_pBuffer;m_size;public:CBuffer()m_pBuffer=NULL;CBuffer()Free();void Allocte(size) (3)m_size=size;m_pBuffer= new charsize;private:void Free()if(m_pBuffer!=NULL)delete m_pBu

2、ffer;m_pBuffer=NULL;public:void SaveString(const char* pText) conststrcpy(m_pBuffer, pText);char* GetBuffer() constreturn m_pBuffer;void main (argc, char* argv)CBuffer buffer1;buffer1.SaveString();prf(buffer1.GetBuffer();答:改正后主要改正 SaveString 函數(shù)將void SaveString(const char* pText) conststrcpy(m_pBuffe

3、r, pText);改為void SaveString(const char* pText) (1)Allocte(strlen(pText)+1); (2)strcpy(m_pBuffer, pText);原因:(1) const 成員函數(shù)表示不會修改數(shù)據(jù)成員,而 SaveString 做不到,去掉 const(2) m_pBuffer 指向 NULL,必須用 Allocte 分配空間才能賦值。(3) 另外需要將 Allocte 成員函數(shù)為私有成員函數(shù)更符合實(shí)際2.下來程序想打印“e Mia”,改正錯誤#include #include char * GetName (void)/To re

4、turn “Mia”Stringchar name=Mia;return name;void main(argc, char* argv)char name32;/Fill in zeroso namefor(i=0;i=32;i+)namei=0;/copy “e” to namename=e;/Append a blcharname8= ;/Append string to namestrcat(name,GetName();/proutprf(name);答:改正后為#include #include char * GetName (void)/To return “Mia”String

5、/char name=Mia; (1)char *name=(char *)malloc(strlen(Mia)+1);strcpy(name,Mia);return name;void main(argc, char* argv)char name32;/Fill in zeroso namefor(i=0;i=32;i+)namei=0;/copy “e” to name/name=e; (2)strcat(name,e );/Append a blchar/ name8= ;(3)/Append string to namechar *p=GetName(); (4)strcat(nam

6、e,p);free (p);/proutprf(name);原因:(1)在函數(shù)定義的變量在函數(shù)結(jié)束時就清空了,必須動態(tài)分配內(nèi)存(2)字符串賦值語句錯誤,應(yīng)該用 strcat(3)該語句無效,可去掉(4)定義一個指針指向動態(tài)分配的內(nèi)存,用完后需用 free 語句3寫出下面程序的輸出結(jié)果#include class Apublic:void FuncA()prf(FuncA calledn);virtual void FuncB()prf(FuncB calledn);class B: public Apublic:void FuncA()A:FuncA();prf(FuncAB calledn)

7、;virtual void FuncB()prf(FuncBB calledn);void main(void)B b;A *pa;pa=&b;A *pa2=new A;b.FuncA(); (1)b.FuncB(); (2)pa-FuncA(); (3)pa-FuncB(); (4)pa2-FuncA(); (5)pa2-FuncB();delete pa2;答:1b.FuncA(); 輸出FuncA calledFuncAB called2b.FuncB();輸出FuncBB called上兩者好理解,直接調(diào)用類 B 的相應(yīng)成員函數(shù)3pa-FuncA();輸出FuncA called 調(diào)用

8、類 A 的 FuncA()4pa-FuncB();輸出FuncBB called 調(diào)用類 B 的 FuncB(),原因是 C+的動態(tài)決議機(jī)制,當(dāng)為 virtual 時,指向派生類對象的基類指針來調(diào)用該函數(shù)基類函數(shù)會選擇派生類的實(shí)現(xiàn),除非派生類沒有才調(diào)用基類的虛函數(shù)。還有一點(diǎn)注意的是:指向基類類型的指針可以指向基類對象也可以指向派生類對象,如 pa=&b;5. pa2-FuncA();pa2-FuncB();輸出FuncA calledFuncB called這也好理解,直接調(diào)用類 A 的相應(yīng)成員函數(shù)4he main() function, after ModifyString(text) is

9、 called, whats thevalue of text?#include #include FindSubString(char* pch)count=0;char* p1=pch;while(*p1!=0)if(*p1=p11-1)p1+;count+;elsebreak;count2=count;while(*p1!=0)if(*p1=p11+1)p1+;count2-;elsebreak;if(count2=0)return count;return 0;void ModifyString(char* pText)char* p1=pText;char* p2=p1;while(*p1!=0)count=FindSubString(p1);if(count0)*p2+=*p1;sprf(p2, %I, count);while(*p2!= 0)p2+;p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論