版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、會計學(xué)1Cc模塊化與函數(shù)模塊化與函數(shù)2第1頁/共130頁3第2頁/共130頁4第3頁/共130頁5第4頁/共130頁6第5頁/共130頁7主模塊模塊1模塊2模塊3模塊4模塊6模塊7模塊5第6頁/共130頁第7頁/共130頁9第8頁/共130頁10第9頁/共130頁11第10頁/共130頁第11頁/共130頁第12頁/共130頁unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第13頁/共130頁15模塊接口模塊接口實現(xiàn)模塊功能數(shù)據(jù)傳遞第14頁/共130頁16unsigned
2、 long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第15頁/共130頁17第16頁/共130頁18unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;iy?x:y; z=xy?x:y; return(z); return(z); 例例 空函數(shù)空函數(shù) void dummy( void)void dummy( void) 函數(shù)體為空例例 無參函數(shù)無參函數(shù) void printstar(void)void printstar(
3、void) cout cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl; endl;void print_message(void)void print_message(void) cout Welcome to C+!endl; cout Welcome to C+!endl;第36頁/共130頁38說明:實參必須有確定的值形參必須指定類型形參與實參類型一致,個數(shù)相同若形參與實參類型不一致,自動按形參類型轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放第37頁/
4、共130頁39例例: : 計算計算x x的立方的立方注意內(nèi)存注意內(nèi)存#include using namespace std;float cube(float x) return(x*x*x);int main() float a, product; couta; product=cube(a); cout Cube of a is producty?x:y);第39頁/共130頁41例例: : 函數(shù)返回值類型轉(zhuǎn)換函數(shù)返回值類型轉(zhuǎn)換#include using namespace std;int max(float x, float y) float z; z=xy?x:y; return(z
5、);int main() float a,b; int c; cinab; c=max(a,b); coutMax is cendl; return 0;運行結(jié)果:運行結(jié)果:2.6 , 8.9 Max is 8第40頁/共130頁42可以被多次調(diào)用,相互調(diào)用例 int f1(int x);/函數(shù)原型 int f2(int x); int f3(int x); int main() int a; f1(a); f2(a); f3(a);int f1(int x) int b; return f2(b);int f2(int x) int c; return f3(c); int f3(int x
6、) 第41頁/共130頁43第42頁/共130頁44例例 函數(shù)說明舉例函數(shù)說明舉例#includeusing namespace std;int main() int a,b; int c; cinab; c=max(a,b); coutMax is “cy?x:y; return(z);int型函數(shù)可不作函數(shù)說明(Borland C+不行)#includeusing namespace std;float add(float x, float y) float z; z=x+y; return(z);int main() float a,b,c; cinab; c=add(a,b); cou
7、tsum is “cendl;return 0;被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)之前,不必函數(shù)說明第43頁/共130頁main( )調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b例如: 求三個數(shù)中最大數(shù)和最小數(shù)的差值第44頁/共130頁#include using namespace std; int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z);int main() int a,b,c,d; cinabc; d=dif(a,b,c); coutMax-Min“dy?x:y; return(rz?r:z
8、); int min(int x,int y,int z) int r; r=xy?x:y; return(r1)第47頁/共130頁第48頁/共130頁#include using namespace std;int age(int n) int c; if(n= =1) c=10; else c=age(n-1)+2; return(c); int main( )coutage(5)1)第49頁/共130頁條件,一個可以得到解的基本情況。第50頁/共130頁52第51頁/共130頁53第52頁/共130頁54第53頁/共130頁55基本情形基本情形更簡單的原始問題更簡單的原始問題第54頁/
9、共130頁565!5*4!4*3!3*2!2*1!1返回5*24=120返回4*6=24返回3*2=6返回2*1=2返回1第55頁/共130頁57第56頁/共130頁例例 有以下程序有以下程序#include using namespace std; int f(int n) if (n=1)return 1; else return f(n-1)+1; int main() int i,j=0; for(i=1;i3;i+) j+=f(i); coutjendl; return 0;程序運行后的輸出結(jié)果是:程序運行后的輸出結(jié)果是:a)4 b)3 c)2 d)1 i f(i) j 1 1 1
10、2 f(2-1)+1 1+2 第57頁/共130頁例:#include using namespace std;long fun(int n) long s; if( n=1| n=2 ) s=2; else s=n-fun(n-1); return s;int main() coutfun(3)i) i=j;if(ki) i=k;m=i;第61頁/共130頁第62頁/共130頁int max1(int ,int,int)long max2(long, long, long)double max3(double , double , double )第63頁/共130頁例:void print
11、(double);void print(int);void func() print(1); / void print(int); print(1.0); / void print(double); print(a); / void print(int); print(3.1415f); / void pirnt(double); 第64頁/共130頁66第65頁/共130頁double d1,d2,d3,d; cind1d2d3; d=max(d1,d2,d3); coutd_max=dg1g2g3; g=max(g1,g2,g3); coutg_max=ga) a=b; if(ca) a=
12、c; return a;第66頁/共130頁運行情況如下:185 -76 567 i_max=567 56.87 90.23 -3214.78d_max=90.2367854 -912456 673456 g_max=673456 特點:參數(shù)類型不同,函數(shù)體一樣特點:參數(shù)類型不同,函數(shù)體一樣第67頁/共130頁第68頁/共130頁第69頁/共130頁第70頁/共130頁72第71頁/共130頁第72頁/共130頁int main( )int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,
13、g2=-912456,g3=673456,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); couti_max=iendl; coutf_max=fendl; coutg_max=ga) a=b; if(ca) a=c; return a;第73頁/共130頁int add(int x=5,int y=6) return x+y;void main() add(10,20); /10+20 add(10); /10+6 add(); /5+6第74頁/共130頁u默認(rèn)形參值必須從右向左順序聲明,并且在默認(rèn)形參值的右面不能有非默認(rèn)形參值的
14、參數(shù)。因為調(diào)用時實參取代形參是從左向右的順序。u例:int add(int x,int y=5,int z=6); /正確int add(int x=1,int y=5,int z); /錯誤int add(int x=1,int y,int z=6); /錯誤第75頁/共130頁int max(int a,int b,int c) if(ba) a=b; if(ca) a=c; return a;運行情況如下:14 -56 135max(a,b,c)=135max(a,b)=14第76頁/共130頁局部變量第77頁/共130頁float f1(int a) /函數(shù)f1int b,c; b、c
15、有效 a有效char f2(int x, int y) /函數(shù)f2 int i,j; i、j有效x、y有效int main( ) /主函數(shù)int m,n;int p,q; p、q在復(fù)合語句中有效 m、n有效第78頁/共130頁例如int max(int a,int b); /函數(shù)聲明中出現(xiàn)a、b int max(int x,int y) /函數(shù)定義,形參是x、y coutxyendl; /合法,x、y在函數(shù)體中有效coutabendl; /非法,a、b在函數(shù)體中無效編譯時認(rèn)為max函數(shù)體中的a和b未經(jīng)定義。第79頁/共130頁int p=1,q=5;/全局變量全局變量p、q的作用范圍 floa
16、t f1(int a)/定義函數(shù)f1 int b,c;char c1,c2; /全局變量 全局變量c1、c2 的作用范圍char f2 (int x, int y) /定義函數(shù)f2int i,j;main ( )/主函數(shù)int m,n;第80頁/共130頁內(nèi)存.int main() int a; a=10; coutaendl;return 0;編譯或函數(shù)調(diào)用時為其分配內(nèi)存單元1020002003程序中使用變量名對內(nèi)存操作第81頁/共130頁變量的屬性數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性)存儲屬性生存期:變量在內(nèi)存中的存在期間。變量在某一時刻存在-靜態(tài)變量與動態(tài)變量(時間角度)作用域:變
17、量在某區(qū)域內(nèi)有效-局部變量與全局變量(空間角度)變量的存儲類型auto -自動型register-寄存器型static -靜態(tài)型extern -外部型變量定義格式: 存儲類型 數(shù)據(jù)類型 變量表;4.12 變量的存儲類別u概述變量是對程序中數(shù)據(jù)的存儲空間的抽象如: int sum; auto int a,b,c; register int i; static float x,y;第82頁/共130頁程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)全局變量、局部靜態(tài)變量形參變量局部動態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場保護和返回地址等生存期靜態(tài)變量:從程序開始執(zhí)行到程序結(jié)束動態(tài)變量:從包含該變量定義的函數(shù)開
18、始執(zhí)行至函數(shù)執(zhí)行結(jié)束第83頁/共130頁float f1(int a) int b,c; .char f2(int x,int y) int i,j; main() int m,n; .a,b,c有效x,y,i,j有效m,n有效例 不同函數(shù)中同名變量#include using namespace std;int main() int a,b; int sub( ); a=3; b=4; coutmain: a“,”bendl; sub( ); coutmain: a“,”bendl;return 0; int sub( ) int a,b; a=6; b=7; cout sub: a“,”b
19、外部變量說明: extern 數(shù)據(jù)類型 變量表;外部變量定義與外部變量說明不同若全局變量與局部變量同名,則全局變量被屏蔽外部變量可用存儲類型:缺省 或 static第85頁/共130頁float max,min;float average(float array, int n) int i; float sum=array0; max=min=array0; for(i=1;imax) max=arrayi; else if(arrayimin) min=arrayi; sum+=arrayi; return(sum/n);main() int i; float ave,score10; /*
20、Input */ ave=average(score,10); coutmax= maxmin=“ minaverage=“aveendl;作用域maxmin第86頁/共130頁int p=1,q=5;float f1(int a) int b,c; .int f3().char c1,c2;char f2(int x,int y) int i,j; main() int m,n; .c1,c2的作用范圍p,q的作用范圍extern char c1,c2;extern char c1,c2;c1,c2的作用范圍擴展后c1,c2的作用范圍擴展后第87頁/共130頁例 外部變量定義與說明#incl
21、udeusing namespace std;int max(int x, int y) int z; z=xy?x:y; return(z);main() extern int a,b; coutmax=“max(a,b)endl;int a=13,b=-8;運行結(jié)果:max=13#includeusing namespace std;extern int a,b;int max() int z; z=ab?a:b; return(z);int main() coutmax=“max()endl;return 0;int a=13,b=-8;第88頁/共130頁#includeusing n
22、amespace std;int a=3,b=5;max(int a, int b) int c; c=ab?a:b; return(c);int main() int a=8; coutmax=“max(a,b)endl;return 0;例 全局變量與局部變量運行結(jié)果:max=8第89頁/共130頁int i;#includeusing namespace std;int main() void prt(); for(i=0;i5;i+) prt( );void prt( ) for(i=0;i5;i+) cout“*”; coutendl;例 外部變量副作用運行結(jié)果:*第90頁/共130
23、頁第91頁/共130頁程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)全局變量、局部靜態(tài)變量形參變量局部動態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場保護和返回地址等如: int sum; auto int a,b,c; register int i; static float x,y;第92頁/共130頁u局部變量默認(rèn)為auto型,如int a=3;u局部static變量具有全局壽命和局部可見性u局部static變量具有可繼承性即占有的存儲單元不釋放,在下一次調(diào)用函數(shù)時,該變量保留上一次函數(shù)調(diào)用結(jié)束時的值。uextern不是變量定義,可擴展外部變量作用域第93頁/共130頁例 auto 變量的作用域同名局部變
24、量#includeusing namespace std;int main() int x=1; void prt(void); int x=3; prt( ); cout“2nd x=”xendl; cout“1st x=”xendl;return 0;void prt( ) int x=5; cout“3th x=”xendl;運行結(jié)果:3th x=52nd x=31st x=1x=1作用域x=1作用域x=3作用域x=5作用域第94頁/共130頁#includeusing namespace std;int main() void increment(void); increment();
25、 increment(); increment();return 0;void increment(void) int x=0; x+; coutxendl;例 局部靜態(tài)變量值具有可繼承性運行結(jié)果:1 1 1#includeusing namespace std;int main() void increment(void); increment(); increment(); increment();return 0; void increment(void) static int x=0; x+; coutxendl;運行結(jié)果:1 2 3第95頁/共130頁例 變量的壽命與可見性#incl
26、ude int i=1;main() static int a; register int b=-10; int c=0; cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; c=c+8; other(); cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; i=i+10; other();other() static int a=2; static int b; int c=10; a=a+2; i=i+32; c=c+5; cout-OTHER-“endl; couti: i a: a “b:” b“ c:
27、” c; b=a; -Main-i:1 a:0 b:-10 c:0 -Other-i:33 a:4 b:0 c:15 -Main-i:33 a:0 b:-10 c:8-Other-i:75 a:6 b:4 c:15全局i1main: a0b:-10registermain:c0靜態(tài)存儲區(qū)動態(tài)存儲區(qū)other: a2other: b0other: c10843315443other: c10675156第96頁/共130頁#includeusing namespace std;int main() void gx(),gy(); extern int x,y; cout“1: x=”x“ty=“
28、yendl; y=246; gx(); gy();void gx() extern int x,y; x=135; cout“2: x=”x“ty=“yendl;int x,y;void gy()cout“3: x=”x“ty=“yendl;例 用extern擴展外部變量作用域運行結(jié)果:1: x=0 y=02: x=135 y=2463: x=135 y=246第97頁/共130頁例 引用其它文件中的外部變量int global;extern float x;main() int local;.extern int global;static int number;func2().float x;static int number;func3() extern int global;.file1.cppfile2.cppfile3.cpp第98頁/共130頁例 引用其它文件中的變量,輸出ab和a的m次方int a;void main() int power(int n); int b=3,c,d,m; coutam; c=a*b; cout a * b=cendl; d=power(m); couta* m = dendl;extern int a;int power(int n) int
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語語音室建設(shè)方案(參考模板)
- 培訓(xùn)咨詢成果保護合同
- 股東之間的股權(quán)轉(zhuǎn)讓協(xié)議
- 自營采購合同的格式要求
- 離婚協(xié)議書怎么擬寫
- 廣告公司購銷合作協(xié)議范本
- 代理記賬合同
- 招標(biāo)文件方案技巧
- 小區(qū)物業(yè)服務(wù)競標(biāo)方案
- 專業(yè)解讀實操經(jīng)驗
- 2024年01月11032成本管理期末試題答案
- 年高考新課標(biāo)I卷語文試題講評課件
- 2024年高中班主任德育工作計劃(5篇)
- 浙江省嘉興市2023-2024學(xué)年高二上學(xué)期1月期末檢測數(shù)學(xué)試題
- 2024-2025學(xué)年語文二年級上冊 部編版期末測試卷 (含答案)
- 廢棄油管道注漿施工方案
- 2021-2022學(xué)年廣東省深圳市龍崗區(qū)六年級上學(xué)期期末英語試卷
- 資金托盤業(yè)務(wù)協(xié)議
- 江蘇省蘇州昆山市2023-2024學(xué)年七年級上學(xué)期期末語文試題及答案
- 消防水帶使用培訓(xùn)
- 電力設(shè)備維護保養(yǎng)計劃手冊
評論
0/150
提交評論