- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
函数的进阶应用
函數的進階應用 戰勢不過奇正,奇正之變,不可勝窮也。 奇正相生,如循環之無端,孰能窮之哉! 《孫子兵法﹒勢篇》 介紹函數的重載、參數的預設值、樣版函數,等等讓 C++ 的函數在使用上更方便的語法。此外,也討論了幾個非常實用的問題,包括如何取得亂數、遞迴函數的設計以及排序與搜尋的相關演算法。 Chap 10 函數的進階應用 10.1 函數的重載 10.2 參數的預設值 10.3 樣版函數 10.4 亂數的取得 10.5 遞迴函數 10.6 排序與搜尋 函數的重載 int Max(int, int); double Max(double, double); // 參數的資料型態不同 double Area(double x); double Area(double x, double y); // 參數的數目不一樣 範例程式 Overload.cpp: 函數的重載 預設引數 (default arguments) 函數原型: double Area(double Width, double Length = 12.0); 函數定義(兩個參數的乘積): double Area(double Width, double Length) { return Width*Length; } A = Area(6.5); // 只用一個引數呼叫 範例程式 Default.cpp: 預設引數 預設引數函數的呼叫 void Fune (float, float x = 0,int n = 5,char = r); 下面的呼叫都是正確的: Func(1.5); Func(3.2, 1.0); Func(0.0, 1.0, 10, a); 不可以有下列的呼叫方式: Func(1.0, 2.0, a); // 錯誤! 具有預設參數的重載函數 兩個具有預設參數的重載函數Func()之原型: int Func(int n, int m = 0, float x = 1.0); int Func(int n, int m); 這兩個函數無法以下列呼叫敘述正確區分: M = Func(2,3); // 錯誤! 樣版函數(Function Template) template class T T Sum(T x, T y) {return x+y;} 相當於同時宣告了許多名稱都叫做Sum() 的函數,但其輸入和輸出的資料型態未定。 樣版函數內可以使用不只一種暫定的資料型態: template class T1, class T2, class T3 T1 Func(T1 x,T2 y, T3 z) { // … 函數內容 } 樣版函數可以用來取代函數的重載 templateclass T T Abs(T x) {return (x0)? x : -x;} 相當於同時定義了三個函數: int Abs (int x) {return (x0)? x : -x;} float Abs (float x) {return (x0)? x : -x;} double Abs (double x) {return (x0)? x : -x;} 準亂數產生器(pseudo-random number generator) 要得到準亂數可以呼叫函數rand(): rand() :可以產生0到RAND_MAX的整數。 RAND_MAX定義在 cstdlib 裏面,RAND_MAX的值通常為 0x7FFFU (32767)。 srand() 用來給予這個準亂數產生器一個臨時的初始值 (稱為種子,seed)。 srand(int(time(0))); 產生指定範圍內的整數亂數 獲得一個介於0到N-1之間的整數亂數: rand()%N 我們可以包裝成inline 函數以方便使用: inline int RandI(int N) {return 1 + rand()%N;} 範例程式 TestDice.cpp 以inline 函數 RandI() 為基礎,寫成一個函數TestDice() 以模擬擲骰子的 現象 (骰子的值為整數1~6)。 // TestDice.cpp #include iostream #include iomanip #include ctime using namespace std; inline int RandI(int N) // 定義 inline 函數 RandI() { retur
您可能关注的文档
- 人的全面发展的概念和内容.ppt
- 人类社会及其发展规律(新).doc
- 人类社会的基本结构和社会发展规律.doc
- 人民解放战争的胜利外国语初级中学.ppt
- 什么是环境财政改革.pdf
- 介绍演绎推理.ppt
- 仁沙教育信息第十七期.doc
- 从温泉管理问题谈温泉法.pdf
- 从竞争的经济学转向合作的经济学.pdf
- 从美国教师评价标准思考我校教师评价标准.doc
- 2025届中工国际工程股份有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025届乌鲁木齐石化分公司高校毕业生春季招聘10人笔试参考题库附带答案详解.doc
- 2025届华夏金融租赁有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025届物产中大金属集团有限公司校园招聘笔试参考题库附带答案详解.doc
- 2025山东济南城市发展集团春季校园招聘43人笔试参考题库附带答案详解.doc
- 2025山西临县裕民焦煤有限公司招聘15人笔试参考题库附带答案详解.doc
- 2025年01月河南洛阳龙潭大峡谷景区公开招聘20人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2025中国移动秋季校园招聘启动笔试参考题库附带答案详解.doc
- 2025年02月内蒙古自治区政府系统第二批事业单位公开招聘(赤峰市市直公开招聘23人)笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024年12月湖州长兴事业单位编外公开招聘(2)人长兴县文化和广电旅游体育局笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
文档评论(0)