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

正文內(nèi)容

c程序設計教程:第5章-函數(shù)和函數(shù)模板-資料下載頁

2024-10-04 16:26本頁面
  

【正文】 //兩個 for循環(huán)的結束處 END 【 編程實現(xiàn) 】 將它們轉(zhuǎn)換成 C++程序如下: include iostream using namespace std。 void main( ) { int i,j,k,c。 for(i=1。 i=9。 i++) for(j=0。 j=9。 j++) if(i!=j) { k=i*1000+i*100+j*10+j。 for(c=31。 c*ck。 c++)。 if(c*c==k) cout“牌照號碼是: ” 310000+kendl。 } } 運行輸出如下: 牌照號碼是: 317744 ? 由這幾個例題可知,解題需要具體的算法,描述算法的方法很多,稱為算法描述。 ? 如果使用接近自然語言的方式描述,稱為偽 C++語言。 ? 偽 C++語言簡單易懂,尤其是教科書中比較簡單的例題和習題,用偽 C++語言描述較好。 ? 其他的算法描述方法見附錄。 常用過程設計算法描述方法 ? 可以用不同的方法表示一個算法 。 常用的有自然語言 、 傳統(tǒng)流程圖 、 NS結構化流程圖 、 判定表 、偽代碼和 PAD圖等 。 ? 對簡單的程序 , 使用自然語言直觀易懂 , 但對于復雜一些的程序 , 容易產(chǎn)生歧義 。 后來發(fā)展的偽語言 , 克服了它的缺點 。 ? 在某些具有條件判斷的場合下 , 使用判定表表示算法能給人一種非常清晰的感覺 。 這種方法是使用表格表示算法 , 例如求解一元二次方程ax2+bx+c=0的解 , 可以列出表 。 ? 由于使用流程圖表示基本結構時,箭頭可以隨心所欲,所以會帶來結構不緊湊,降低模塊結構化等新問題。 ? 1973年美國學者 .的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線,全部算法寫在一個矩形框內(nèi),這個矩形框還可以包含其他的從屬于它的框,或者說,由一些基本的框組成一個大的框。這種流程圖又稱 NS結構化流程圖( N和 S是兩位美國學者的英文姓名的第 1個字母)。這種流程圖適于結構化程序設計,因而很受歡迎。圖 結構的流程圖,圖 NS流程圖。 ? 用流程圖和 NS流程圖表示算法 , 直觀易懂 , 但畫起來比較費事 , 在設計一個算法時 , 可能要反復修改 , 而修改流程圖是比較麻煩的 。 因此 , 流程圖適宜表示一個算法 , 但在設計算法過程中使用并不是很理想的工具 ( 尤其是當算法比較復雜 、 需要反復修改時 ) 。 為了方便設計算法 , 常用一種稱為偽代碼 ( pseudo code) 的工具 。 ? 偽代碼是用介于自然語言與計算機語言之間的文字和符號來描述算法。它如同一篇文章,自上而下地寫下來。每一行(或幾行)表示一個基本操作,它不用圖形符號,因此書寫方便、格式緊湊,也比較好懂,不僅便于向計算機語言算法(即程序)過渡,也適合程序設計的自動化 。讀者可以根據(jù)自己的情況選擇描述算法的方法。 綜合實例 本節(jié)舉幾個例子,結合函數(shù)的重載,進一步說明傳值、傳地址和傳引用問題。 【 例 】 分析下面程序的輸出結果并說明理由。 include iostream using namespace std。 char func(charamp。)。 char func(char*)。 void main(){ for(char i=39。a39。 i39。f39。 i++){ func(i)。 func(amp。i)。 couti。 } } char func(charamp。s){ s++。 return s。 } char func(char *s){ (*s)++。 return *s。 } 因為重載函數(shù)分別是傳址和傳引用 , 所以輸出為 cf。 【 例 】 分析下面程序的輸出結果并說明理由。 include iostream using namespace std。 char func(char)。 char func(char*)。 void main(){ for(char i=39。a39。 i39。f39。 i++) { func(func(amp。i))。 couti。 } } char func(char s){ s++。 return s。 } char func(char *s){ (*s)++。 return *s。 } 因為重載函數(shù)分別是傳值和傳址 , 傳值不改變內(nèi)容 , 所以 輸出為 bdf。 【 例 】 分析下面程序的輸出結果并說明理由。 include iostream using namespace std。 char func(char)。 char func(char*)。 void main(){ for(char i=39。a39。 i39。f39。 i++) { func(func(i))。 couti。 } } char func(char s){ s++。 return s。} char func(char *s){ (*s)++。 return *s。} 雖然重載函數(shù)分別是傳值和傳址,但語句 “ func(i)”調(diào)用的是傳值形式的函數(shù),不會改變 i的值, “ func(func(i))?!眱纱握{(diào)用的都是傳值的函數(shù)形式,并不會調(diào)用傳址的函數(shù),所以不會改變內(nèi)容,輸出為 abcde。 【 例 】 分析下面程序的輸出結果并說明理由。 include iostream using namespace std。 char func(charamp。)。 char func(char*)。 void main(){ for(char i=39。a39。 i39。f39。 i++){ couti,(int)iendl。 int x=i+func(amp。i)func(i)。 couti,xendl。} } char func(charamp。s) { s++。 return s。 } char func(char *s) { (*s)++。 return *s。 } ? 重載函數(shù)分別是傳址和傳引用 , 第 1個輸出很容易判別 ,是字符 a及其碼值 97。 第 2個 輸出的 i也很容易知道為 c,現(xiàn)在是計算 x的值 。 計算是從 a開始的 , 這時 a的碼值為97。 而 func(amp。i)應為 98, func(i)為 99, 因此結果為 97。 ? 開始下一輪循環(huán)時 , i變?yōu)?d, 碼值為 100, 所以 i變?yōu)?f, x為 99。 程序輸出結果如下: a,97 c,96 d,100 f,99 錯誤分析 【 例 】 下面是一個不帶形式參數(shù)的函數(shù) addtwo。它是否有錯誤?為什么?假設在 主函數(shù)main中調(diào)用它并把它的值賦給 N,寫出此程序。 int addtwo { int a,b。 couta, b。 return( a+b )。 } ? 有錯誤。當定義一個不帶任何形式參數(shù)的函數(shù)時 ,仍然必須包括一對括號 ( )。 ? 正確的定義是寫成 int addtwo( )。當聲明它的函數(shù)原型時,必須寫成 (void),完整的程序如下: include iostream using namespace std。 int addtwo(void)。 //聲明它的函數(shù)原型 void main ( ) { int N。 N=addtwo()。 printf(N=%d\n, N)。 } int addtwo() { int a,b。 couta, b。 return( a+b )。 } 【 例 】 改正下面程序中的錯誤。 include iostream using namespace std。 int sum(int)。 void main ( ) { int x=7。 sum( x )。 cout The sum is xendl。 } int sum( int x) {return (x+x)。} ? 程序傳遞 x 的一個副本到 sum (x ), 并且期望在調(diào)用函數(shù)后 , 能得到和值 。 但變量 x 是離開 sum 就消失了的副本 , 因此也就不存在于 main( ) 之中 。 ? 可通過使用參數(shù)的副本函數(shù)完成所要求的工作 。即將 sum(x)語句改為: x=sum( x )。 多個文件中的函數(shù)調(diào)用 ? 要進行模塊化和結構化設計,必須掌握多文件編程的知識。這主要涉及到如何使用函數(shù)原型、頭文件和工程文件等方面的知識,而且與所使用的集成環(huán)境也有關系。為了敘述方便,以后將Visual C++ 簡稱 VC,將 Borland C ++ 簡稱 BC。 使用多個文件進行模塊化設計 ? 假設要求編制兩個函數(shù) , 分別計算兩個數(shù)的最小值和平均值 , 然后使用主函數(shù)調(diào)用它們 。 將這兩個函數(shù)分別設計在 , 主函數(shù)在 中 。 這樣 , 每個文件是一個單獨模塊 , 功能單一 , 查錯容易 。 兩個函數(shù)模塊互不牽扯 。 然后將任務分派給三個人去完成 。 ? 但如何將這些文件組成一個整體呢?一般把這個整體稱為工程,目前 VC又稱其為項目。使它們協(xié)調(diào)工作的方法不止一種,建議使用頭文件和原型聲明,充分利用編輯器的嚴格檢查來組織實施。下面編制的程序就是考慮到這些實施方法而設計的。 三個人編寫的程序內(nèi)容如下: //求最小值函數(shù)文件: double min(double m1, double m2) { if(m1 m2) return m1。 else return m2。 } 這個文件自成系統(tǒng),所以最簡單。其實,工程應用時,許多文件就是以函數(shù)為單位的。這個模塊的正確性可以自己驗證,驗證正確無誤后,就可提交使用。 //求平均值函數(shù)文件: //求平均值函數(shù) mean include " " double mean(double m1, double m2) { return ((m2+m1)*DIV2)。 } //平均值函數(shù)的頭文件 const double DIV2 = 。 ? 為了說明使用 const定義常數(shù)問題,特讓 中的 mean函數(shù)使用常系數(shù) DIV2。常數(shù)設計在它的頭文件中,這里把它命名為 。調(diào)試成功后,提供這兩個文件。 //主函數(shù)文件: //主函數(shù) main include void main( ){ double a,b。 coutInput a and b:endl。 cinab。 coutmin=min( a,b )endl。 coutmean=mean( a,b )endl。 } //主函數(shù)使用的頭文件 include iostream using namespace std。 double min(double,double)。 double mean(double, double)。 ? 總共有 3個 cpp程序源文件和 2個頭文件,共 5個文件。 頭文件和函數(shù)原型的作用 ? 一般是將所有的函數(shù)原型和外部變量的聲明,以及常數(shù)的定義都放在一個頭文件里,需要這些頭文件的源文件,就可以將它們包含進去。雖然求最大值文件沒有頭文件,但也要在主程序的頭文件 ,以保證 main函數(shù)能正確分辨它。 ? 常數(shù) DIV2定義在 ,在 下語句包含它: include ? 因為只有 mean函數(shù)使用這個常數(shù) , 又為了說明自帶頭文件的方法 , 所以單獨做了這個頭文件 。 ? 主函數(shù)使用的函數(shù)庫的頭文件 “ ”,也有意放在頭文件 。 ? 一般來講 , 如果是大家共有的常數(shù)和變量 , 可以協(xié)商放在一個公共的頭文件中 。 組合為一個工程項目 本節(jié)以 VC和 BC為例,說明構成的方法。 1. 使用 VC構
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1