![C語言程序設(shè)計(jì) 課件 第6章-函數(shù)_第1頁](http://file4.renrendoc.com/view7/M02/03/1E/wKhkGWbgBQCAcPujAABgW22_8po833.jpg)
![C語言程序設(shè)計(jì) 課件 第6章-函數(shù)_第2頁](http://file4.renrendoc.com/view7/M02/03/1E/wKhkGWbgBQCAcPujAABgW22_8po8332.jpg)
![C語言程序設(shè)計(jì) 課件 第6章-函數(shù)_第3頁](http://file4.renrendoc.com/view7/M02/03/1E/wKhkGWbgBQCAcPujAABgW22_8po8333.jpg)
![C語言程序設(shè)計(jì) 課件 第6章-函數(shù)_第4頁](http://file4.renrendoc.com/view7/M02/03/1E/wKhkGWbgBQCAcPujAABgW22_8po8334.jpg)
![C語言程序設(shè)計(jì) 課件 第6章-函數(shù)_第5頁](http://file4.renrendoc.com/view7/M02/03/1E/wKhkGWbgBQCAcPujAABgW22_8po8335.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章函數(shù)理解函數(shù)的定義和聲明掌握函數(shù)的調(diào)用方法掌握遞歸函數(shù)的原理與應(yīng)用理解變量的作用域和生命周期掌握不同存儲(chǔ)類型的變量理解內(nèi)部函數(shù)和外部函數(shù)的概念及應(yīng)用本章目標(biāo)例子1:衛(wèi)星艙內(nèi)包裹重力問題6.1函數(shù)的定義、聲明與調(diào)用#include<stdio.h>#definePI3.1415926intmain(){doubledD1=7.874,dD2=8.96,dD3=4.54,dD4=7.44;intiR1=50,iR2=60,iR3=80,iR4=20;intiH1=100,iH2=200,iH3=800,iH4=500;doubledg1,dg2,dg3,dg4;doubledVolume;dVolume=PI*(iR1/1000.)*(iR1/1000.)*(iH1/1000.);dg1=dD1*1000.*dVolume;dVolume=PI*(iR2/1000.)*(iR2/1000.)*(iH2/1000.);dg2=dD2*1000.*dVolume;dVolume=PI*(iR3/1000.)*(iR3/1000.)*(iH3/1000.);dg3=dD3*1000.*dVolume;dVolume=PI*(iR4/1000.)*(iR4/1000.)*(iH4/1000.);dg4=dD4*1000.*dVolume;printf("dg1=%.3lfN\ndg2=%.3lfN\ndg3=%.3lfN\ndg4=%.3lfN\n", 9.8*dg1,9.8*dg2,9.8*dg3,9.8*dg4);return0;}函數(shù)定義格式:類型標(biāo)識(shí)符、函數(shù)名、形式參數(shù)、函數(shù)體。函數(shù)的調(diào)用規(guī)則:先定義后調(diào)用。
類型標(biāo)識(shí)符函數(shù)名([形式參數(shù)定義表列]){
聲明部分
語句部分 }6.1函數(shù)的定義、聲明與調(diào)用6.1.2函數(shù)的定義與調(diào)用函數(shù)體局部變量:只有在本函數(shù)內(nèi)才能引用這些變量,在該函數(shù)外是無法引用它們的,這樣的變量稱為局部變量。6.1函數(shù)的定義、聲明與調(diào)用6.1.3局部變量6.1.4函數(shù)返回值函數(shù)返回值:被調(diào)用函數(shù)執(zhí)行結(jié)束后能夠向主調(diào)函數(shù)返回一個(gè)確定的值,被稱為函數(shù)的返回值。過程:當(dāng)程序執(zhí)行到函數(shù)調(diào)用語句時(shí),會(huì)跳轉(zhuǎn)到函數(shù)定義的位置執(zhí)行相應(yīng)的代碼。在函數(shù)調(diào)用過程中,需要按照調(diào)用約定傳遞參數(shù),并保存返回地址。調(diào)用結(jié)束后,程序會(huì)返回到調(diào)用處繼續(xù)執(zhí)行。函數(shù)的調(diào)用規(guī)則:先定義后調(diào)用。
6.1函數(shù)的定義、聲明與調(diào)用6.1.5函數(shù)調(diào)用值傳遞:調(diào)用函數(shù)時(shí),將實(shí)參的值復(fù)制給形參,形參和實(shí)參在內(nèi)存中獨(dú)立。
優(yōu)點(diǎn):形參的修改不影響實(shí)參。
缺點(diǎn):對(duì)于大對(duì)象效率較低。地址傳遞:傳遞變量的地址,形參和實(shí)參指向相同的內(nèi)存空間,形參的修改會(huì)影響實(shí)參。優(yōu)點(diǎn):節(jié)省內(nèi)存,效率高。缺點(diǎn):需要注意防止修改不該修改的數(shù)據(jù)。6.1函數(shù)的定義、聲明與調(diào)用6.1.6函數(shù)參數(shù)的傳遞方式例子6-6:使用函數(shù)交換變量的值6.1函數(shù)的定義、聲明與調(diào)用#include<stdio.h>voidswap(doublea,doubleb){doublet;t=a;a=b;b=t;/*a、b值互換*/}intmain(){doubleg1=60.605,g2=198.617;printf("調(diào)用前\n");printf("g1=%.3f,g2=%.3f\n",g1,g2);swap(g1,g2);printf("調(diào)用后\n");printf("g1=%.3f,g2=%.3f\n",g1,g2);return0;}
例6?6實(shí)參和形參運(yùn)行中的內(nèi)存狀態(tài)60.605g1g2
ab
(a)開始調(diào)用時(shí)(b)子函數(shù)調(diào)用結(jié)束60.605198.617198.61760.605198.617198.61760.605
(b)被調(diào)用函數(shù)執(zhí)行完時(shí)
g1g2
ab
#include<stdio.h>#definePi3.1415926voidGravity(doubleDensity[],intRadius[],intHeight[],doubleg[],intn){inti;for(i=0;i<n;i++) g[i]=9.8*Density[i]*Pi*Radius[i]*Radius[i]*Height[i]/1e6;}voidGravityCentre(doubleDensity[],intRadius[],intHeight[],doubleg[],intx[],inty[],intn){inti;doubleSumX=0,SumY=0,SumG=0.;floatxc,yc;Gravity(Density,Radius,Height,g,4);for(i=0;i<n;i++){SumX+=x[i]*g[i];6.2衛(wèi)星艙系統(tǒng)重心在哪里?6.2.1程序解析SumY+=y[i]*g[i];SumG+=g[i]; }xc=SumX/SumG;yc=SumY/SumG;printf("xc=%.1fmmyc=%.1fmm\n",xc,yc);}intmain(){doubleD[]={7.874,8.96,4.54,7.44};intR[]={50,60,80,20};intH[]={100,200,800,500};doubleg[4];intx[]={-100,-150,50,105};inty[]={-100,75,50,-75};GravityCentre(D,R,H,g,x,y,4);printf("g1=%.3lfN\ng2=%.3lfN\ng3=%.3lfN\ng4=%.3lfN",g[0],g[1],g[2],g[3]);return0;}1.數(shù)組元素作函數(shù)參數(shù)#include<stdio.h>intJudge(intk){if(k%2)return1;/*奇數(shù)*/elsereturn0;/*偶數(shù)*/}intmain(){inta[7]={2,3,4,5,6,7,8},i;intSumOdd=0,SumEven=0;/*奇偶數(shù)求和變量*/for(i=0;i<7;i++)6.2衛(wèi)星艙系統(tǒng)重心在哪里?6.2.2數(shù)組作函數(shù)參數(shù)if(Judge(a[i]))/*數(shù)組a的元素做函數(shù)參數(shù)*/SumOdd+=a[i];elseSumEven+=a[i];printf("奇數(shù)和=%4d\n偶數(shù)和=%4d\n",SumOdd,SumEven);return0;}奇數(shù)和=15偶數(shù)和=202.數(shù)組名作函數(shù)參數(shù)#include<stdio.h>intmax(intb[][3]){intm,i,j;m=b[0][0];for(i=0;i<3;i++)for(j=0;j<3;j++)if(b[i][j]>m)m=b[i][j];returnm;}6.2衛(wèi)星艙系統(tǒng)重心在哪里?6.2.2數(shù)組作函數(shù)參數(shù)intmain(){inta[3][3]={-8,2,3,4,-5,13,6,7,10};printf("數(shù)組最大元素的值:%4d\n",max(a));return0;}數(shù)組最大元素的值:13實(shí)參和形參的傳遞方式數(shù)組元素:單向值傳遞。
數(shù)組名:地址傳遞。定義:將程序的控制權(quán)轉(zhuǎn)移到函數(shù)。目的:代碼復(fù)用,提高程序結(jié)構(gòu)的可讀性和維護(hù)性。6.2衛(wèi)星艙系統(tǒng)重心在哪里?6.2.3嵌套調(diào)用#include<stdio.h>intPowers(intm,intn){intj,p=1;for(j=1;j<=n;j++)p=p*m;return(p);}intSum(inta,intb){inti,s=0;
for(i=1;i<=b;i++)s=s+Powers(i,a);return(s);}intmain(){intsum,n=6,k=2;printf("sum:%d",Sum(k,n));return0;};
sum=:91#include<stdio.h>longfac(intn){longt=1;if(n==1||n==0)t=1;elset=n*fac(n-1);returnt;}intmain(){intn;intnc;printf("請(qǐng)輸入包裹的個(gè)數(shù)\n");6.3
衛(wèi)星艙內(nèi)包裹排列問題6.3.1程序解析scanf("%d",&n);nc=fac(n);printf("系統(tǒng)重心總數(shù)nc=%ld",nc);return0;}在上例中,fac(intn)函數(shù)內(nèi)部出現(xiàn)了調(diào)用fac(n-1),即函數(shù)自己調(diào)用自己的情況,這種調(diào)用稱為遞歸調(diào)用。6.3
衛(wèi)星艙內(nèi)包裹排列問題6.3.2階乘方法階乘的數(shù)學(xué)定義:n的階乘是所有小于等于n的正整數(shù)的乘積。符號(hào):n!公式:6.3
衛(wèi)星艙內(nèi)包裹排列問題6.3.3遞歸調(diào)用定義:在被調(diào)函數(shù)體中直接或間接調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。分類:直接遞歸調(diào)用:
間接遞歸調(diào)用:fac函數(shù)調(diào)用fac函數(shù)直接遞歸調(diào)用a函數(shù)調(diào)用b函數(shù)間接遞歸調(diào)用b函數(shù)調(diào)用a函數(shù)#include<stdio.h>intsum(intn){ints;if(n==1)s=1;elses=n+sum(n-1);returns;}6.3
衛(wèi)星艙內(nèi)包裹排列問題6.3.3遞歸調(diào)用intmain(){intn;printf("請(qǐng)輸入累加上限n\n");scanf("%d",&n);printf("sum=%d\n",sum(n));return0;}請(qǐng)輸入累加上限n100Sum=5050例6-13利用遞歸調(diào)用,計(jì)算sum=1+2+3+…+99+100。#include<stdio.h>#definePi3.1415926intn=4;doubleg[4];voidGravity(doubleDensity[],intRadius[],intHeight[]){inti;for(i=0;i<n;i++) g[i]=9.8*Density[i]*Pi*Radius[i]*Radius[i]*Height[i]/1e6;}voidGravityCentre(doubleDensity[],intRadius[],intHeight[],intx[],inty[]){inti;doubleSumX=0,SumY=0,SumG=0.;floatxc,yc;Gravity(Density,Radius,Height);for(i=0;i<n;i++){6.4函數(shù)數(shù)據(jù)共享問題6.4.1程序解析SumX+=x[i]*g[i];SumY+=y[i]*g[i];SumG+=g[i]; }xc=SumX/SumG;yc=SumY/SumG;printf("xc=%.1fmmyc=%.1fmm\n",xc,yc);}intmain(intargc,char**argv){doubleD[]={7.874,8.96,4.54,7.44};intR[]={50,60,80,20};intH[]={100,200,800,500};intx[]={-100,-150,50,105};inty[]={-100,75,50,-75};GravityCentre(D,R,H,x,y);printf("g1=%.3lfN\ng2=%.3lfN\ng3=%.3lfN\ng4=%.3lfN",g[0],g[1],g[2],g[3]);return0;}6.4函數(shù)數(shù)據(jù)共享問題6.4.2變量的作用域局部變量:
定義:在函數(shù)或代碼塊內(nèi)部定義的變量。
作用范圍:僅在定義它的函數(shù)或代碼塊內(nèi)部有效。
生命周期:從聲明開始到函數(shù)或代碼塊結(jié)束。全局變量:
定義:在所有函數(shù)外部定義的變量。
作用范圍:從定義開始到程序結(jié)束。
生命周期:從程序開始到程序結(jié)束。6.4函數(shù)數(shù)據(jù)共享問題6.4.3變量的存儲(chǔ)類型屬性:數(shù)據(jù)類型和存儲(chǔ)類型。存儲(chǔ)類型:決定變量在內(nèi)存中的存儲(chǔ)方式和生存期。分類:靜態(tài)存儲(chǔ)類型和動(dòng)態(tài)存儲(chǔ)類型。內(nèi)存分區(qū):程序區(qū):存放機(jī)器指令。
數(shù)據(jù)區(qū):①靜態(tài)存儲(chǔ)區(qū):存放全局變量、靜
態(tài)局部變量。
②動(dòng)態(tài)存儲(chǔ)區(qū):存放局部變量、形
參變量。6.4函數(shù)數(shù)據(jù)共享問題6.4.3變量的存儲(chǔ)類型局部變量的存儲(chǔ)類型自動(dòng)變量(auto)定義:用auto關(guān)鍵字聲明的局部變量。特點(diǎn):存放在動(dòng)態(tài)存儲(chǔ)區(qū)、生存期在函數(shù)調(diào)用期間、默認(rèn)初值不確定、auto關(guān)鍵字可以省略。靜態(tài)局部變量(static)定義:用static關(guān)鍵字聲明的局部變量。特點(diǎn):存放在靜態(tài)存儲(chǔ)區(qū)、生存期貫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙教版數(shù)學(xué)七年級(jí)下冊(cè)2.1《二元一次方程》(第2課時(shí))聽評(píng)課記錄
- 五年級(jí)分?jǐn)?shù)乘法口算練習(xí)
- 湘教版數(shù)學(xué)七年級(jí)下冊(cè)2.1.2《冪的乘方與積的乘方》聽評(píng)課記錄1
- 蘇教版小學(xué)四年級(jí)上冊(cè)數(shù)學(xué)口算題
- 人教版數(shù)學(xué)九年級(jí)下冊(cè)27.3《位似》聽評(píng)課記錄(一)
- 營業(yè)場(chǎng)所租賃合同范本
- 核心員工高層管理人員各崗位保密協(xié)議書范本
- 辦公樓加固改造工程施工合同范本
- 合作開店合同范本
- 三人合伙合作協(xié)議書范本
- 期末 (試題) -2024-2025學(xué)年教科版(廣州)英語四年級(jí)上冊(cè)
- 解讀國有企業(yè)管理人員處分條例課件
- 湖南省長沙市一中2024-2025學(xué)年高一生物上學(xué)期期末考試試題含解析
- 碳纖維增強(qiáng)復(fù)合材料在海洋工程中的應(yīng)用情況
- 小孩使用手機(jī)協(xié)議書范本
- 公司市場(chǎng)分析管理制度
- 焊接材料制造工-國家職業(yè)標(biāo)準(zhǔn)(2024版)
- 江西省2024年中考數(shù)學(xué)試卷(含答案)
- 榆神礦區(qū)郭家灘煤礦(700 萬噸-年)項(xiàng)目環(huán)評(píng)
- 2024年200MW-400MWh電化學(xué)儲(chǔ)能電站設(shè)計(jì)方案
- 余土外運(yùn)施工方案
評(píng)論
0/150
提交評(píng)論