版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、5.2 自定義函數(shù)(hnsh)的概念及使用方法例1:求兩個數(shù)中的最大數(shù)#include int imax (int m, int n)return (mn ? m:n); void main() int a=6,b=9; coutimax(a,b); 第1頁/共47頁第一頁,共48頁。例2:求x的n次方#include iostream.hvoid main() float mpow(float ,int); coutpow=mpow(3.,3)endl; float mpow(float a,int n)int i; float k=1; for(i=1;i=n;i+) k=k*a; ret
2、urn (k); 第2頁/共47頁第二頁,共48頁。5.3 5.3 自定義函數(shù)(hnsh)(hnsh)的三種形式5.3.1 5.3.1 無參函數(shù)(hnsh)(hnsh),例如main(),getchar()main(),getchar()等。 主函數(shù)(hnsh)(hnsh)與子函數(shù)(hnsh)(hnsh)之間不傳輸數(shù)據(jù)。例:輸出字符四方形 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *void print()void print()in
3、t i;int i; for(i=1;i5;i+) for(i=1;i5;i+) cout“ coutr; res(a, b, r); coutr=rsetw(10)a=asetw(10)b=bendl;第9頁/共47頁第九頁,共48頁。float res(float &a,float &b,float r)a=3.14159*r*r; b=2*3.14159*r; return 0; 例:編寫函數(shù)(過程、子程序)程序求n的階乘 f(n)求三個數(shù)的最大數(shù)(可以求多個(du )數(shù)的最大數(shù))求兩個正整數(shù)的最大公約數(shù)(可以求多個(du )數(shù)的最大公約數(shù)) f (m,n)求n+(n+1
4、)+(n+2)+(n+k)用子函數(shù)完成x2,x3,xn第10頁/共47頁第十頁,共48頁。5.5 C+5.5 C+庫函數(shù)庫函數(shù) 被直接調(diào)用的函數(shù)稱為庫被直接調(diào)用的函數(shù)稱為庫( (內(nèi)部內(nèi)部(nib)(nib)函數(shù)。函數(shù)。函數(shù)名函數(shù)名 函數(shù)原型函數(shù)原型 要用到的頭文件要用到的頭文件abs() int abs(int n) stdlib.habs() int abs(int n) stdlib.hfabs() double abs(double x) math.hfabs() double abs(double x) math.hcos() double cos(double x) math.hco
5、s() double cos(double x) math.hexp() double exp(double x) math.hexp() double exp(double x) math.hlog() double log(double x) math.hlog() double log(double x) math.hpow() double pow(double x, double y) math.hpow() double pow(double x, double y) math.hsqrt() double sqrt(double x) math.hsqrt() double sq
6、rt(double x) math.hsin() double sin(double x) math.hsin() double sin(double x) math.htan() double tan(double x) math.htan() double tan(double x) math.hkbhit() int kbhit() conio.hkbhit() int kbhit() conio.hexit() void exit(int n) stdlib.hexit() void exit(int n) stdlib.hrand() double rand(double x) st
7、dlib.hrand() double rand(double x) stdlib.h第11頁/共47頁第十一頁,共48頁。5.6 作用域和存儲類作用域和存儲類5.6.1 作用域作用域1. 塊作用域塊作用域 塊內(nèi)說明的變量只能在本塊有效塊內(nèi)說明的變量只能在本塊有效(yuxio)。2. 文件作用域文件作用域 文件作用域就是全局作用域。文件作用域就是全局作用域。第12頁/共47頁第十二頁,共48頁。例:讀程序,觀察全局變量和局部變量的關(guān)系#include int i; /全局變量,文件(wnjin)作用域void main() i=5; /文件(wnjin)作用域的i賦初值 /子塊1 int i;
8、 /局部變量,塊作用域 i=7; couti=iendl; /輸出7 couti=iendl;/輸出5 第13頁/共47頁第十三頁,共48頁。3. 函數(shù)原型作用域 函數(shù)的作用域只限定在函數(shù)原型的函數(shù)中。4. 函數(shù)作用域 在函數(shù)內(nèi)均有效, 不受塊作用域的限制, 只有標號(bioho)屬于函數(shù)作用域(在goto語句中使用)。5.6.2 存儲類 1. 局部變量及其概念形參是局部變量。在一個復(fù)合語句中定義的變量。在一個函數(shù)中定義的變量。第14頁/共47頁第十四頁,共48頁。2. 全局(外部)變量及其概念函數(shù)外部定義的變量。用extern 說明的變量。3. 動態(tài)(自動)變量程序運行期間,分配內(nèi)存單元,運
9、行結(jié)束,內(nèi)存單元就釋放(shfng)。形參、局部變量都是動態(tài)變量。動態(tài)變量用auto說明或省略。第15頁/共47頁第十五頁,共48頁。4. 靜態(tài)變量調(diào)用函數(shù)結(jié)束,變量值保留,下次調(diào)用值仍存在。靜態(tài)變量用static 說明。數(shù)組只有(zhyu)定義成靜態(tài)時,才能初始化。靜態(tài)變量自動賦0值。何時需要定義靜態(tài)數(shù)組:保留函數(shù)的變量值和數(shù)組初始化。第16頁/共47頁第十六頁,共48頁。例: 讀程序,理解靜態(tài)(jngti)變量#include #include void main() int count(int); do count(0); while(!kbhit(); cout”Function CO
10、UNT() have been called”count(1)”timesn” 第17頁/共47頁第十七頁,共48頁。int count(int i) static int c=0; if(i) return c; else return +c; return 0;說明:未從鍵盤上按下鍵時,反復(fù)(fnf)循環(huán)調(diào)函數(shù)count(), C一直自加,從鍵盤上一旦按下鍵時,結(jié)束循環(huán),輸出C值。第18頁/共47頁第十八頁,共48頁。5. 寄存器變量作用:存取速度快。特點:只允許使用三個寄存器變量,且必須(bx)是形參和局部變量才能使用。用法:用 register 說明。第19頁/共47頁第十九頁,共48
11、頁。5.7 5.7 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù) 大量、多次調(diào)用函數(shù),要占計算機很多時間大量、多次調(diào)用函數(shù),要占計算機很多時間(shjin)(shjin),為了用空間換時間,為了用空間換時間(shjin)(shjin),才用,才用內(nèi)聯(lián)函數(shù)。只要在定義函數(shù),或者對函數(shù)原型說內(nèi)聯(lián)函數(shù)。只要在定義函數(shù),或者對函數(shù)原型說明時,在行首加上明時,在行首加上inline inline 即可。即可。例:求圓面積例:求圓面積#include#includeinline double calArea(double radius) inline double calArea(double radius) return 3.14
12、 return 3.14* *radiusradius* *radius;radius;第20頁/共47頁第二十頁,共48頁。void main() double r=3.0; /r是圓的半徑(bnjng)double area;area=calArea(r); /調(diào)用內(nèi)聯(lián)函數(shù),編譯時此處被替換為calArea函數(shù)體語句coutareaendl;return 0; 第21頁/共47頁第二十一頁,共48頁。5.8 帶有缺省參數(shù)帶有缺省參數(shù)(cnsh)的函數(shù)的函數(shù) 函數(shù)說明時,先對形參初始化,調(diào)用函函數(shù)說明時,先對形參初始化,調(diào)用函數(shù)時,若給實參,就使用實參,否則使用說數(shù)時,若給實參,就使用實參,
13、否則使用說明時給出的初始值。明時給出的初始值。例:求四方體體積例:求四方體體積#include #include int get_volume(int length, int width = 2, int height = 3);第22頁/共47頁第二十二頁,共48頁。void main()int x = 10, y = 12, z = 15;cout Some box data is ;cout get_volume(x, y, z) endl;cout Some box data is ;cout get_volume(x, y) endl;cout Some box data is ;c
14、out get_volume(x) endl;第23頁/共47頁第二十三頁,共48頁。cout Some box data is ;cout get_volume(x, 7) endl;cout Some box data is ;cout get_volume(5, 5, 5) endl;return 0;int get_volume(int length, int width, int height) coutsetw(5)lengthsetw(5)widthsetw(5)height ;return (length * width * height); 第24頁/共47頁第二十四頁,共4
15、8頁。說明:默認參數(shù)的說明一定要放在函數(shù)使用之前。對形參的初始化可以是任意表達式。如部分形參初始化,必須自右向左。如果函數(shù)說明出現(xiàn)在不同(b tn)程序塊, 允許提供和使用不同(b tn)的默認值。第25頁/共47頁第二十五頁,共48頁。5.9 參數(shù)數(shù)目可變函數(shù)(hnsh) 根據(jù)需要,函數(shù)(hnsh)的參數(shù)可多可少,函數(shù)(hnsh)參數(shù)多少可變的函數(shù)(hnsh)稱參數(shù)數(shù)目可變函數(shù)(hnsh)。例:從n個數(shù)中找出最大數(shù)#include #include 第26頁/共47頁第二十六頁,共48頁。int main()int a,b,c,d,e;int max(int,int.); cinabcde;
16、 coutThe bigger between a and b is max(2,a,b)endl; coutThe bigger in the five number is max(5,a,b,c,d,e)endl;return 0;第27頁/共47頁第二十七頁,共48頁。int max(int num,int integer.) va_list ap; int m=integer; va_start(ap,integer); for(int i=1;im) m=t; coutiendl; va_end(ap); return m; 第28頁/共47頁第二十八頁,共48頁。說明:必須使用(s
17、hyng)頭文件stdarg.h。定義函數(shù)和函數(shù)原型的書寫要求。要用到三個專用函數(shù)和一個類型定義關(guān)鍵字: va_start, va_arg, va_end和va_list 。請將此題改為求實型數(shù)最大值。 5.10 函數(shù)重載(overload)一個函數(shù)可以當幾個函數(shù)使用(shyng)。根據(jù)形參的類型,調(diào)用不同的函數(shù)。函數(shù)定義不能少。第29頁/共47頁第二十九頁,共48頁。例: 用一個(y )函數(shù)add( ) 實現(xiàn)兩個整型數(shù)相加和兩個實型數(shù)相加#includevoid main(void) int m, n;double x, y;int add(int m, int n);double add(
18、double x, double y);coutmn;第30頁/共47頁第三十頁,共48頁。coutinteger “m+n=add(m,n)endl;coutxy;coutreal number x+y= add(x,y)endl;int add(int m, int n) return m+n; double add(double x, double y) return x+y; 第31頁/共47頁第三十一頁,共48頁。5.11 5.11 外部外部(wib)(wib)函數(shù)函數(shù)能被其他文件調(diào)用的函數(shù)稱為外部能被其他文件調(diào)用的函數(shù)稱為外部(wib)(wib)函數(shù)。函數(shù)。外部外部(wib)(wi
19、b)函數(shù)要用函數(shù)要用extern extern 說明。說明。5.12 5.12 函數(shù)遞歸函數(shù)遞歸函數(shù)遞歸的兩個基本條件函數(shù)遞歸的兩個基本條件1. 1. 邊界條件邊界條件2. 2. 遞歸表達式遞歸表達式3. 3. 函數(shù)自身調(diào)用自身函數(shù)自身調(diào)用自身第32頁/共47頁第三十二頁,共48頁。舉例(j l):計算 n! (c=f(n-1)*n)#include long fac(int n) long f;if (n=1) c=1;else c=fac(n-1)*n;return(f);第33頁/共47頁第三十三頁,共48頁。void main()long fac(int n);int n;long y
20、;coutn;y=fac(n);coutn!=yendl;第34頁/共47頁第三十四頁,共48頁。1. 計算 1+2+3+ +1002. 計算 0,1,1,2,3,5,8,. 第前20項(return (f(n-1)+f(n-2);)5.13 編譯予處理概念:在對程序編譯之前就進行替換處理,稱予處理(有三種: 嵌入指令(文件包含)、宏定義、和條件編譯)。用途:1. 有利于程序的移植與兼容.2. 增加程序的兼容性.3. 減少(jinsho)程序的運行時間4. 減少(jinsho)程序的長度第35頁/共47頁第三十五頁,共48頁。5.13.1 嵌入指令(zhlng)#include 方法:建立多個
21、*.cpp文件,按執(zhí)行順序放在#include 中。5.13.2 宏定義方法與用途1. 不帶參數(shù)的宏定義(用一個標識符代表一個字符串或一個常量,不做語法檢查。)#define PI 3.14159 (宏定義的標識符常使用大寫字母,以有別于變量)第36頁/共47頁第三十六頁,共48頁。#define N 100 (N可以(ky)用作數(shù)組的下標)#define R 3#define A PI*R*R#define C CONPUTER#define pr cin#define N “n” 例: prxN第37頁/共47頁第三十七頁,共48頁。2. 帶參數(shù)的宏定義(用一個標識符代表一個函數(shù),不做語法
22、檢查。)#define PI 3.14159#define circle (A,L,R) A=PI*R*R;L=2*PI*PI #define MAX(x,y) (x)(y) ? (x) ? (y)#define mul(x1,x2) x1*x2 / 注意(zh y)(x1)*(x2)例:定義一個求兩個數(shù)之積的宏名mul, 且求:2+3,6+2和3.1,3的積#define mul(x1,x2) x1*x2main() coutmul(2+3,6+2)mul(3.1, 2);第38頁/共47頁第三十八頁,共48頁。說明: 1. 根據(jù)計算的結(jié)果決定其類型。2. 實參是表達式時, 形參要用( )。
23、3. 一個#define 只能定義一個宏名。4. 帶參宏近似帶參函數(shù)的定義及用法。5. 帶參宏的宏中可以有進出兩種參數(shù)(cnsh)。6. 宏名可以作為定義數(shù)組時的下標(static int aN )7. 如果要修改宏名的內(nèi)容,只能用define。8. 可以使用#undef 解除宏定義。第39頁/共47頁第三十九頁,共48頁。例: 定義一個宏, 求x 的絕對值#define abs(x) (x0 ? x : -x) 使用(shyng)時: int a=-3; coutabs(a); 例: 定義一個宏, 判斷x 是否是偶數(shù)(偶數(shù)取 1)#define num(x) (x%2 ? 0 : 1)第40頁/共47頁第四十頁,共48頁。5.13.3 條件(tiojin)編譯指令格式
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路旁圓形沉井施工方案
- 蕪湖發(fā)電風機吊裝施工方案
- 金華js防水涂料施工方案
- 銅梁超市鋁單板施工方案
- 中山樂園泳池工程施工方案
- 寧波花園植物墻施工方案
- 煤礦采樣機訂制方案
- 2022-2027年中國生物制藥行業(yè)市場發(fā)展現(xiàn)狀及投資前景展望報告
- 太陽能發(fā)電系統(tǒng)設(shè)備項目可行性研究報告申請備案
- 電子行業(yè)深度研究報告
- 2024年公務(wù)員考試《公共基礎(chǔ)知識》全真模擬試題1000題及答案
- DB3301T 0382-2022 公共資源交易開評標數(shù)字見證服務(wù)規(guī)范
- 幼兒教育專業(yè)國家技能人才培養(yǎng)工學一體化課程設(shè)置方案
- 2025年會計從業(yè)資格考試電算化考試題庫及答案(共480題)
- 江蘇省無錫市2023-2024學年八年級上學期期末數(shù)學試題(原卷版)
- DL-T 5876-2024 水工瀝青混凝土應(yīng)用酸性骨料技術(shù)規(guī)范
- GB/T 44889-2024機關(guān)運行成本統(tǒng)計指南
- 2024年6月英語六級考試真題及答案(第2套)
- 職業(yè)院校技能大賽(高職組)市政管線(道)數(shù)字化施工賽項考試題庫(含答案)
- 危險化學品目錄(2024版)
- 華為經(jīng)營管理-華為的股權(quán)激勵(6版)
評論
0/150
提交評論