《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)_第1頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)_第2頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)_第3頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)_第4頁
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)課程作業(yè)作業(yè)1:是非題1. 頭文件中一般存放著變量和常量的定義、函數(shù)的原型以及類的定義。()2. 程序的編譯是以文件為單位的,因此將程序分到多個(gè)文件中可以減少每次對(duì)程序修改所帶來的編譯工作量。()填空題下面是一個(gè)求數(shù)組元素之和的程序。主程序中定義并初始化了一個(gè)數(shù)組,然后計(jì)算 該數(shù)組各元素的和,并輸出結(jié)果。函數(shù)sum計(jì)算數(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 s

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

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

4、向鏈表的第一個(gè)節(jié)點(diǎn),如果鏈表為空, 則head的值為NULL第二個(gè)參數(shù)newData為要插入的新節(jié)點(diǎn)中存放的數(shù)據(jù)函數(shù)返回值:當(dāng)成功地插入新的節(jié)點(diǎn)時(shí),函數(shù)返回指向新節(jié)點(diǎn)的指針,否則, 如果不能申請(qǐng)到內(nèi)存空間,則返回 NULL。Node * AddNode(Node*& head, int newData)/ 在這里寫出函數(shù)的實(shí)現(xiàn)作業(yè) 2:是非題1.2. 填空題在不同作用域中的變量可以同名。派生類的成員函數(shù)可以直接訪問基類的所有成員。#includeA;void main()intintintcoutx1a6=2,4,8,6,9,14;x1=B;/調(diào)用fl函數(shù)求出a中前4各元素之和。x2=f1(a

5、,6); intf1(int a, int n)x2endl;8s+=ai;int i,s=0; for(i=0;in;i+) return s; 改錯(cuò)題1. 下面的函數(shù)將浮點(diǎn)型指針參數(shù) para 所指向的值賦給一個(gè)局部指針變量 pFloat 所指向的空間,然后輸出 *pFloat 的值。#include void func(float * para)float * pFloat; pFloat = para;cout pFloat;錯(cuò)誤為: 改正方法為 : 2. 下列程序片段對(duì)二維數(shù)組的每個(gè)元素賦值unsigned short SomeArray54;for (int i = 1; i=5;

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

7、特性。填空題#includeA;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 之間的最大值并賦給 x1 D; / 求出 b0 至 b5 之間的最大值并賦給 x2 coutx1 x2endl;閱讀理解題二、valarray是C+勺標(biāo)準(zhǔn)模板庫中的一個(gè)類模板,類模板的每個(gè)實(shí)例類實(shí)現(xiàn)了 某個(gè)具體的數(shù)據(jù)類型的數(shù)組,如 valarray 是一個(gè)整型的數(shù)組類。該類的使用和一 般的數(shù)組非常類似,可以通過 運(yùn)

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

9、INTVALARRAY;void mai n()INTVALARRAWal_array(ARRAY_SIZE);/定義一長度為Nrray_size勺數(shù)組對(duì)象/賦初始值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 callingabs():n;for (i = 0; i ARRAY_SIZE; i+)cout val_arrayi ;cout n;INTVALARRAYabs_arra

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論