《面向?qū)ο蟪绦蛟O(shè)計》課程作業(yè)._第1頁
《面向?qū)ο蟪绦蛟O(shè)計》課程作業(yè)._第2頁
免費預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

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

文檔簡介

1、1面向?qū)ο蟪绦蛟O(shè)計課程作業(yè)作業(yè)1:是非題1.頭文件中一般存放著變量和常量的定義、函數(shù)的原型以及類的定義。()2.程序的編譯是以文件為單位的,因此將程序分到多個文件中可以減少每次對程 序修改所帶來的編譯工作量。()填空題下面是一個求數(shù)組元素之和的程序。主程序中定義并初始化了一個數(shù)組,然后計算 該數(shù)組各元素的和,并輸出結(jié)果。函數(shù)sum計算數(shù)組元素之和。填充程序中不完整的部分。int sum(int ,int);void main()int ia5 = 2,3,6,8,10;sumOfArray = sum(ia,5); cout Sum of array: sumOfArray endl;int

2、sum(int array,int len)int iSum = 0;for(int i = 0;) return iSum;閱讀理解題寫出下列程序的運行結(jié)果:/ file1.cppstaticint i = 20;int x;static int g(i nt p)return i + p;void f(int v)x=g(v);/ file2.cpp#include extern int x;void f(int);2void main()int i=5;f(i);cout x;回答以下問題:1.程序的運行結(jié)果是什么樣的?2.為什么文件file2.cpp中要包含頭文件?3.在函數(shù)main(

3、)中是否可以直接調(diào)用函數(shù)g()?為什么?4.如果把文件file1.cpp中的兩個函數(shù)定義的位置換一下,程序是否正確?為什么?5.文件file1.cpp和file2.cpp中的變量i的作用域分別是怎樣的?在程序 中直接標(biāo)出兩個變量各自的作用域。編程題寫一個函數(shù),完成在鏈表末尾增加一個節(jié)點的操作。函數(shù)的原型為:Node * AddNode(Node * & head, int newData);其中,鏈表節(jié)點的定義如下:struct Node int data;/存放數(shù)據(jù)Node * next;/指向鏈表中的下一個節(jié)點;函數(shù)參數(shù):函數(shù)的第一個參數(shù)head指向鏈表的第一個節(jié)點,如果鏈表為空,

4、則head的值為NULL第二個參數(shù)newData為要插入的新節(jié)點中存放的數(shù) 據(jù)。函數(shù)返回值: 當(dāng)成功地插入新的節(jié)點時,函數(shù)返回指向新節(jié)點的指針,否 則,如果不能申請到內(nèi)存空間,則返回NULL。Node * AddNode(Node *& head, int newData)/在這里寫出函數(shù)的實現(xiàn)作業(yè)2:是非題1.在不同作用域中的變量可以同名。2.派生類的成員函數(shù)可以直接訪問基類的所有成員。 填空題#include_A_void main()int a6=2,4,8,6,9,14;int x1=_ B_ ; /int x2=f1(a,6);coutx1 x2endl; int f1(in

5、t a, int n) int i,s=0; for(i=0;in;i+) s+=ai; return s;調(diào)用f1函數(shù)求出a中前4各元素之和。3改錯題1.下面的函數(shù)將浮點型指針參數(shù)para所指向的值賦給一個局部指針變量pFloat所指向的空間,然后輸出*pFloat的值。#include void func(float * para)float * pFloat; pFloat = para;cout pFloat;錯誤為: _改正方法為 : _2.下列程序片段對二維數(shù)組的每個元素賦值unsigned short SomeArray54;for (int i = 1; i=5; i+)for

6、 (int j = 1; j=4; j+) SomeArrayij = i+j;錯誤為: _改正方法為: _編程題寫一個函數(shù),找出給定字符串中小寫字母字符的個數(shù)。函數(shù)的原型為:intCalcAlpha(char *str);函數(shù)參數(shù) :str為所要處理的字符串; 函數(shù)返回值 :所給字符串中小寫字母字符的個數(shù)int CalcAlpha(char *str) /在這里寫上程序的實現(xiàn)作業(yè)3:是非題1.函數(shù)的參數(shù)和返回值類型可以是簡單數(shù)據(jù)類型,也可以是指針、引用、數(shù)組和 類。2.如果派生類的成員函數(shù)的原型與基類中被定義為虛函數(shù)的成員函數(shù)原型相同, 那么,這個函數(shù)自動繼承基類中虛函數(shù)的特性。填空題#in

7、clude_ A_;int f2(int* a, int n)_ B_;for(i=1;in;i+)if(maxai) max=ai;return max;void main()int bMM=3,12,6,20,9,7,34,50,25,66;_ C_ ; /求出b4至b8之間的最大值并賦給x1D; /求出b0至b5之間的最大值并賦給x2 coutx1 x2endl;閱讀理解題4二、valarray是C+的標(biāo)準(zhǔn)模板庫中的一個類模板,類模板的每個實例類實現(xiàn)了 某個具體的數(shù)據(jù)類型的數(shù)組,如valarray是一個整型的數(shù)組類。該類的使用和一 般的數(shù)組非常類似,可以通過運算符來訪問數(shù)組中的每個元素。

