![c語(yǔ)言課件第8章函數(shù)_第1頁(yè)](http://file4.renrendoc.com/view10/M01/22/1D/wKhkGWVywkyASTErAAExMS0gT6k897.jpg)
![c語(yǔ)言課件第8章函數(shù)_第2頁(yè)](http://file4.renrendoc.com/view10/M01/22/1D/wKhkGWVywkyASTErAAExMS0gT6k8972.jpg)
![c語(yǔ)言課件第8章函數(shù)_第3頁(yè)](http://file4.renrendoc.com/view10/M01/22/1D/wKhkGWVywkyASTErAAExMS0gT6k8973.jpg)
![c語(yǔ)言課件第8章函數(shù)_第4頁(yè)](http://file4.renrendoc.com/view10/M01/22/1D/wKhkGWVywkyASTErAAExMS0gT6k8974.jpg)
![c語(yǔ)言課件第8章函數(shù)_第5頁(yè)](http://file4.renrendoc.com/view10/M01/22/1D/wKhkGWVywkyASTErAAExMS0gT6k8975.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章函數(shù)概述函數(shù)的定義函數(shù)的返回值函數(shù)的調(diào)用函數(shù)參數(shù)及其傳遞方式函數(shù)的嵌套與遞歸調(diào)用數(shù)組作為函數(shù)參數(shù)變量的存儲(chǔ)屬性內(nèi)部函數(shù)和外部函數(shù)8.1
概述一、模塊化程序設(shè)計(jì)和函數(shù)
1、模塊化程序設(shè)計(jì)基本思想:將一個(gè)大的程序按功能分割成一些小模塊。特點(diǎn):各模塊相對(duì)獨(dú)立、功能單一、結(jié)構(gòu)清晰、接口簡(jiǎn)單控制了程序設(shè)計(jì)的復(fù)雜性縮短開發(fā)周期避免程序開發(fā)的重復(fù)勞動(dòng)易于維護(hù)和功能擴(kuò)充開發(fā)方法:自上向下,逐步分解,分而治之2、C是模塊化程序設(shè)計(jì)語(yǔ)言
一個(gè)較大的程序一般由幾個(gè)程序模塊組成,每個(gè)程序模塊完成一定的功能。在C語(yǔ)言中,這種功能模塊就是由函數(shù)來實(shí)現(xiàn)的。2、C是模塊化程序設(shè)計(jì)語(yǔ)言
C是函數(shù)式語(yǔ)言,一個(gè)源程序文件是1個(gè)編譯單位,
必須有且只能有一個(gè)名為main的主函數(shù)
C程序的執(zhí)行總是從main函數(shù)開始,在main中結(jié)束,不管其位置所有的函數(shù)獨(dú)立定義,互相調(diào)用。main()函數(shù)可以調(diào)用任意其它函數(shù),其它函數(shù)之間可以相互調(diào)用,但任何函數(shù)都不能調(diào)用
main()函數(shù)。源程序文件1預(yù)編譯命令說明部分執(zhí)行部分函數(shù)1函數(shù)n源程序文件i源程序文件nC程序二、數(shù)學(xué)函數(shù)和C函數(shù)如數(shù)學(xué)中有:f(x)=f(0)=f(1)=f(2)=定義函數(shù)調(diào)用函數(shù)形式參數(shù)實(shí)際參數(shù)函數(shù)值=0=2.23607=4二、數(shù)學(xué)函數(shù)和C函數(shù)再如:g(x,y)=g(3,4)==5定義函數(shù)調(diào)用函數(shù)兩個(gè)形式參數(shù)兩個(gè)實(shí)際參數(shù)函數(shù)值三、函數(shù)分類1、按照使用特點(diǎn)標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù)):由系統(tǒng)提供,解決公共問題,使用時(shí)要包含相應(yīng)的庫(kù)文件。自定義函數(shù):由用戶自己定義,解決特定的問題有參函數(shù):主調(diào)函數(shù)與被調(diào)函數(shù)之間有參數(shù)傳遞無參函數(shù):主調(diào)函數(shù)與被調(diào)函數(shù)之間無參數(shù)傳遞 通常來執(zhí)行一組操作2、按照函數(shù)形式使用庫(kù)函數(shù)應(yīng)注意:1、函數(shù)功能2、函數(shù)參數(shù)的數(shù)目和順序,及各參數(shù)意義和類型3、函數(shù)返回值意義和類型4、需要使用的包含文件
函數(shù)必須定義才能夠調(diào)用,在函數(shù)定義時(shí),要對(duì)函數(shù)的類型、形參及其類型、函數(shù)中所要完成的操作、返回的函數(shù)值進(jìn)行一系列的規(guī)定,根據(jù)這些規(guī)定才能夠正確的對(duì)函數(shù)進(jìn)行調(diào)用。其中:函數(shù)中所完成的操作是函數(shù)的核心部分,是由程序語(yǔ)句實(shí)現(xiàn)的;函數(shù)及形參的類型是正確使用函數(shù)的依據(jù);函數(shù)返回的值是調(diào)用函數(shù)后所得到的結(jié)果。8.2
函數(shù)的定義8.2
函數(shù)的定義一般定義格式合法標(biāo)識(shí)符函數(shù)體函數(shù)類型函數(shù)名(形參類型說明表){
說明部分 語(yǔ)句部分}例空函數(shù)
dummy(){}函數(shù)體為空函數(shù)返回值類型缺省int型無返回值void例:有參函數(shù)
intmax(intx,inty){intz;z=x>y?x:y;return(z);}例:無參函數(shù)
voidprintstar(){printf(“**********\n”);}或
voidprintstar(void){printf(“**********\n”);}8.3
函數(shù)的參數(shù)和函數(shù)的值(返回值)一、函數(shù)的參數(shù)包括形參和實(shí)參,要正確進(jìn)行函數(shù)的調(diào)用,必須確定參數(shù)的數(shù)量和類型。函數(shù)定義時(shí)函數(shù)名后的括號(hào)中的變量叫形式參數(shù)。
形式參數(shù)只能是變量和數(shù)組名函數(shù)調(diào)用時(shí)函數(shù)名后的括號(hào)中的參數(shù)叫實(shí)際參數(shù)。
實(shí)際參數(shù)可以是常量、變量、數(shù)組名、表達(dá)式和函數(shù)值。8.3函數(shù)的參數(shù)和函數(shù)的值(返回值)二、返回語(yǔ)句形式:return(表達(dá)式);
或
return表達(dá)式;
或
return;功能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時(shí)把返值帶給調(diào)用函數(shù)說明:函數(shù)返回值的類型:所返回函數(shù)值的類型取決于函數(shù)的類型。若函數(shù)類型與return語(yǔ)句中表達(dá)式值的類型不一致,按前者為準(zhǔn),自動(dòng)轉(zhuǎn)換------函數(shù)調(diào)用轉(zhuǎn)換void型函數(shù):函數(shù)無返回值,可以不要return語(yǔ)句c=max(a,b);(main函數(shù))(max函數(shù))intmax(intx,inty){intz;z=x>y?x:y;return(z);}例:比較兩個(gè)數(shù)并輸出大者voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}intmax(intx,inty){intz;z=x>y?x:y;return(z);}形參實(shí)參例:函數(shù)返回值類型轉(zhuǎn)換voidmain(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}intmax(floatx,floaty){floatz;z=x>y?x:y;
return(z);}3.1,5.2↙Maxis58.4
函數(shù)的調(diào)用
函數(shù)定義后,并不被執(zhí)行,形參和函數(shù)中的其它變量并不分配存儲(chǔ)單元。只有當(dāng)調(diào)用函數(shù)時(shí),程序才轉(zhuǎn)到函數(shù)去執(zhí)行。這時(shí),為形參及函數(shù)中的其它變量分配臨時(shí)存儲(chǔ)單元,并將實(shí)參的值按順序傳遞給形參。一、調(diào)用形式
函數(shù)名(實(shí)參表);
說明: 1、實(shí)參與形參個(gè)數(shù)相等,類型一致,按順序一一對(duì)應(yīng)
2、實(shí)參表求值順序,因系統(tǒng)而定(大多數(shù)C版本
自右向左)main(){inti=2,p;p=f(i,++i);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}例:參數(shù)求值順序(turboc自右向左)main(){inti=2,p;p=f(i,i++);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}運(yùn)行結(jié)果:0運(yùn)行結(jié)果:1二、調(diào)用方式:按照函數(shù)在程序中出現(xiàn)的位置來分函數(shù)語(yǔ)句:例:printstar();printf(“Hello,World!\n”);函數(shù)表達(dá)式:例:m=max(a,b)*2;函數(shù)參數(shù):例:printf(“%d”,max(a,b));m=max(a,max(b,c));一般形式:函數(shù)類型函數(shù)名(形參類型形參名1,…..);
或函數(shù)類型函數(shù)名(形參類型,…..);作用:告訴編譯器函數(shù)類型、參數(shù)個(gè)數(shù)及類型,以便檢驗(yàn)。函數(shù)定義與函數(shù)聲明不同函數(shù)聲明位置:函數(shù)內(nèi)或外下列情況下,可不作函數(shù)說明若函數(shù)返值是int型,C語(yǔ)言允許,但不提倡。被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前。三、函數(shù)聲明的概念函數(shù)應(yīng)當(dāng)先定義后調(diào)用。當(dāng)函數(shù)的定義出現(xiàn)在調(diào)用之后,應(yīng)當(dāng)在調(diào)用之前進(jìn)行聲明。函數(shù)聲明例:函數(shù)聲明舉例main(){inta,b;floatz;
scanf("%d%d",&a,&b);z=average(a,b);printf("a=%d,b=%d,c=%.2f\n",a,b,z);}floataverage(inta,intb){floatc;c=(a+b)/2.0;return(c);}floataverage(inta,intb);函數(shù)的調(diào)用和聲明的格式有什么區(qū)別?定義在后的非整型函數(shù)調(diào)用在前在執(zhí)行語(yǔ)句之前對(duì)函數(shù)聲明floataverage(int,int);例:函數(shù)聲明舉例main(){inta,b;floatz;
scanf("%d%d",&a,&b);z=average(a,b);printf("a=%d,b=%d,c=%.2f\n",a,b,z);}floataverage(inta,intb){floatc;c=(a+b)/2.0;return(c);}定義在前的非整型函數(shù)調(diào)用在后在執(zhí)行語(yǔ)句之前可以不用對(duì)函數(shù)聲明8.5
函數(shù)參數(shù)及其傳遞方式形參與實(shí)參形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式c=max(a,b);(main函數(shù))(max函數(shù))max(intx,inty){intz;z=x>y?x:y;return(z);}例:比較兩個(gè)數(shù)并輸出大者main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(intx,inty){intz;z=x>y?x:y;return(z);}形參實(shí)參說明:實(shí)參必須有確定的值形參必須指定類型形參與實(shí)參類型一致,個(gè)數(shù)相同若形參與實(shí)參類型不一致,自動(dòng)按形參類型轉(zhuǎn)換形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時(shí)為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放實(shí)參對(duì)形參參數(shù)傳遞只與位置有關(guān),與參數(shù)名字無關(guān)。單向傳遞8.5
函數(shù)參數(shù)及其傳遞方式形參與實(shí)參形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式例:計(jì)算x的立方#include<stdio.h>floatcube(floatx){return(x*x*x);}main(){floata,product;printf("Pleaseinputvalueofa:");scanf("%f",&a);product=cube(a);printf(”Cubeof%.4fis%.4f\n",a,product);}xaproduct××××1.21.21.728參數(shù)傳遞方式值傳遞方式方式:函數(shù)調(diào)用時(shí),為形參分配單元并將實(shí)參的值復(fù)制到形參中;調(diào)用結(jié)束時(shí),形參單元被釋放,實(shí)參單元仍保留并維持原值特點(diǎn):形參與實(shí)參占用不同的內(nèi)存單元實(shí)參到形參是單向傳遞,形參不能傳給實(shí)參。711x:y:調(diào)用前:調(diào)用結(jié)束:711x:y:例:交換兩個(gè)數(shù)#include<stdio.h>main(){intx=7,y=11;printf("x=%d,\ty=%d\n",x,y);printf("swapped:\n");
swap(x,y);printf("x=%d,\ty=%d\n",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;}調(diào)用:711a:b:711x:y:swap:711x:y:117a:b:temp例:求兩個(gè)數(shù)中的最大數(shù)intmax(inta,intb){intc;if(a>b)c=a;elsec=b;return(c);}main(){intx,y,z;scanf("%d%d",&x,&y);z=max(x,y);printf("x=%d,y=%d,max=%d\n",x,y,z);}調(diào)用函數(shù)時(shí)才為形參分配存儲(chǔ)單元,同時(shí)將實(shí)參的值傳遞給形參從鍵盤上輸入35,則程序的運(yùn)行過程如下:a:b:c:未定義未定義未定義x:y:z:???35?5x=3,y=5,max=5函數(shù)表達(dá)式,函數(shù)中需要return語(yǔ)句35未定義未定義未定義未定義未定義未定義355例:寫一個(gè)求圓面積的函數(shù),并在主函數(shù)中調(diào)用它floatarea(intr)return(3.1415926*r*r);floats;s=3.1415926*r*r;returns;main()floatr,s;scanf("%f",&r);s=area(r);printf("r=%fs=%f\n",r,s);intr;floats;scanf("%d",&r);在不同的函數(shù)中可以使用同名變量,但它們并不代表同一對(duì)象例:寫一個(gè)函數(shù),判斷任一整數(shù)m是否為素?cái)?shù),程序1:prime(intm){intj;for(j=2;j<=m-1;j++)if(m%j==0)break;if(j>=m)else}main(){intn;scanf("%d",&n);
}printf("%disaprimenumber\n",);printf("%disnotaprimenumber\n",);prime();mmn例:寫一個(gè)函數(shù),判斷任一整數(shù)m是否為素?cái)?shù)?程序2prime(intm){intj,flag;for(j=2;j<=m-1;j++)if(m%j==0)break;if(j>=m)else}main(){intn;scanf("%d",&n);
}flag=1;flag=0;return();if(flag==1)printf("%disaprimenumber\n",);elseprintf("%disnotaprimenumber\n",);nnflagprime(n)prime(n)!=0prime(n)地址傳遞方式方式:函數(shù)調(diào)用時(shí),將數(shù)據(jù)的存儲(chǔ)地址作為參數(shù)傳遞給形參特點(diǎn):實(shí)參和地址常量或變量、形參必須是地址變量形參與實(shí)參仍占用不同的單元,但存儲(chǔ)內(nèi)容一樣,都是同一地址。
盡管實(shí)參到形參間仍然是“單向傳遞”,但若在函數(shù)中改變形參存儲(chǔ)的地址所指向的內(nèi)容,和在主程序中的效果是一樣的,因?yàn)槭峭粋€(gè)地址上的內(nèi)容發(fā)生變化。
swap(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}main(){inta,b;scanf("%d,%d",&a,&b);printf(“a=%d,b=%d\n”,a,b);printf(“swapped:\n”);swap(&a,&b);printf(”a=%d,b=%d\n",a,b);}例:交換兩個(gè)數(shù)(函數(shù)參數(shù)為地址,指針部分講)a59b調(diào)用前:a59b調(diào)swap:p1&a&bp2a95b交換:p1&a&bp2a95b返回:#include<stdio.h>
longsum(inta,intb);longfactorial(intn);main(){intn1,n2;longa;scanf("%d,%d",&n1,&n2);a=sum(n1,n2);printf("a=%1d",a);}longsum(inta,intb){longc1,c2;c1=factorial(a);c2=factorial(b);
return(c1+c2);}
longfactorial(intn){longrtn=1;inti;for(i=1;i<=n;i++)rtn*=i;
return(rtn);}longsum(inta,intb);longfactorial(intn);文件包含編譯預(yù)處理命令函數(shù)類型說明函數(shù)定義函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)返回值形參實(shí)參8.6
函數(shù)的嵌套與遞歸調(diào)用嵌套調(diào)用:在調(diào)用一個(gè)函數(shù)的過程中又調(diào)用了另外一個(gè)函數(shù),叫作函數(shù)的嵌套調(diào)用。嵌套調(diào)用的執(zhí)行過程:從什么地方調(diào)用函數(shù),就返回到什么地方。main()調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b
C規(guī)定:函數(shù)定義不可嵌套,但可以嵌套調(diào)用函數(shù)遞歸調(diào)用定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用遞歸調(diào)用應(yīng)注意的問題:要防止無限次的遞歸調(diào)用。盡管C編譯系統(tǒng)對(duì)遞歸函數(shù)的自調(diào)用次數(shù)沒有限制,但每調(diào)用函數(shù)一次,在內(nèi)存堆棧區(qū)分配空間,用于存放函數(shù)變量、返回值等信息。若遞歸次數(shù)過多,可能引起堆棧溢出。防止無限遞歸調(diào)用的方法:使用if語(yǔ)句設(shè)置一個(gè)遞歸過程結(jié)束的條件,且在遞歸過程中使該條件逐步趨于成立例:有5個(gè)人坐在一起,問第5個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第3個(gè)人,又說比第2個(gè)人大2歲。問第2個(gè)人,說比第1個(gè)人大2歲。最后問第1個(gè)人,他說是10歲。請(qǐng)問第5個(gè)人多大。
age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10用數(shù)學(xué)公式表述如下:age(n)=
age(n-1)+2(n>1)age(n)=10(n=1)遞歸求解兩個(gè)階段:第一階段回推、第二階段遞推?;赝平Y(jié)束的終止條件:第1個(gè)人10歲
age(int
n){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}main(){printf("%d",age(5));}遞歸過程跟蹤分析:P172圖8.11P173圖8.12age(5)c=age(4)+2c=age(3)+2c=age(2)+2c=age(1)+2c=10
(age(1))c=12
(age(2))c=14
(age(3))c=16
(age(4))c=18
(age(5))返回main函數(shù)遞歸算法解決問題的方式:將初始問題轉(zhuǎn)化為解決方法相同的新問題,而新問題的規(guī)模要比原始問題??;新問題又可以轉(zhuǎn)化為規(guī)模更小的問題,這樣處理問題直至最終歸結(jié)到可以簡(jiǎn)單解決的問題——遞歸的終結(jié)條件。例:求n的階乘#include<stdio.h>intfac(intn){intf;if(n<0)printf("n<0,dataerror!");elseif(n==0||n==1)f=1;elsef=fac(n-1)*n;return(f);}main(){intn,y;printf("Inputaintegernumber:");scanf("%d",&n);
y=fac(n);printf("%d!=%15d",n,y);}遞歸的終結(jié)條件:n=0或n=1求n!也可以用遞歸方法,即5!等于5×4!,而4!=4×3!…1!=1。其它可以使用遞歸方法解決的問題Fabonacci數(shù)列:(P125迭代的方法,P133一維數(shù)組的方法)longfab(intn){longintt;if(n==1||n==2)t=1;elset=f(n-1)+f(n-2);return(t);}
猴子吃桃子問題
其它可以使用遞歸方法解決的問題8.7
數(shù)組作為函數(shù)參數(shù)8.7.1數(shù)組元素作函數(shù)實(shí)參——值傳遞數(shù)組元素可以作為函數(shù)的實(shí)參,與用變量作實(shí)參一樣,是單向傳遞,即“值傳送”方式。但形參不能為數(shù)組元素。例:兩個(gè)數(shù)組大小比較:假定a[10]和b[10]為有10個(gè)元素的整型數(shù)組,比較規(guī)則如下。432105a562312107688432105b212343986654n=0m=0k=0in=0m=0k=1in=0m=1k=1in=1m=1k=1in=1m=1k=2in=2m=1k=2in=3m=1k=2比較兩數(shù)組對(duì)應(yīng)元素變量n,m,k記錄a[i]>b[i],a[i]==b[i],a[i]<b[i]的個(gè)數(shù)最后若n>k,認(rèn)為數(shù)組a>b
若n<k,認(rèn)為數(shù)組a<b
若n==k,認(rèn)為數(shù)組a==b#include<stdio.h>main(){inta[10],b[10],i,n=0,m=0,k=0;printf("Enterarraya:\n");for(i=0;i<10;i++) scanf("%d",&a[i]);printf("Enterarrayb:\n");for(i=0;i<10;i++) scanf("%d",&b[i]);for(i=0;i<10;i++){if(large(a[i],b[i])==1)n=n+1;
else
if(large(a[i],b[i])==0)m=m+1;
elsek=k+1;}}intlarge(intx,inty){intflag;if(x>y)flag=1;elseif(x<y)flag=-1;elseflag=0;return(flag);}函數(shù)的功能是判斷形參x,y的大小,返回1,0,-1三種函數(shù)值數(shù)組元素a[i],b[i]作實(shí)參數(shù)組名作函數(shù)參數(shù)地址傳遞形參和實(shí)參必須均為數(shù)組名,且類型應(yīng)一致形參數(shù)組大小可不指定,C語(yǔ)言編譯對(duì)形參數(shù)組大小不做檢查,只是將實(shí)參數(shù)組的首元素的地址傳給形參數(shù)組形參數(shù)組名是地址變量,它獲得了實(shí)參數(shù)組的首元素的地址
8.7.2數(shù)組名作函數(shù)參數(shù)
用數(shù)組名作函數(shù)參數(shù)時(shí),此時(shí)形參應(yīng)當(dāng)用數(shù)組名或用指針變量。例寫一函數(shù)求10個(gè)學(xué)生的平均成績(jī)#include<stdio.h>
floataverage(intstu[10],intn);voidmain(){intscore[10],i;floatav;printf("Input10scores:\n");for(i=0;i<10;i++)scanf("%d",&score[i]);av=average(score,10);printf("Averageis:%.2f",av);}floataverage(int
stu[10],intn){inti;floatav,total=0;for(i=0;i<n;i++)total+=stu[i];av=total/n;returnav;}數(shù)組做實(shí)參,僅用數(shù)組名形參用數(shù)組定義,intstu[]..2109score562312….….88stu調(diào)用時(shí),將數(shù)組的首地址傳遞給形參,形參數(shù)組與實(shí)參數(shù)組共用同一段存儲(chǔ)單元,相當(dāng)于同一個(gè)數(shù)組說明:1、用數(shù)組名做函數(shù)參數(shù)時(shí),應(yīng)該在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組。如score是實(shí)參數(shù)組名,stu是形參數(shù)組名。2、實(shí)參數(shù)組和形參數(shù)組類型必須一致(現(xiàn)都為int)。3、調(diào)用時(shí),將實(shí)參數(shù)組的首地址傳遞給形參,這樣形參數(shù)組首元素地址stu[0]和實(shí)參數(shù)組首元素score[0]具有同一地址,占用同一存儲(chǔ)單元,其他元素也是,可理解為形參數(shù)組與實(shí)參數(shù)組共用同一段存儲(chǔ)單元,相當(dāng)于同一個(gè)數(shù)組。4、指定形參數(shù)組長(zhǎng)度不起任何作用,故形參數(shù)組的長(zhǎng)度10可省略,直接在形參數(shù)組名后跟一個(gè)空的[]。原因:C語(yǔ)言編譯對(duì)形參數(shù)組大小不做檢查,只是將實(shí)參數(shù)組的首元素的地址傳遞給形參數(shù)組。5、為方便被調(diào)用函數(shù)中處理數(shù)組元素的需要,可以另設(shè)一個(gè)形參,傳遞需要處理的數(shù)組元素的個(gè)數(shù)。如
aver=average(score,10);aver=average(score,5);例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較12a調(diào)用前a[0]a[1]12a調(diào)用a[0]a[1]12xy21xy交換12a返回#include<stdio.h>voidswap2(intx,inty){intz;z=x;x=y;y=z;}main(){inta[2]={1,2};
swap2(a[0],a[1]);printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);}值傳遞12a調(diào)用前12ax調(diào)用21ax交換21a返回#include<stdio.h>voidswap2(intx[]){intz;z=x[0];x[0]=x[1];x[1]=z;}main(){inta[2]={1,2};
swap2(a);printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);}地址傳遞例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較實(shí)質(zhì)是實(shí)參數(shù)組和形參數(shù)組共享同一段內(nèi)存單元
數(shù)組名作函數(shù)實(shí)參時(shí),傳遞的是實(shí)參數(shù)組首元素的地址。這樣兩個(gè)數(shù)組共占同一段內(nèi)存單元。形參數(shù)組中各元素的值如發(fā)生變化會(huì)使實(shí)參數(shù)組元素的值同時(shí)引起變化,上圖很容易看出。這一點(diǎn)是與數(shù)組元素以及變量做函數(shù)參數(shù)的情況不同的,務(wù)請(qǐng)注意。
關(guān)于值調(diào)用和地址調(diào)用總結(jié)值調(diào)用。指的是傳送給形參的是值。這時(shí),即使主程序中的變量和函數(shù)中的變量同名,但它們不在同一個(gè)地址上,函數(shù)中變量的值發(fā)生改變,并不會(huì)改變主程序中變量的值。當(dāng)從函數(shù)返回到主程序后,函數(shù)中變量的值被釋放(靜態(tài)變量除外),這時(shí),在主程序中看不到在函數(shù)中被改變的值(靜態(tài)變量除外),即所謂的“單向傳遞”。
(2)地址調(diào)用。指的是傳送給形參的是地址。這時(shí)函數(shù)中的變量和主程序中的變量是在同一個(gè)地址上(與變量是否同名無關(guān)),同一個(gè)地址上的內(nèi)容發(fā)生變化,在函數(shù)中和在主程序中的效果是一樣的,即所謂的“雙向傳遞”。
例:用選擇排序法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序選擇法對(duì)n個(gè)數(shù)進(jìn)行排序的思路是:如果要對(duì)n個(gè)數(shù)據(jù)排序,就需要進(jìn)行n-1輪的比較,每次都從數(shù)組中未排好的子序列中找出一個(gè)最小數(shù),與子序列最前面的1個(gè)元素交換,使小數(shù)放在子序列的最前面。例如,第1輪需要比較n-1次,在n個(gè)數(shù)中找出最小數(shù)與數(shù)組中的第1個(gè)元素(即a[0])交換,使數(shù)組中的最小數(shù)放在數(shù)組的最前面;第2輪將對(duì)剩下的n-1個(gè)數(shù)進(jìn)行比較,需要比較(n-1)-1次,將n-1個(gè)數(shù)中的最小的數(shù)與子序列最前面的元素交換,也就數(shù)組中的第2個(gè)元素(即a[1])交換,使子序列中的最小數(shù)放在子序列的最前面;……以此類推,第n-1輪需要進(jìn)行1次比較,將剩下的2個(gè)數(shù)中的小數(shù)與子序列的前面即a[n-2]交換,使子序列中的最小數(shù)子序列中的前面。當(dāng)?shù)趎-1輪比較進(jìn)行完后,所有的數(shù)據(jù)都按照升序在數(shù)組中排列。例:以6個(gè)數(shù)為例說明選擇法的步驟(從小到大)選擇排序:
第1輪比較時(shí),用a[0]依次與a[1]到a[5]進(jìn)行比較,如果a[0]較大則進(jìn)行交換,否則不變。第1輪結(jié)束后,a[0]中為最小數(shù).
第2輪比較時(shí),用a[1]依次與a[2]到a[5]進(jìn)行比較,如果a[1]較大則進(jìn)行交換,否則不變。第2輪結(jié)束后,a[1]中為次小數(shù).
以后各輪比較過程類似.972541a[0]a[1]a[2]a[3]a[4]a[5]
19754212975479574524
124975
1245
9
7795745972541729712初始狀態(tài)第1輪第2輪第3輪第4輪第5輪795779選擇排序法第二種方法(從小到大)第二種方法:
兩兩比較后并不馬上交換,而是找到最小數(shù)后記下其下標(biāo)P。在一輪比較完畢后,再將最小的數(shù)一次交換到位?!容^次數(shù)不變,交換次數(shù)減少。972541a[0]a[1]a[2]a[3]a[4]a[5]12457912457997254191初始狀態(tài)第1輪第2輪第3輪第4輪第5輪p=0p=1p=2p=5
172549p=1p=227
1
27549p=247p=3p=4p=3p=4選擇排序法第二種方法(從小到大)972541a[0]a[1]a[2]a[3]a[4]a[5]12457912457997254191初始狀態(tài)第1輪第2輪第3輪第4輪第5輪p=0p=1p=2p=5
172549p=1p=227
1
27549p=247p=3p=4p=3p=4第1輪i=0{p=0;for(j=i+1;j<6;j++)if(a[j]<a[p])p=j;//比較5次,
if(p!=i){a[p]a[0]}}第2輪i=1{p=1;for(j=i+1;j<6;j++)if(a[j]<a[p])p=j;//比較4次,
if(p!=i){a[p]a[1]}}第5輪i=4{p=4;for(j=i+1;j<6;j++)if(a[j]<a[p])p=j;//比較1次
if(p!=i){a[p]a[4]}}main(){inta[6],i,j,p,temp;for(i=0;i<6;i++)scanf("%d",&a[i]);for(i=0;i<5;i++){p=i;for(j=i+1;j<6;j++)if(a[j]<a[p])p=j;if(p!=i){temp=a[p];a[p]=a[i];a[i]=temp;}}for(i=0;i<6;i++)printf("%3d",a[i]);}1、第1輪排序找到所有元素的最小值a[p],然后將a[0]與a[p]交換,則第1輪結(jié)束后,a[0]中為最小數(shù)。第1輪找最小值a[p]的方法:令p=0,掃描a[1]…a[5],有小于a[0]的即令p記錄其下標(biāo),否則p不變。之后比較a[p]與剩余元素,若有比a[p]小的,則改變p值,否則p不變。該輪比較結(jié)束時(shí),p記錄的就是最小值的下標(biāo)。2、其他幾輪與此類似,只是不要再動(dòng)已排好的元素.例:用選擇排序法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序voidsort(intarray[],intn){inti,j,k,t;
for(i=0;i<n-1;i++){k=i;
for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}main(){inta[10],i;for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}0123456789a4968573299927137688arraykjjjkjkjjjjj949i=0例:用選擇排序法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序voidsort(intarray[],intn){inti,j,k,t;
for(i=0;i<n-1;i++){k=i;
for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}main(){inta[10],i;for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}kjjkjkjjjjj0123456789a4968573299927137688array949kk1368i=10123456789a9132732495768768899arrayi=8例:用選擇排序法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序voidsort(intarray[],intn){inti,j,k,t;
for(i=0;i<n-1;i++){k=i;
for(j=i+1;j<n;j++) if(array[j]<array[k])k=j; if(k!=i) {t=array[i]; array[i]=array[k]; array[k]=t; }}}main(){inta[10],i;for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}例:求二維數(shù)組中最大元素值(多維數(shù)組名作為函數(shù)參數(shù))1357246815173412ijmax=11357246815173412ijmax=31357246815173412ijmax=5j1357246815173412imax=7j1357246815173412imax=7j1357246815173412imax=34intmax_value(intarray[3][4]){inti,j,k,max;max=array[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j];return(max);}main(){inta[3][4]={{1,3,5,7}, {2,4,6,8},{15,17,34,12}};printf("maxvalueis%d\n",max_value(a));}多維形參數(shù)組第一維維數(shù)可省略,第二維必須相同
intarray[][4]8.8局部變量和全局變量變量按照其定義位置分為局部變量和全局變量。局部變量只能在一個(gè)函數(shù)內(nèi)或者一個(gè)復(fù)合語(yǔ)句內(nèi)使用。全局變量在定義之后的所有的函數(shù)都能使用。變量的分類按數(shù)據(jù)類型字符型變量數(shù)值型變量整型變量實(shí)型變量長(zhǎng)整型變量基本整型變量無符號(hào)整型變量單精度型變量雙精度型變量按定義位置外部變量(外部變量)內(nèi)部變量(局部變量)按存儲(chǔ)類別動(dòng)態(tài)存儲(chǔ)變量靜態(tài)存儲(chǔ)變量一、局部變量(按定義位置)局部變量:只在某一個(gè)函數(shù)內(nèi)部或者只在一個(gè)復(fù)合語(yǔ)句內(nèi)起作用的變量叫做局部變量。凡定義在函數(shù)內(nèi)部的變量、定義在復(fù)合語(yǔ)句內(nèi)部的變量、函數(shù)的形式參數(shù)均為局部變量.說明:(1)局部變量作用域(可見性):本函數(shù)(或復(fù)合語(yǔ)句)內(nèi)也就是說只有在本函數(shù)(或復(fù)合語(yǔ)句)內(nèi)才能使用它們,在此函數(shù)以外是看不到它們,不能使用這些變量的。(2)不同函數(shù)中可以使用相同名字的局部變量,他們?cè)趦?nèi)存中占不同的存儲(chǔ)空間,互不混淆。floatf1(inta){intb,c;…….}charf2(intx,inty){inti,j;……}main(){intm,n;…….}a,b,c有效x,y,i,j有效m,n也是局部變量,僅在main()中有效main(){inta,b;a=3;b=4;printf("main:a=%d,b=%d\n",a,b);sub();printf("main:a=%d,b=%d\n",a,b);}sub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d\n",a,b);}運(yùn)行結(jié)果:main:a=3,b=4sub:a=6,b=7main:a=3,b=4例:局部變量作用域例:不同函數(shù)中同名變量二、全局變量(按定義位置)全局變量:定義在函數(shù)以外,可以為整個(gè)源程序文件中各個(gè)函數(shù)使用的變量叫做全局變量。凡定義在所有函數(shù)之外的變量均為全局變量.說明:(1)外部變量的作用域(可見性):從定義點(diǎn)開始,或有extern聲明的位置開始到文件結(jié)束,全局可見。(2)局部變量與全局變量可以同名,他們?cè)趦?nèi)存中
分別占有不同的存儲(chǔ)單元,且在局部變量起作
用的范圍內(nèi),全局變量不起作用。(3)全局變量增加了函數(shù)間的數(shù)據(jù)聯(lián)系,但降低了
函數(shù)的通用性,應(yīng)盡量少用。當(dāng)需要由函數(shù)傳
回多個(gè)值時(shí)才考慮使用全局變量。例:全局變量作用域intp=1,q=5;floatf1(inta){intb,c;…….}intf3(){…..}charc1,c2;charf2(intx,inty){inti,j;……}main(){intm,n;…….}c1,c2的作用范圍p,q的作用范圍inta=3,b=5;max(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=8;printf("max=%d",max(a,b));}例:全局變量與局部變量運(yùn)行結(jié)果:max=8
定義在所有函數(shù)之外的變量為全局變量形參變量為局部變量定義在函數(shù)內(nèi)部的變量為局部變量實(shí)參a是局部變量,值為8,實(shí)參變量b是全局變量,其值為5。a,b均使用局部變量的值注意:
1、3次出現(xiàn)了a的定義,3處a的存儲(chǔ)空間不同
2、局部變量起作用時(shí),全局變量不起作用說明:(1)引入全局變量max、min,有效范圍從定義變量的位置開始到本源文件結(jié)束。(2)可增加函數(shù)之間傳遞數(shù)據(jù)的途徑。在函數(shù)調(diào)用時(shí)實(shí)現(xiàn)返回兩個(gè)或兩個(gè)以上的計(jì)算結(jié)果。
floatmax,min;floataverage(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;i<n;i++){if(array[i]>max)max=array[i];elseif(array[i]<min)min=array[i];sum+=array[i];}return(sum/n);}main(){inti;floatave,score[10];/*Input*/ave=average(score,10);printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);}作用域maxmin例:全局變量可增加函數(shù)間傳遞數(shù)據(jù)的途徑,但降低函數(shù)通用性。說明:(3)設(shè)置全局變量是雙刃劍,非必要時(shí)勿使用全局變量,原因:全局變量在程序全部執(zhí)行過程中占用存儲(chǔ)單元,而不是在需要時(shí)再開辟,浪費(fèi)存儲(chǔ)空間。例:全局變量可增加函數(shù)間傳遞數(shù)據(jù)的途徑,但降低函數(shù)通用性??闯觯篴ver通過return帶回main函數(shù)。max和min是全局變量,是公用的,它們的值可以供各函數(shù)使用,如在某個(gè)函數(shù)中,改變它們的值,在其它函數(shù)中也可以使用這個(gè)已改變了的值。
降低了函數(shù)的通用性、可靠性,可移植性。牽一發(fā)而動(dòng)全身
故一般還是采用“實(shí)參——形參”的渠道和外界聯(lián)系?!?.9變量的存儲(chǔ)類別變量的存儲(chǔ)類別:按時(shí)間域(生存期)來進(jìn)行分類。按生存期,變量可分為:靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量。一、內(nèi)存中用戶區(qū)存儲(chǔ)空間的分配內(nèi)存系統(tǒng)區(qū)用戶區(qū)存放系統(tǒng)程序存放用戶文件和數(shù)據(jù)程序區(qū):靜態(tài)存儲(chǔ)區(qū):動(dòng)態(tài)存儲(chǔ)區(qū):程序全局變量靜態(tài)局部變量(用static聲明的變量)局部自動(dòng)變量(auto)函數(shù)的形參二、變量的存儲(chǔ)類別靜態(tài)存儲(chǔ):含義:定義變量時(shí)分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束時(shí)并不釋放所占存儲(chǔ)單元。離開函數(shù)后變量的值仍能被引用,變量的生存期是程序運(yùn)行期間。靜態(tài)存儲(chǔ)區(qū)中存儲(chǔ):靜態(tài)局部變量、全局變量。動(dòng)態(tài)存儲(chǔ):含義:調(diào)用函數(shù)時(shí)分配存儲(chǔ)單元,函數(shù)調(diào)用結(jié)束時(shí)釋放所占存儲(chǔ)單元。即離開函數(shù)后變量的值不能被引用,變量的生存期是函數(shù)運(yùn)行期間。動(dòng)態(tài)存儲(chǔ)區(qū)中存儲(chǔ):自動(dòng)局部變量、函數(shù)的形參。二、變量的存儲(chǔ)類別每一個(gè)變量都有兩種屬性:數(shù)據(jù)類型和存儲(chǔ)類別,前者表示了變量所能存放的數(shù)據(jù)類型和范圍,后者表示了變量在內(nèi)存中的存儲(chǔ)方式。局部變量在定義時(shí)存儲(chǔ)類別缺省時(shí),默認(rèn)為自動(dòng)(auto)變量。當(dāng)要指出該變量是靜態(tài)局部變量時(shí)應(yīng)加static。定義一個(gè)動(dòng)態(tài)局部變量(自動(dòng)變量):
autointa;
或者:inta;定義一個(gè)靜態(tài)局部變量:
staticintb;動(dòng)態(tài)局部變量定義后的初值是隨機(jī)值靜態(tài)變量定義后的初值是0三、局部變量的存儲(chǔ)方式局部自動(dòng)變量在動(dòng)態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元。局部靜態(tài)變量在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元。靜態(tài)局部變量是在編譯時(shí)賦初值的,只賦初值一次,下次調(diào)用函數(shù)時(shí),這些變量保留上次調(diào)用結(jié)束時(shí)的值。
局部自動(dòng)變量是在調(diào)用時(shí)賦初值,每調(diào)用一次,重新賦一次初值。#include<stdio.h>intf(inta){autointb=0;
intc=3;
b=b+1;
c=c+1;return(a+b+c);}voidmain(){
inta=2,i;for(i=0;i<3;i++)printf(“%d”,f(a));
}例:局部靜態(tài)變量應(yīng)用實(shí)例1,教材8.17#include<stdio.h>intf(inta){autointb=0;
staticintc=3;
b=b+1;
c=c+1;return(a+b+c);}voidmain(){inta=2,i;for(i=0;i<3;i++)printf(“%d”,f(a));
}結(jié)果:7,8,9b、c是自動(dòng)變量,函數(shù)調(diào)用結(jié)束后,b、c的存儲(chǔ)空間釋放。再次調(diào)用f,b、c重新賦值。結(jié)果:7,7,7c為靜態(tài)局部變量,程序運(yùn)行期間存儲(chǔ)空間不釋放,只在編譯時(shí)賦初值3,第2次以后再調(diào)f函數(shù)時(shí),c中保留上次調(diào)用后的值。次數(shù)調(diào)用前c調(diào)用后c一34二45三56次數(shù)調(diào)用前c調(diào)用后c一34二34三34main(){voidincrement(void);increment();increment();increment();}voidincrement(void){intx=0;x++;printf(“%d\n”,x);}運(yùn)行結(jié)果:111main(){voidincrement(void);increment();increment();increment();}voidincrement(void){staticintx=0;x++;printf(“%d\n”,x);}運(yùn)行結(jié)果:123例:局部靜態(tài)變量應(yīng)用實(shí)例2例:局部靜態(tài)變量應(yīng)用實(shí)例3,教材8.18輸出1到5的階乘值。#include<stdio.h>voidmain(){intfac(intn);inti;
for(i=0;i<5;i++)printf(“%d!=%d\n”,i,fac(i));}intfac(intn){staticintf=1;
f=f*n;
return(f);
}四、全局變量的存儲(chǔ)方式全局變量生存期:全局變量在編譯時(shí)被分配在靜態(tài)存儲(chǔ)區(qū)全局變量的生存期是整個(gè)程序運(yùn)行期間全局變量作用域:是在函數(shù)的外部定義的,它的作用域是從變量的定義處開始,到本程序文件的末尾。若對(duì)全局變量定義之外加extern聲明可以擴(kuò)展其作用范圍對(duì)對(duì)全局變量定義之前加static,則將其作用范圍局限在本文件。intp=1,q=5;floatf1(inta){intb,c;…….}intf3(){…..}charc1,c2;charf2(intx,inty){inti,j;……}main(){intm,n;…….}c1,c2的作用范圍p,q的作用范圍externc1,c2;externc1,c2;c1,c2的作用范圍擴(kuò)展后c1,c2的作用范圍擴(kuò)展后extern對(duì)全局變量作用域的擴(kuò)展全局變量定義與全局變量聲明不同名稱定義方法定義位置存儲(chǔ)類別生存期作用域動(dòng)態(tài)局部變量靜態(tài)局部變量全局變量函數(shù)形參autointa;inta;staticinta;inta;staticinta;inta;函數(shù)內(nèi)部復(fù)合語(yǔ)句內(nèi)函數(shù)內(nèi)部復(fù)合語(yǔ)句內(nèi)函數(shù)外部函數(shù)說明部分動(dòng)態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)函數(shù)復(fù)合語(yǔ)句程序程序函數(shù)函數(shù)內(nèi)復(fù)合語(yǔ)句內(nèi)函數(shù)內(nèi)復(fù)合語(yǔ)句內(nèi)本程序和其它程序函數(shù)內(nèi)變量存儲(chǔ)類別小結(jié)局部變量默認(rèn)為auto型register型變量個(gè)數(shù)受限,且不能為long,double,float型局部static變量具有全局壽命和局部可見性局部static變量具有可繼承性extern不是變量定義,可擴(kuò)展外部變量作用域變量存儲(chǔ)類型靜態(tài)動(dòng)態(tài)存儲(chǔ)方式程序整個(gè)運(yùn)行期間函數(shù)調(diào)用開始至結(jié)束生存期編譯時(shí)賦初值,只賦一次每次函數(shù)調(diào)用時(shí)賦初值自動(dòng)賦初值0或空字符不確定未賦初值靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)區(qū)存儲(chǔ)區(qū)寄存器局部變量全局變量作用域定義變量的函數(shù)或復(fù)合語(yǔ)句內(nèi)本文件
其它文件register局部staticauto全局static全局存儲(chǔ)類別例變量的壽命與可見性(自學(xué))#include<stdio.h>inti=1;main(){staticinta;
registerintb=-10;
intc=0;printf("-----Main------\n");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力行業(yè)助理的工作職責(zé)簡(jiǎn)述
- 高校人才培養(yǎng)方案的更新
- 2025年全球及中國(guó)石油和天然氣行業(yè)用有機(jī)緩蝕劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球桶形立銑刀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)醫(yī)療推車液晶顯示器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球輪胎式破碎機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)劇場(chǎng)動(dòng)作自動(dòng)化設(shè)備行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)單線金剛石線切割機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球履帶調(diào)節(jié)器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球防水低光雙筒望遠(yuǎn)鏡行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 安全生產(chǎn)網(wǎng)格員培訓(xùn)
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運(yùn)算300題帶答案
- 林下野雞養(yǎng)殖建設(shè)項(xiàng)目可行性研究報(bào)告
- 心肺復(fù)蘇術(shù)課件2024新版
- 2024年內(nèi)蒙古呼和浩特市中考文科綜合試題卷(含答案)
- 大型商場(chǎng)招商招租方案(2篇)
- 會(huì)陰擦洗課件
- 2024年交管12123學(xué)法減分考試題庫(kù)和答案
- 臨床下肢深靜脈血栓的預(yù)防和護(hù)理新進(jìn)展
- 2024年山東泰安市泰山財(cái)金投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點(diǎn)及健康教育
評(píng)論
0/150
提交評(píng)論