freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c++程序設(shè)計(jì)教程:第5章-函數(shù)和函數(shù)模板(文件)

 

【正文】 。 double max(double,double)。 //3個(gè)整型參數(shù)的函數(shù)原型 void main( ) { coutmax(, ) max(56,8) “ max(39。)endl。} char max(char m1, char m2) {return(m1m2)?m1:m2。 ? 這種功能與自然語(yǔ)言中對(duì)動(dòng)詞的使用類似,此時(shí)的動(dòng)詞等價(jià)于 C++的函數(shù),例如一個(gè)對(duì)象在現(xiàn)實(shí)生活中可以對(duì)它進(jìn)行清潔、移動(dòng)、分解、修理或油漆,而且這也只是一部分用法。 ? C++語(yǔ)言也只有向具有多態(tài)性的函數(shù)傳遞一個(gè)實(shí)際對(duì)象時(shí),該函數(shù)才能與多種可能的函數(shù)中的一種聯(lián)系起來(lái)。源代碼只指明函數(shù)調(diào)用,而不說(shuō)明具體調(diào)用哪個(gè)函數(shù)。對(duì) 【 例 】 而言 , 編譯器在編譯時(shí) , 能根據(jù)源代碼調(diào)用固定的函數(shù)標(biāo)識(shí)符 , 然后由連接器接管這些標(biāo)識(shí)符 , 并用物理地址代替它們 , 這就稱為靜態(tài)聯(lián)編或先期聯(lián)編 。 這時(shí)可編寫一個(gè)具有默認(rèn)參數(shù)的函數(shù) 。} void main(){ coutadd(1,3),add(1,3,5), add(1,3,5,7)endl。 函數(shù)模板 ? 如上一節(jié)所述 , 為了求兩個(gè)數(shù)據(jù)的最大值 , 可以使用重載函數(shù)實(shí)現(xiàn) 。 當(dāng)用實(shí)際的類型來(lái)實(shí)例化這種函數(shù)時(shí) ,就好像照模板來(lái)制造新的函數(shù)一樣 , 所以稱這種函數(shù)為函數(shù)模板 。 由此可見(jiàn) , 可使編譯器成為一種在函數(shù)模板引導(dǎo)下 , 制作符合要求的代碼的程序設(shè)計(jì)輔助工具 。 上面的函數(shù)雖然有兩個(gè)參數(shù) , 但參數(shù)類型一樣 , 所以在尖括號(hào)里說(shuō)明類型參數(shù)的標(biāo)識(shí)符 , 這樣就可表示為: template class Type Type max(Type m1, Type m2) { return(m1m2)?m1:m2。} ? class意為“用戶定義的或固有的類型”。 【 例 】 使用函數(shù)模板求最大值的程序。 //調(diào)用求兩者最大值的函數(shù)模板 max return max(t,m3)。i++) if (maxnuma[i]) maxnum=a[i]。 //定義整數(shù)數(shù)組 a char c[]=acdbfgweab。p39。B39。C39。A39。 coutintMax=max(a,10) doubleMax=max(d,10) charMax=max(c,10)endl。,39。)=C intMax = 1 doubleMax= charMax=w ? C++的模板的機(jī)制也是重載。 一般來(lái)講 , 使用C++語(yǔ)言解題可分為如下步驟: ①設(shè)計(jì)一個(gè)解題的方法; ②使用一種方式把解題方法描述出來(lái); ③把這種對(duì)解題方法的描述轉(zhuǎn)化成程序形式; ④在計(jì)算機(jī)上編輯成 C++的源文件; ⑤編譯 C++程序源文件的過(guò)程,同時(shí)也是查錯(cuò)的過(guò)程。如果算法設(shè)計(jì)不對(duì),要轉(zhuǎn)到①,也即重復(fù)① ~④ 步。 【 例 】 求輸入兩個(gè)數(shù)的最大值的程序。 void main( ) { double number1, number2。 else coutmax= number2endl。 【 算法描述 】 如果選定使用 for語(yǔ)句實(shí)現(xiàn)循環(huán),可以直接使用相應(yīng)語(yǔ)句進(jìn)行描述, 例如: BEGIN 得到函數(shù)參數(shù) m的值 h← 1 for( i← 1。 【 編程實(shí)現(xiàn) 】 下面是函數(shù)的實(shí)現(xiàn): int fac ( int m ) { int i, h。 ++i ) h=h*i。 ? 這 4位又是前兩位相同 , 后兩位也相同 , 互相又不相同并且是某個(gè)整數(shù)的平方的數(shù) 。 BEGIN for(i=1。 j++) if i≠j then { i*1000+i*100+j*10+jk for(c=31。 endif endforc //使用 for的循環(huán)變量 c區(qū)分 } endif endforji //兩個(gè) for循環(huán)的結(jié)束處 END 【 編程實(shí)現(xiàn) 】 將它們轉(zhuǎn)換成 C++程序如下: include iostream using namespace std。 i++) for(j=0。 c*ck。 ? 如果使用接近自然語(yǔ)言的方式描述,稱為偽 C++語(yǔ)言。 常用的有自然語(yǔ)言 、 傳統(tǒng)流程圖 、 NS結(jié)構(gòu)化流程圖 、 判定表 、偽代碼和 PAD圖等 。 這種方法是使用表格表示算法 , 例如求解一元二次方程ax2+bx+c=0的解 , 可以列出表 。這種流程圖又稱 NS結(jié)構(gòu)化流程圖( N和 S是兩位美國(guó)學(xué)者的英文姓名的第 1個(gè)字母)。 因此 , 流程圖適宜表示一個(gè)算法 , 但在設(shè)計(jì)算法過(guò)程中使用并不是很理想的工具 ( 尤其是當(dāng)算法比較復(fù)雜 、 需要反復(fù)修改時(shí) ) 。每一行(或幾行)表示一個(gè)基本操作,它不用圖形符號(hào),因此書寫方便、格式緊湊,也比較好懂,不僅便于向計(jì)算機(jī)語(yǔ)言算法(即程序)過(guò)渡,也適合程序設(shè)計(jì)的自動(dòng)化 。 include iostream using namespace std。 void main(){ for(char i=39。 i++){ func(i)。 } } char func(charamp。 return *s。 char func(char)。 i39。 couti。 return *s。 char func(char)。 i39。 } } char func(char s){ s++。} 雖然重載函數(shù)分別是傳值和傳址,但語(yǔ)句 “ func(i)”調(diào)用的是傳值形式的函數(shù),不會(huì)改變 i的值, “ func(func(i))。 char func(charamp。a39。 int x=i+func(amp。s) { s++。 } ? 重載函數(shù)分別是傳址和傳引用 , 第 1個(gè)輸出很容易判別 ,是字符 a及其碼值 97。i)應(yīng)為 98, func(i)為 99, 因此結(jié)果為 97。 int addtwo { int a,b。當(dāng)定義一個(gè)不帶任何形式參數(shù)的函數(shù)時(shí) ,仍然必須包括一對(duì)括號(hào) ( )。 //聲明它的函數(shù)原型 void main ( ) { int N。 couta, b。 int sum(int)。 } int sum( int x) {return (x+x)。即將 sum(x)語(yǔ)句改為: x=sum( x )。 使用多個(gè)文件進(jìn)行模塊化設(shè)計(jì) ? 假設(shè)要求編制兩個(gè)函數(shù) , 分別計(jì)算兩個(gè)數(shù)的最小值和平均值 , 然后使用主函數(shù)調(diào)用它們 。 然后將任務(wù)分派給三個(gè)人去完成 。 三個(gè)人編寫的程序內(nèi)容如下: //求最小值函數(shù)文件: double min(double m1, double m2) { if(m1 m2) return m1。這個(gè)模塊的正確性可以自己驗(yàn)證,驗(yàn)證正確無(wú)誤后,就可提交使用。常數(shù)設(shè)計(jì)在它的頭文件中,這里把它命名為 。 cinab。 double min(double,double)。雖然求最大值文件沒(méi)有頭文件,但也要在主程序的頭文件 ,以保證 main函數(shù)能正確分辨它。 組合為一個(gè)工程項(xiàng)目 本節(jié)以 VC和 BC為例,說(shuō)明構(gòu)成的方法。 ? 主函數(shù)使用的函數(shù)庫(kù)的頭文件 “ ”,也有意放在頭文件 。 ? 總共有 3個(gè) cpp程序源文件和 2個(gè)頭文件,共 5個(gè)文件。 coutmean=mean( a,b )endl。 //主函數(shù)文件: //主函數(shù) main include void main( ){ double a,b。 } //平均值函數(shù)的頭文件 const double DIV2 = 。 } 這個(gè)文件自成系統(tǒng),所以最簡(jiǎn)單。使它們協(xié)調(diào)工作的方法不止一種,建議使用頭文件和原型聲明,充分利用編輯器的嚴(yán)格檢查來(lái)組織實(shí)施。 這樣 , 每個(gè)文件是一個(gè)單獨(dú)模塊 , 功能單一 , 查錯(cuò)容易 。這主要涉及到如何使用函數(shù)原型、頭文件和工程文件等方面的知識(shí),而且與所使用的集成環(huán)境也有關(guān)系。 但變量 x 是離開 sum 就消失了的副本 , 因此也就不存在于 main( ) 之中 。 sum( x )。 } 【 例 】 改正下面程序中的錯(cuò)誤。 printf(N=%d\n, N)。當(dāng)聲明它的函數(shù)原型時(shí),必須寫成 (void),完整的程序如下: include iostream using namespace std。 return( a+b )。 程序輸出結(jié)果如下: a,97 c,96 d,100 f,99 錯(cuò)誤分析 【 例 】 下面是一個(gè)不帶形式參數(shù)的函數(shù) addtwo。 計(jì)算是從 a開始的 , 這時(shí) a的碼值為97。 } char func(char *s) { (*s)++。 couti,xendl。f39。 char func(char*)。 【 例 】 分析下面程序的輸出結(jié)果并說(shuō)明理由。} char func(char *s){ (*s)++。 i++) { func(func(i))。 void main(){ for(char i=39。 【 例 】 分析下面程序的輸出結(jié)果并說(shuō)明理由。 return s。 i++) { func(func(amp。 void main(){ for(char i=39。 【 例 】 分析下面程序的輸出結(jié)果并說(shuō)明理由。 return s。i)。 i39。)。 綜合實(shí)例 本節(jié)舉幾個(gè)例子,結(jié)合函數(shù)的重載,進(jìn)一步說(shuō)明傳值、傳地址和傳引用問(wèn)題。 ? 偽代碼是用介于自然語(yǔ)言與計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法。圖 結(jié)構(gòu)的流程圖,圖 NS流程圖。 ? 1973年美國(guó)學(xué)者 .的流程圖形式。 后來(lái)發(fā)展的偽語(yǔ)言 , 克服了它的缺點(diǎn) 。 ? 其他的算法描述方法見(jiàn)附錄。 if(c*c==k) cout“牌照號(hào)碼是: ” 310000+kendl。 j++) if(i!=j) { k=i*1000+i*100+j*10+j。 for(i=1。 c++)。 i++) for(j=0。 【 算法描述 】 因?yàn)楹竺?4位數(shù) , 1000的平方根 〉 31, 所以窮舉實(shí)驗(yàn)時(shí)不 需從 1開始 , 而是從 31開始尋找一個(gè)整數(shù)的平方 。 } 【 例 】 一輛汽車撞人后逃跑, 4個(gè)目擊者提供如下線索: 甲:牌照 4位相同; 乙:牌號(hào)為 31xxxx; 丙:牌照 6位相同; ?。?3~ 6位是一個(gè)整數(shù) 的平方 。 for ( i=1。 step 1 ) h← h*i endfor return h END ? 循環(huán)可直接用 for語(yǔ)句描述,使用 endfor指出結(jié)束的地方。 【 選擇算法 】 ? 求 m 的階乘 , 即求 m!, 可以使用循環(huán)來(lái)計(jì)算 ,從 1開始計(jì)算 , 然后計(jì)算 1*2, 再用這個(gè)乘積去乘下一個(gè)數(shù)字 3, 以此類推 , 直到 m。 cin number1 number2。 ? 如果對(duì)輸入有要求,也應(yīng)給予說(shuō)明 (如希望有提示信息等要求 )。因此,一定要重視前 3個(gè)步驟。如果結(jié)果不正確,就要返回查找原因,直到運(yùn)行結(jié)果正確為止。 ? 因?yàn)檫x擇調(diào)用哪一個(gè)函數(shù)是在編譯時(shí)實(shí)現(xiàn)的,所以是靜態(tài)聯(lián)編。,39。程序輸出結(jié)果如下: 56 w max(5,9,4)=9 max(5,4,9)=9 ma
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1