版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四講第四講函數及變量的作用域函數及變量的作用域函數的定義和闡明函數的調用函數的參數內聯函數函數重載函數的嵌套調用和遞歸調用作用域C+的系統(tǒng)函數即函數前往值的類型。無前往值為void類型語句序列。描畫了實現功能的過程,并普通要最后執(zhí)行一條return語句??砂鄠€方式參數。定義了函數將從調用函數中接納多少個數據及其類型即一切參數的數據類型注注 意意#include void f1 ( ) ; /函數闡明函數闡明void f2 ( ) ;void main( ) f1( ); /函數調用函數調用 f2( ); void f1( ) /函數定義函數定義 cout Function f1.n;f2
2、( );void f2( ) cout Function f2 .n;main()f1()f2()實參的個數、類型及順序要與形參堅持一致方式參數實踐參數調用swap時,內存單元分配情況:353ababtemp 實參 形參3535實參形參35過程調用中35過程調用后temp=a; a=b; b=temp;調用swap時,內存單元分配情況:35353過程調用后 形參ababtemp 實參3510012021實參形參2021100120211001過程調用中35temp=*a; *a=*b; *b=temp;調用swap時,內存單元分配情況:35353過程調用后 形參ababtemp 實參35實參形
3、參20211001過程調用中35temp=a; a=b; b=temp;void main( )void main( ) int m=8; fun(a,m); int m=8; fun(a,m); couta7endl; couta7endl; #include void invert(char b,int n);void main() char s60; int n; couts; cout字符串原始順序:sendl; n=strlen(s); invert(s,n); cout字符串反轉后的順序:sendl;void invert(char b,int n) for(int i=0;in/
4、2;i+) char c=bi; bi=bn-1-i; bn-1-i=c; S0S1S2S3S4輸入一字符串個數,反序存放并輸出輸入一字符串個數,反序存放并輸出不能寫成invert(sn,n)有問題嗎?void main( )void main( ) int m=8; fun(a,m); int m=8; fun(a,m); couta7endl; couta7endl; #include void invert(char *b,int n);void main() char s60; int n;/char *p=s; couts; cout字符串原始順序:sendl; n=strlen(s
5、); invert(s,n);/ invert(p,n); cout字符串反轉后的順序:sendl;void invert(char *b,int n) for(int i=0;in/2;i+) char c=*(b+i); *(b+i)=*(b+n-1-i); *(b+n-1-i)=c; 輸入一字符串個數,反序存放并輸出輸入一字符串個數,反序存放并輸出 int m=8; fun(a,m); int m=8; fun(a,m); couta7endl; couta7endl; #include typedef char arr60; /先用類型定義一個char型的數組類型void invert
6、(arr &b,int n);void main() char s60; int n,*p=s; coutp; cout字符串原始順序:sendl; n=strlen(s); invert(s,n); cout字符串反轉后的順序:sendl;void invert(arr &b,int n) for(int i=0;iy) ? x: y); double max (double x , double y) return ( (xy) ?x: y); #include void main( ) coutmax(10,20)endl; coutmax(1.23,2.34)endl;
7、 靠將實參的個數及類型和所被調用的f()函數的形參的個數及類型一一比較來判別。作為重載函數至少在參數個數、參數類型上有所不同。假設僅在前往類型上不同,編譯器是無法區(qū)別的。如:void func(int); int func(int); /錯誤 int min(int ,int); int min(int,int,int); /正確 int add(int,int); double add(double,double);/正確typedef定義的類型只是給已有類型取另外一個名字,編譯器不能將其同原類型區(qū)分。如: typedef INT int; void func(int x) . void f
8、unc (INT x) 3重載函數普通應具有一樣的功能,否那么會破壞程序的可讀性。int sum(int k,int n)int sum(int k,int n)/ /* *計算計算1 1到到n n的的k k次方之累加和次方之累加和* */ / int s=0; int s=0; for(int i=1;i=n;i+) for(int i=1;i=n;i+) s+= power(i, k); / s+= power(i, k); /累加累加 return s; / return s; /調用調用f1f1函數函數 int power(int m,int n)int power(int m,int
9、 n)/ /* *計算計算mm的的n n次方次方* */ / int p=1, i; int p=1, i; for(i=1;in;i+) p for(i=1;i1時 ,n!= n * ( n-1 ) ! n ! = n=1n * ( n-1 ) ! n1三、調用函數本身,但參數值趨于終了條件一、有一個使遞歸終了的條件二、當條件成立時,不再調用本人,而有確定值s:=fac(3)主程序fac(3):=fac(2)*3n=3fac(2):=fac(1)*2n=2fac(1):=1n=1fac:=6fac:=2fac:=1在不同作用域中允許同名。在同一作用域中不允許同名。藍色為函數作用域綠色為塊作用
10、域不為x的緣由是部分優(yōu)先4 5 4 5 4 505#includeint i(5); /外部變量外部變量externstatic int j(6); /外部靜態(tài)變量外部靜態(tài)變量void min(int x,int y ) /形參形參 int i(3); /自動變量自動變量 auto register int j(2); /存放器變量存放器變量 static int k(1); /內部靜態(tài)變量內部靜態(tài)變量 void main( ) 部分變量全局變量藍色為文件作用域綠色為函數作用域留意:同名時是部分優(yōu)先分析程序結果分析程序結果int a(5),b(7),c(10); coutatbtcendl;
11、coutatbtcendl; int b(8);double c(8.8); coutatbtcendl; a=b; int c;c=b; coutatbtcendl; coutatbtcendl; coutatbtcendl;5 7 105 7 105 8 8.85 8 8.88 8 88 8 88 7 108 7 108 8 8.88 8 8.8輸入輸入15個數,用函數求和與平均值個數,用函數求和與平均值void main() double a15,s(0),ave(0); for(int i=0;i15;i+) cout輸入第(i+1)ai; for(i=0;i15;i+) s+=ai;
12、 ave=s/15; cout和:sendl; cout平均值:aveendl;sum(15)ave(15)double sum(int x);/函數聲明double ave(int x);/函數聲明double a15,s(0); /全局變量void main() for(int i=0;i15;i+) cout輸入第(i+1)ai; cout和:sum(15)endl; /函數調用 cout平均值:ave(15)endl;double sum(int x)/求和函數的定義 for(i=0;ix;i+) s+=ai; return s; double ave(int x) /求平均值函數的定
13、義 return s/x; 數組排序冒泡法數組排序冒泡法第一輪第一輪 B D C A E原數據原數據 B E D C A第三輪第三輪 B A C D E第二輪第二輪 B C A D E第四輪第四輪 A B C D E 4 3 2 1結論:輪數結論:輪數(外循環(huán)外循環(huán))為為:n-1,每輪次數每輪次數(內循環(huán)內循環(huán))為為:n-ivoid main() const int N=6;int bN=89,3,56,44,12,99;for(int i=1;iN;i+) /控制輪數 for(int j=0;jbj+1) /假設交換兩數 int t=bj; bj=bj+1; bj+1=t; /輸出排序后數組
14、 for(int k=0;kN;k+)coutbkt;int a10=8,5,7,8,3,5,6,1,9,1,n=10;for(i=0;i10;i+) for(j=i+1;jm; /輸入int sqrtm=sqrt(m);for (int I=2;I=sqrtm;I+) if (m%I=0)/假設能被某數整除 flag=0; /標志置0,并終止循環(huán) break; else /否那么標志置1, flag=1;if (flag) /假設全部比較后標志為1那么是素數coutm is prime.n;else coutm isnt prime.n; 判別一個數能否素數?判別一個數能否素數?int a10=8,5,7,8,3,5,6,1,9,1,b10,n=10;int i,j,flag,k=0;for(i=0;in;i+) flag=0;/用標志可簡化編程 for(j=i+1;jn;j+) if(ai=aj) /假設元素反復 flag=0;break; /置標志為0,并終止比較 elseflag=1; if(flag) /假設比較一輪無反復
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度科技創(chuàng)新創(chuàng)業(yè)項目合伙人股權分配及保密協(xié)議范本3篇
- 2024年特定區(qū)域獨家產品銷售代理協(xié)議版B版
- 分布式光伏發(fā)電項目發(fā)用電合同(三方)V1.0
- 2025年度智能穿戴設備銷售與服務合同范本3篇
- 中醫(yī)內科學筆記(實踐部分)
- 2025年度特色火鍋店股權收購與經營管理合同3篇
- 2024鐵路貨運貨物門到門配送服務合同范本3篇
- 2025年加油站便利店收銀系統(tǒng)升級裝修合同3篇
- 2025年度大型數據中心搭建及運營管理合同書3篇
- 2024金融交易平臺搭建與居間服務的合同
- 礦產資源綜合利用 6金屬礦產資源利用技術
- 生物制劑在風濕免疫科應用課件
- 招聘會突發(fā)事件應急預案(通用6篇)
- 小學生漢語拼音田字格練習紙藍打印版
- (最新)信息科技風險管理辦法
- 大學英語教師試講20分鐘范例
- 雨雪天氣安全教育PPT
- 圍手術期血糖管理專家共識
- 采購管理實務全套教學課件
- 魯教版高中地理必修一第一學期總復習課件(共141張PPT)
- 酒店項目投資分析報告可行性報告
評論
0/150
提交評論