8、C+的標(biāo)準(zhǔn)模板庫中還有一個模板函數(shù)abs(),其函數(shù)原型為:templatevalarray abs(const valarray & x);該函數(shù)的作用是將作為參數(shù)的數(shù)組x的每個元素的值取絕對值,并返回得到的新的數(shù) 組。如原來的數(shù)組為:4 -1 -3 0 -34將這個數(shù)組作為參數(shù)傳遞給函數(shù)abs后,函數(shù)返回的數(shù)組就變成:4 1 3 0 34要求:閱讀下列程序,回答后面的問題。/*/#in elude #include /該頭文件中定義了模板類valarray和模板函數(shù)abs()#defi ne ARRAY_SIZE 10typedef valarray INTVALARRAY;voi

9、d mai n()INTVALARRAY val_array(ARRAY_SIZE);/定義一長度為ARRAY_SIZE的數(shù)組對象/賦初始值for (int i = 0; i ARRAY_SIZE; i+)val_arrayi = -i;cout Size of val_array = val_array.size() n;cout The values of val_array before call ing abs():n;for (i = 0; i ARRAY_SIZE; i+)cout val_arrayi ;cout n;INTVALARRAY abs_array = abs(val

10、_array);cout The result of val_array after calli ng abs():n;for (i = 0; i ARRAY_SIZE; i+)cout abs_arrayi ;cout n;/*/問題1:寫出程序的輸出結(jié)果問題2:關(guān)于程序中的語句:INTVALARRAY val_array(ARRAY_SIZE);下列說法哪些是正確的,哪些是錯誤的?在下表相應(yīng)的位置寫上“對”或“錯”題號ABCDE5對/錯(A) 該語句定義了一個對象val_array,這個對象是類valarray的實例(B) 該語句說明了一個函數(shù)原型,函數(shù)的名字為val_array,參數(shù)為A

11、RRAY_SIZE函數(shù)的返回值類型為INTVALARRAY(C) 板類valarray一定有一個只帶一個參數(shù)的構(gòu)造函數(shù)(D) 模板類valarray一定有一個只帶兩個參數(shù)的構(gòu)造函數(shù)(E)ARRAY_SIZE將作為參數(shù)傳遞給val_array的構(gòu)造函數(shù),初始化val_array對象問題3:( 出錯誤并寫出正本小題共12分)下面是模板函數(shù)abs()的實現(xiàn)。這個實現(xiàn)中有錯誤,指 確的實現(xiàn)。注意:函數(shù)頭是正確的,不要改變,所有的錯誤出現(xiàn)在函數(shù)體中。templatevalarray abs(const valarray& x)for(int i=0; ix.size(); i+) if(xi0)

12、 xi*=-1; return x;這個函數(shù)實現(xiàn)中有以下錯誤:(1)2)3)正確的函數(shù)實現(xiàn)應(yīng)為:templatevalarray abs(const valarray& x)問題4:(本小題3分)從上面的程序中,你可以推斷出,valarray模板類中至少 重載了哪個或哪些C+勺運算符?答:重載了 _運算符編程題6寫一個函數(shù),找出給定字符串中具有最大ASCII碼勺字符。如字符串“world”中字符w具有最大的ASCII碼。函數(shù)的原型為:charMaxCharacter(char *str);函數(shù)參數(shù):str指向所要處理的字符串;函數(shù)返回值:如果str不空,則返回具有最大ASCII碼的字符

13、,否則返回空 字符0 x0或0。char MaxCharacter(char *str)作業(yè)4:是非題1.函數(shù)重載既要求兩函數(shù)參數(shù)對應(yīng)的類型不同又要求參數(shù)個數(shù)不同。2.在基類中被說明為虛函數(shù)的類的成員函數(shù)必須在每個派生類中說明為虛函數(shù), 才能具有多態(tài)的特征。編程題一、定義一個日期類Date,該類對象存放一個日期,可以提供的操作有:int GetYear () ;/取年份int GetMonth () ;/取月份int GetDay ( ) ;/取日子值void SetDate ( int year, int month, int day) ;/設(shè)置日期值下面是測試你所定義的日期類的程序:#in

14、clude #include“date.h”void main()Date d1(1999, 1, 14);/用所給日期定義一個日期變量Date d2;/定義一個具有缺省值的日期,缺省值為1980年1月1日Date d3(d1);/用已有日期x構(gòu)造一個新對象d2.SetDate(1999,3,13);cout Date:;cout d1.GetYear() . d1.GetMonth() . d1.GetDay() endl;cout Date:;cout d2.GetYear() . d2.GetMonth() . d2.GetDay() endl;cout Date:;cout d3.GetYear() . d3.GetMonth() . d3.GetDay() endl;要求:7(1)寫出日期類的完整定義,其中,三個Get函數(shù)寫成內(nèi)聯(lián)函數(shù)形式,SetDate寫成非內(nèi)聯(lián)函數(shù)形式。所有數(shù)據(jù)成員都定義為私有成員。注意構(gòu)造函數(shù) 的三種形式。(2)寫出程序的運行

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論