《季學期《C++程序設計》作業(yè)》由會員分享,可在線閱讀,更多相關《季學期《C++程序設計》作業(yè)(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、2012 年春季學期C+程序設計作業(yè) 作業(yè)提交格式要求:請同學們把答案集中單獨寫在一個.doc 文檔中,作為附件上傳(不 要把答案直接填寫在題目的空中)。特規(guī)定格式如下: 一、 ABCDD AAAAA 二、 題號 1 2 3 4 5 6 7 8 9 10 結(jié)果 三、 (1) BeiJing ShangHai (2) x=8,y=7 (3) r=k:i+j=90 以上只是舉例,不是正確的輸出結(jié)果。請按上述規(guī)定書寫和提交作業(yè)結(jié)果,不符合以 上規(guī)定的作業(yè)將作為 0 分處理。 鼓勵獨立完成作業(yè),嚴懲抄襲。 第一部分(C+第 1-7、8、9 章) 一、單選題 1、C+是從早期的 C 語言逐漸發(fā)展演變來的
2、,與 C 語言相比,它在求解問題方法上最大 的改進是( B ) 。 A 面向過程 B. 面向?qū)ο?C. 安全性 D. 復用性 2、下列關于 this 指針的敘述中,正確的是 ( D ) A. 任何與類相關的函數(shù)都有 this 指針 B. 類的成員函數(shù)都有 this 指針 C. 類的友元函數(shù)都有 this 指針 D. 類的非靜態(tài)成員函數(shù)才有 this 指針 3、若有以下類 Z 聲明,函數(shù) fStatic 的正確定義是( B )。 class Z int a; public: void fStatic(Z ; A. void Z:fStatic(Z B. void Z:fStatic(Z C. v
3、oid Z:fStatic(Z D. void Z:fStatic(Z 4、在 C+中,關于下列設置缺省參數(shù)值的描述中, ( D)是正確的。 A不允許設置缺省參數(shù)值; B只能在函數(shù)的定義中指定參數(shù)的缺省值; C在指定了缺省值的參數(shù)右邊,不能出現(xiàn)沒有指定缺省值的參數(shù); D設置缺省參數(shù)值時,必須全部都設置; 5、關于友元函數(shù)的描述中,錯誤的是( D ) 。 A友元函數(shù)說明在類體內(nèi) B友元函數(shù)不是成員函數(shù) C友元函數(shù)必須用對象來引用 D友元函數(shù)可以直接訪問類中的私有成員 6、對于類,下面哪個是不正確的( D )。 A. 類是對象的設計藍圖 B. 使用關鍵字 Class 創(chuàng)建類結(jié)構 C. 類被聲明后,
4、類名成為類型名并且可以用來聲明變量 D. 類與結(jié)構體相同,它們之間沒有區(qū)別 7、下列是構造函數(shù)的特點,( C )是錯誤的。 A. 構造函數(shù)是一種成員函數(shù),它具有一般成員函數(shù)的特點。 B. 構造函數(shù)的名稱與其類名相同。 C. 構造函數(shù)必須指明其類型。 D. 一個類中可以定義一個或多個構造函數(shù)。 8、已知:p 是一個指向類 A 數(shù)據(jù)成員 m 的指針,a 是類 A 的一個對象。在給 m 賦值為 5 的下列表達式中,( C )是正確的。 A. a.p=5 B. a-p=5 C. a.*p=5 D. *a.p=5 9、下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的選項是( C )。 A. 靜態(tài)成員可以在類體內(nèi)進行初
5、始化 B. 靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用 C. 靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用 D. 靜態(tài)數(shù)據(jù)成員不可以直接用類名調(diào)用 10、下列關于 new 運算符的描述中,錯誤的是(B )。 A. new 運算符組成的表達式的值是地址值 B. 創(chuàng)建對象時不調(diào)用構造函數(shù) C.用它創(chuàng)建的對象須用 delete 來刪除 D.可用它來創(chuàng)建動態(tài)的對象和對象數(shù)組 二、判斷題 1. 子對象的初始化可以不放在該類的構造函數(shù)中。T 2. 如果一個類中沒有定義任何構造函數(shù),則該類的對象便無法初始化。F 3. 構造函數(shù)和析構函數(shù)都不能重載。F 4. 如果一個成員函數(shù)只存取一個類的靜態(tài)數(shù)據(jù)成員,則可將該成員函數(shù)說明為靜態(tài) 成
6、員函數(shù)。T 5. 構造函數(shù)和析構函數(shù)都是系統(tǒng)自動調(diào)用的。F 6. 可以在類的構造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。F 7. 友元函數(shù)是成員函數(shù),它可以訪問類中私有成員。F 8. 對象數(shù)組的元素必須是同一個類的對象。T 9. 用 class 定義的類中,默認的訪問權限是公有的。F 10. 運算符 new 可以創(chuàng)建變量或?qū)ο螅?也可以創(chuàng)建數(shù)組。 F 三、寫出下列程序的輸出結(jié)果: 1、 #include using namespace std; class Test public: Test() cout”constructor of Test”endl; ; Test a; int main() c
7、out”main() start”endl; Test b; return 0; constructor of Test main()start constructor of Test 2、 #include class Student public: Student(int i=0,double j=0) num=i;score=j; void print() coutnum,scoreendl; friend void fun(Student private: int num; double score; ; void fun(Student rs.score=80; rs.print()
8、; void main() Student s1(1002,50),s2; s1.print(); fun(s2); 1002,50 1100,80 3、 #include class A private: int a; public: A(int aa)a=aa; A()cout”Destructor A!”aendl; ; class B:public A private: int b; public: B(int aa = 0, int bb = 0):A(aa) b = bb; B()cout”Destructor B!”bendl; ; void main() B obj1(5),
9、obj2(6,7); return; ; Destructor B!7 Destructor A!6 Destructor B!0 Destructor A!5 4、 #include class A public: A(int i=0) m=i; cout”Constructor called.”mendl; void Set(int i) m=i; void Print() const coutmendl; A() cout”Destructor called.”mendl; private: int m; ; void main() const int N=5; A my; my=N;
10、my.Print(); Constructor called.0 Constructor called.5 5 Destructor called.5 Destructor called.5 第二部分(C+第 10、11 章) 一、單選題 1、在 C+中,類與類之間的繼承關系具有( C )。 A. 自反性 B. 對稱性 C. 傳遞性 D. 反對稱性 2、int Func(int,int);不可與下列哪個函數(shù)構成重載( A ) 。 A INT FUNC(INT,INT , INT) B DOUBLE FUNC(INT,INT) C DOUBLE FUNC(DOUBLE,DOUBLE) D DOU
11、BLE FUNC(INT,DOUBLE); 3、關于基類和派生類的描述中,錯誤的是( A ) 。 A 基類和派生類間是包含關系 B派生類中可以定義自己的成員 C基類成員在派生類中的訪問權限與繼承方式有關 D一個派生類可以從一個基類派生,也可以從多個基類派生。 4、下列對運算符重載的描述中,正確的是( D )。 A. 運算符重載可以改變結(jié)合性 B. 運算符重載可以改變優(yōu)先級 C. 運算符重載可以改變操作數(shù)的個數(shù) D. 運算符重載不改變優(yōu)先級和結(jié)合性 5、下列函數(shù)中,( D )不能重載。 A. 成員函數(shù) B. 非成員函數(shù) C. 構造函數(shù) D. 析構函數(shù) 6、當一個類某個函數(shù)被說明為 virtual
12、 時,該函數(shù)在該類的所有派生類中( A )。 A. 都是虛函數(shù) B. 只有 被重新說明時才識虛函數(shù) C. 只有被重新說明為 virtual 時才是虛函數(shù) D. 都不是虛函數(shù) 7、實現(xiàn)運行時的多態(tài)性采用( D ) A. 重載函數(shù) B. 構造函數(shù) C. 析構函數(shù) D. 虛函數(shù) 8、關于動態(tài)聯(lián)編的下列描述中,( A )是錯誤的。 動態(tài)聯(lián)編是在編譯時確定操作函數(shù)的 動態(tài)聯(lián)編是以虛函數(shù)為基礎的 動態(tài)聯(lián)編是在繼承的前提下的一種多態(tài)性 動態(tài)聯(lián)編時要求類的繼承是公有的 二、判斷題 1C+支持運算符重載,所有運算符都可以重載。 2在公有繼承中,基類中的公有成員和私有成員在派生類中都是可見的。 3基類中的保護成員
13、在其派生類中可以訪問,而派生類對象不可訪問。 4運算符重載不能改變運算符的運算優(yōu)先級、結(jié)合方向。 5派生類的對象不可以給基類對象賦值。 6靜態(tài)聯(lián)編是在運行時進行的,動態(tài)聯(lián)編是在編譯時進行的。 7. 派生類的構造函數(shù)中應包含直接基類的構造函數(shù)。 8私有繼承方式下,基類中公有成員和保護成員在派生類中都是私有的。 9抽象類不能定義對象,可以定義對象引用和對象指針。 10一個對象在創(chuàng)建時,總是要被初始化的。 三、寫出下面程序的輸出結(jié)果。 1、 #include class BASE public: void get( int i,int j,int k,int l ) a = i; b = j; x
14、= k; y = l; void print() cout a = a t b = b t x = x t y = y endl; int a,b; protected: int x, y; ; class A: public BASE public: void get( int i, int j, int k, int l ) BASE obj3; obj3.get( 50, 60, 70, 80 ); obj3.print(); a = i; b = j; x = k; y = l; u = a + b + obj3.a ; v = y - x + obj3.b; void print()
15、 cout a = a t b = b t x = x t y = y endl; cout u = u t v = v endl; private: int u, v ; ; void main() BASE obj1; A obj2; obj1.get( 10, 20, 30, 40 ); obj2.get( 30, 40, 50, 60 ); obj1.print(); obj2.print(); 2、 #include class A public: A(int i,int j) a1=i; a2=j; virtual void Print() couta1+a2endl; prote
16、cted: int a1,a2; ; class B:public A public: B(int i,int j):A(i,j) void Print() couta1*a2endl; ; void fun(A void main() int m=10,n=2; B b(m,n); fun(b); 3、 #include class B public: B() B(int i) b=i; virtual void virfun() cout”B:virfun() called.n”; private: int b; ; class D:public B public: D() D(int i
17、,int j):B(i) d=j; private: int d; void virfun() coutvirfun(); void main() B *pb=new B; fun(pb); D *pd=new D; fun(pd); 第三部分(VC+ ) 一、單選題 1.下面關于API的描述錯誤的是( ) A.API是用來控制Windows各個元素的外觀和行為的一套預定義的Windows函數(shù)。 B .創(chuàng)建應用程序,打開窗口、描繪圖形都要調(diào)用API函數(shù)。 C .Windows操作系統(tǒng)構建在API函數(shù)上 D.早期,windows程序員編寫程序只能使用API函數(shù) 2.下面關于API的描述錯誤的是(
18、 ) AAPI函數(shù)構建在Windows操作系統(tǒng)上 B創(chuàng)建應用程序,打開窗口、描繪圖形都要調(diào)用API函數(shù)。 CAPI是用來控制Windows各個元素的外觀和行為的一套預定義的Windows函數(shù)D Windows應 用程序構建在API函數(shù)上。 D.現(xiàn)在,Windows程序員編寫程序只能使用API函數(shù)。 3.下面描述句柄的語句,錯誤的是() A 句柄是WINDOWS用來標識被應用程序所建立或使用的對象的唯一整數(shù) B 句柄中存放了Windows對象的數(shù)據(jù) C 句柄能區(qū)分不同的應用程序?qū)ο?D句柄具有多種類型 4.在Windows中,窗口句柄的類型是 () A.HINSTANCE B. HFONT C.
19、HDC D.HWND 5.在Windows中,字體句柄的類型是 () A.HINSTANCE B. HFONT C.HDC D.HWND 6.對消息循環(huán)描述錯誤的是() AGetMessage函數(shù)在消息隊列非空時,取得消息并返回。 B.若GetMessage取得的是WM_CLOSE消息則返回0,否則返回非0. CGetMessage函數(shù)在消息隊列為空時,將一直空閑。 DDispatchMessage 將當前消息發(fā)送到對應的窗口過程中去。 7.下面四個MFC類中哪一個是管理MFC應用程序的 ( ) A. CWinApp B. CMainFrame C. CDocument D. CView 8.
20、下列類中不屬于MFC框架基本類的是 ( ) A. CWinApp B. CFrameWnd C. CView D. CObject 9.關于GDI的描述錯誤的是( ) A.GDI指圖像設備接口。 B.GDI 負責用戶和繪圖程序之間的信息交換 C.GDI控制在輸出設備上顯示圖形或文字。 D采用了GDI,編程時還需關心顯示卡或打印機的驅(qū)動程序。 10.關于設備上下文的描述錯誤的是( ) A.設備上下文是一種包含有關某個設備的繪制屬性的Windows數(shù)據(jù)結(jié)構。 B.設備上下文允許在Windows中進行與設備無關的繪制。 C.設備上下文可以用于繪制到屏幕,打印機但不能繪制到圖元文件。 D.設備上下文對
21、象封裝了繪制線條、形狀和文本等的 Windows API. 二、填空題 1.SendMessage 和 PostMessage 都會向窗體發(fā)送一個消息,但 SendMessage 而 PostMessage 。 2.使用 MFC AppWizard 產(chǎn)生的應用程序的類型主要包括 、 、 . 3、VC+的工作區(qū)窗口包含 3 個視圖,分別是 , , 。 4. 封裝畫刷的 GDI 類是 ,封裝畫筆的 GDI 類是 ,封裝字體的 GDI 類是 ,封 裝位圖的 GDI 類是 。 5. Windows應用程序的消息來源主要包括 和 6.Windows 應用程序的消息按處理方式主要包括 、 和 。 7. 在 Visual C+中,創(chuàng)建控件有兩種方法:一種是 ,另一種是 。 8、按鈕控件對應 類,靜態(tài)文本控件對應 類,單選和復選按鈕對應 類。 9、在 MFC 的眾多類中, 是所有 MFC 類的原始基類。 10、消息處理函數(shù) OnLButtonDown 響應 消息。 三、簡答題 1.什么是句柄?它在 Windows 程序中的作用是什么? 2. CPaintDC, CClientDC,CWindowDC 的區(qū)別?