




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第七章函數西安工程大學本章內容:函數概述函數的定義與調用數組作為函數參數函數的嵌套調用和遞歸調用變量的屬性變量的存儲類別內部函數與外部函數7.1概述模塊化程序設計基本思想:將一個大的程序按功能分割成一些小模塊特點及優點:各模塊相對獨立、功能單一、結構清晰、接口簡單控制了程序設計的復雜性提高元件的可靠性縮短開發周期避免程序開發的重復勞動易于維護和功能擴充開發方法:自上向下,逐步分解,分而治之C是模塊化程序設計語言C程序結構C是函數式語言必須有且只能有一個名為main的主函數C程序的執行總是從main函數開始,在main中結束函數不能嵌套定義,可以嵌套調用函數分類從用戶角度標準函數(庫函數)用戶自定義函數從函數形式無參函數有參函數使用庫函數應注意:1、函數功能2、函數參數的數目和順序,及各參數意義和類型3、函數返回值意義和類型4、需要使用的包含文件例如:Printf(“%d”,a);Scanf(“%d”,&a);Getchar()Putchar(a);Abs(x);Sqrt(x);Getchar()Printf(“%d”,a)7.2函數的定義和調用7.2.1函數的定義7.2.2函數的返回值與函數類型7.2.3對被調用函數的說明和函數原型7.2.4函數的調用7.2.5函數的形參與實參7.2.1函數的定義一般格式合法標識符函數返回值類型缺省int型無返回值void函數體函數類型函數名(數據類型參數[,數據類型參數2……]){ 說明部分; 語句部分;}例有參函數(現代風格)intmax(intx,inty){intz;z=x>y?x:y;return(z);}例有參函數intmax(intx,y){intz;z=x>y?x:y;return(z);}例空函數dummy(){}函數體為空例無參函數printstar(){printf(“**********\n”);}或printstar(void){printf(“**********\n”);}函數首部函數的定義說明(1)函數定義不允許嵌套。在一個函數的函數體內,不能再定義另一個函數,即不能嵌套定義。(2)空函數──既無參數、函數體又為空的函數。其一般形式為:[函數類型]函數名(void){}(3)在老版本C語言中,參數類型說明允許放在函數說明部分的第2行單獨指定。例有參函數(傳統風格)intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}7.2.2函數的返回值與函數類型函數的返回值和return語句有參函數的返回值,是通過函數中的return語句來獲得的。Return語句的形式:return(表達式);或return表達式;或return;功能:返回調用函數,并將“返回值表達式”的值帶給調用函數。說明:函數中可有多個return語句若無return語句,并不是不返回一個值,而是遇}時,自動返回調用函數,并帶回一個不確定的值。為了明確表示不返回值,可以用“void”定義成“無(空)類型”。若函數類型與return語句中表達式值的類型不一致,按前者為準,自動轉換------函數調用轉換例無返回值函數voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}printstar(){printf("**********");}main(){inta;a=printstar();printf("%d",a);}例函數帶回不確定值輸出:10voidprintstar(){printf("**********");}main(){inta;a=printstar();printf("%d",a);}編譯錯誤!例函數返回值類型轉換main(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}max(floatx,floaty){floatz;z=x>y?x:y;return(z);}7.2.3對被調用函數的說明對被調用函數要求:必須是已存在的函數庫函數:#include<*.h>用戶自定義函數:函數類型說明函數說明一般形式:函數類型函數名(形參類型[形參名],…..);或函數類型函數名();作用:告訴編譯系統函數類型、參數個數及類型,以便檢驗函數定義與函數說明不同函數說明位置:程序的數據說明部分(函數內或外)下列情況下,可不作函數說明若函數返值是char或int型,系統自動按int型處理被調用函數定義出現在主調函數之前例函數說明舉例main(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}max(floatx,floaty){floatz;z=x>y?x:y;return(z);}int型函數可不作函數說明/*ch7_5.c*/floatadd(floatx,floaty){floatz;z=x+y;return(z);}main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}被調函數出現在主調函數之前,不必函數說明/*ch7_5.c*/main(){floatadd(float,float);/*functiondeclaration*/floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}floatadd(floatx,floaty){floatz;z=x+y;return(z);}floatadd();注意:實參與形參個數相等,類型一致,按順序一一對應7.2.4函數的調用調用形式函數名(實參表);調用方式函數語句例printstar();printf(“Hello,World!\n”);函數表達式:例m=max(a,b)*2;函數參數:例printf(“%d”,max(a,b));m=max(a,max(b,c));7.2.5函數參數及其傳遞方式形參與實參形式參數:定義函數時函數名后面括號中的變量名實際參數:調用函數時函數名后面括號中的表達式c=max(a,b);(main函數)
(max函數)max(intx,inty){intz;z=x>y?x:y;return(z);}例比較兩個數,并輸出大較者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);}形參實參函數調用過程演示Main函數abMax函數xy5757cz77說明:實參必須有確定的值形參必須指定類型形參與實參類型一致,個數相同若形參與實參類型不一致,自動按形參類型轉換———函數調用轉換形參在函數被調用前不占內存;函數調用時為形參分配內存;調用結束,內存釋放例計算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參數傳遞方式之一——值傳遞值傳遞方式方式:函數調用時,為形參分配單元,并將實參的值復制到形參中;調用結束,形參單元被釋放,實參單元仍保留并維持原值特點:形參與實參占用不同的內存單元單向傳遞711xy調用前:例交換兩個變量的值。#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;}
ab調用時:711temp交換開始了7117調用結束:練習:
char
fun(char
x
,
char
y)
{
if(x<y)
return
x;
return
y;
}
main(
)
{
int
a=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,b),fun(b,c)));
}
程序的執行結果是A、函數調用出錯
B、8
C、9
D、7寫出下列程序的運行結果:voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
答案:4334
7.3數組作為函數參數數組元素作函數實參——值傳遞例兩個數組比較大小432105a562312107688432105b212343986654n=0m=0k=0in=0m=0k=1in=0m=1k=1in=1m=1k=1in=1m=1k=2in=2m=1k=2in=3m=1k=2a和b為有10個元素的整型數組比較兩數組對應元素變量n,m,k記錄a[i]>b[i],a[i]==b[i],a[i]<b[i]的個數最后若n>k,認為數組a>b若n<k,認為數組a<b若n==k,認為數組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;elseif(large(a[i],b[i])==0)m=m+1;elsek=k+1;}
/*Output*/}intlarge(intx,inty){intflag;if(x>y)flag=1;elseif(x<y)flag=-1;elseflag=0;return(flag);}說明:用數組元素作實參時,只要數組元素類型和函數的形參類型一致即可,并不要求函數的形參也是下標變量。換句話說,對數組元素的處理是按普通變量對待的。例求10位學生的平均成績#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;}實參用數組名形參用數組定義,intstu[]..2109score562312….….88stu例數組排序----簡單選擇排序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例數組排序----簡單選擇排序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例數組排序----簡單選擇排序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");}地址傳遞方式:函數調用時,將數據的存儲地址作為參數傳遞給形參特點:形參與實參占用同樣的存儲單元“雙向”傳遞實參和形參必須是地址常量或變量例求二維數組中最大元素值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));}多維形參數組第一維維數可省略,第二維必須相同intarray[][4]例求二維數組中各行元素之和get_sum_row(intx[][3],intresult[],introw,intcol){inti,j;for(i=0;i<row;i++){result[i]=0; for(j=0;j<col;j++) result[i]+=x[i][j];}}main(){inta[2][3]={3,6,9,1,4,7};intsum_row[2],row=2,col=3,i;
get_sum_row(a,sum_row,row,col);for(i=0;i<row;i++)printf("Thesumofrow[%d]=%d\n",i+1,sum_row[i]);}314679asum_rowxresult1812數組名作函數參數用數組名作函數參數,要求形參和相對應的實參都必須是類型相同的數組,或指向數組的指針變量。實參數組和形參數組大小不要求必須一致,C編譯系統對形參數組大小不作檢查,只將實參數組的首地址傳給形參數組。形參數組可以不指定大小,但若是二維數組,則第二維必須指定大小,第一維可以不指定。用數組名作為函數實參時,不是把數組的值傳遞給形參,而是把實參數組的起始地址傳遞給形參數組,兩數組共用同一段存儲單元。例數組元素作函數參數與數組名作函數參數的比較12a調用前a[0]a[1]12a調用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調用前12ax調用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]);}地址傳遞例數組元素作函數參數與數組名作函數參數的比較寫出下列程序的運行結果:#defineN20fun(intb[],intn,intm){inti,j;for(i=m;i>=n;i--)b[i+1]=b[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}0123456789a21345678910mnb92345678910以下程序的功能是計算函數F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請選擇填空。floatfun1(floata,floatb){floatnum;num=a/b;returnnum;}#include<stdio,h>#include<math.h>floatfun1(float,float);voidmain(void){floatx,y,z,sum;scanf("%f%f%",&x,&y,&z);sum=fun1(①)+fun1(②);printf("sum=%f\n",sum);}
#include
main()
{charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}答案:abcbcc7.4函數的嵌套調用和遞歸C語言規定:函數定義不可嵌套,但可以嵌套調用函數例求三個數中最大數和最小數的差值#include<stdio.h>
intdif(intx,inty,intz);intmax(intx,inty,intz);intmin(intx,inty,intz);voidmain(){inta,b,c,d;scanf("%d%d%d",&a,&b,&c);
d=dif(a,b,c);printf("Max-Min=%d\n",d);}intdif(intx,inty,intz){returnmax(x,y,z)-min(x,y,z);}intmax(intx,inty,intz){intr;r=x>y?x:y;return(r>z?r:z);}intmin(intx,inty,intz){intr;r=x<y?x:y;return(r<z?r:z);}main()調用函數dif輸出結束dif函數max函數調用函數max調用函數minmin函數遞歸調用定義:函數直接或間接的調用自身叫函數的遞歸調用f()調f調f2調f1f1()f2()intf(intx){inty,z;……
z=f(y);…….return(2*z);}intf1(intx){inty,z;……
z=f2(y);…….return(2*z);}intf2(intt){inta,c;……
c=f1(a);…….return(3+c);}例求n的階乘#include<stdio.h>intf(intn){intf;if(n<0)printf("n<0,dataerror!");elseif(n==0||n==1)f=1;elsef=f(n-1)*n;return(f);}main(){intn,y;printf("Inputaintegernumber:");scanf("%d",&n);
y=f(n);printf("%d!=%15d",n,y);}f(5)..f(4)*5..f(4)f(3)f(2)f(1)..f(3)*5....f(2)*5....f(1)*5....Return(1)..main()..f(5)..說明C編譯系統對遞歸函數的自調用次數沒有限制每調用函數一次,在內存堆棧區分配空間,用于存放函數變量、返回值等信息,所以遞歸次數過多,可能引起堆棧溢出例Hanoi問題ABC第一步:先把小盤和中盤從A借助于C移至B柱;(1)先把小盤移至C;(2)再把中盤移至B;(3)再把小盤移至B;第二步:把大盤子移至C柱;第三步:再把小盤和中盤從B借助于A移至C柱;(1)先把小盤子移至A;(2)再把中盤子移至C;(3)再把小盤子移至C;
例Hanoi問題ABChanoi(n,A,B,C);第一步:先把n-1個盤從A借助于C移至B柱;hanoi(n-1,A,C,B);第二步:把大盤子移至C柱;Move(n,c);第三步:再把n-1個盤從B借助于A移至C柱;hanoi(n-1,B,A,C);例Hanoi問題voidmove(chargetone,charputone){printf("%c--->%c\n",getone,putone);}voidhanoi(intn,charA,charB,charC){if(n==1)move(A,C);else{hanoi(n-1,A,C,B); move(A,C);
hanoi(n-1,B,A,C);}}main(){intm;printf("Inputthenumberofdisks:");scanf("%d",&m);printf("Thestepstomoving%3ddisks:\n",m);hanoi(m,'A','B','C');}ABC思考:什么樣的問題可以用遞歸來解決?7.5變量的屬性概述變量是對程序中數據的存儲空間的抽象內存…….main(){inta;a=10;printf(“%d”,a);}編譯或函數調用時為其分配內存單元1020002001程序中使用變量名對內存操作變量的屬性數據類型:變量所持有的數據的性質(操作屬性)存儲屬性存儲器類型:寄存器、靜態存儲區、動態存儲區生存期:變量在某一時刻存在-------靜態變量與動態變量作用域:變量在某區域內有效-------局部變量與全局變量變量的存儲類型auto-----自動型register-----寄存器型static------靜態型extern-----外部型變量定義格式:[存儲類型]數據類型變量表;如:intsum;autointa,b,c;registerinti;staticfloatx,y;局部變量與全局變量局部變量---內部變量定義:在函數內定義,只在本函數內有效說明:main中定義的變量只在main中有效不同函數中同名變量,占不同內存單元形參屬于局部變量可定義在復合語句中有效的變量局部變量可用存儲類型:autoregisterstatic(默認為auto)floatf1(inta){intb,c;…….}charf2(intx,inty){inti,j;……}main(){intm,n;…….}a,b,c有效x,y,i,j有效m,n有效例不同函數中同名變量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);}例復合語句中變量#defineN5main(){inti;inta[N]={1,2,3,4,5};for(i=0;i<N/2;i++)
{
inttemp; temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;
}for(i=0;i<N;i++)printf("%d",a[i]);}運行結果:54321例復合語句中變量#defineN5main(){inti;inta[N]={1,2,3,4,5};for(i=0;i<N/2;i++)
{
inttemp; temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp;
}for(i=0;i<N;i++)printf("%d",a[i]);}例不同函數中同名變量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);}運行結果:main:a=3,b=4sub:a=6,b=7main:a=3,b=4全局變量---外部變量定義:在函數外定義,可為本文件所有函數共用有效范圍:從定義變量的位置開始到本源文件結束,及有extern說明的其它源文件應盡量少使用全局變量,因為:全局變量在程序全部執行過程中占用存儲單元降低了函數的通用性、可靠性,可移植性降低程序清晰性,容易出錯定義
說明次數:只能1次可說明多次位置:所有函數之外函數內或函數外分配內存:分配內存,可初始化不分配內存,不可初始化>外部變量說明:extern數據類型變量表;外部變量定義與外部變量說明不同若外部變量與局部變量同名,則外部變量被屏蔽外部變量可用存儲類型:缺省或staticfloatmax,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);}作用域maxminintp=1,q=5;floatf1(inta){intb,c;…….}intf3(){…..}charc1,c2;charf2(intx,inty){inti,j;……}main(){intm,n;…….}c1,c2的作用范圍p,q的作用范圍externcharc1,c2;externcharc1,c2;c1,c2的作用范圍擴展后c1,c2的作用范圍擴展后例外部變量定義與說明intmax(intx,inty){intz;z=x>y?x:y;return(z);}main(){externinta,b;printf("max=%d",max(a,b));}inta=13,b=-8;運行結果:max=13externinta,b;intmax(){intz;z=a>b?a:b;return(z);}main(){printf("max=%d",max());}inta=13,b=-8;/*ch7_17.c*/inta=3,b=5;max(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=8;printf("max=%d",max(a,b));}例外部變量與局部變量運行結果:max=8inti;main(){voidprt();for(i=0;i<5;i++)prt();}voidprt(){for(i=0;i<5;i++)printf(“%c”,’*’);printf(“\n”);}例外部變量副作用運行結果:*****動態變量與靜態變量存儲方式靜態存儲:程序運行期間分配固定存儲空間動態存儲:程序運行期間根據需要動態分配存儲空間內存用戶區程序區靜態存儲區動態存儲區全局變量、局部靜態變量形參變量局部動態變量(autoregister)函數調用現場保護和返回地址等生存期靜態變量:從程序開始執行到程序結束動態變量:從包含該變量定義的函數開始執行至函數執行結束7.6變量存儲類型靜態動態存儲方式程序整個運行期間函數調用開始至結束生存期編譯時賦初值,只賦一次每次函數調用時賦初值自動賦初值0或空字符不確定未賦初值靜態存儲區動態區存儲區寄存器局部變量外部變量作用域定義變量的函數或復合語句內本文件其它文件局部變量默認為auto型register型變量個數受限,且不能為long,double,float型局部static變量具有全局壽命和局部可見性局部static變量具有可繼承性extern不是變量定義,可擴展外部變量作用域register局部staticauto外部static外部存儲類別例文件file1.cinta;main(){…….…….f2;…….f1;…….}f1(){autointb;………f2;……..}f2(){staticintc;………}C作用域b作用域a作用域mainf2f1mainf1f2maina生存期:b生存期:c生存期:例auto變量的作用域main(){intx=1;voidprt(void);
{
intx=3;prt();printf(“2ndx=%d\n”,x);
}printf(“1stx=%d\n”,x);}voidprt(void){intx=5;printf(“3thx=%d\n”,x);}運行結果:3thx=52ndx=31stx=1x=1作用域x=1作用域x=3作用域x=5作用域main(){voidincrement(void);increment();increment();increment();}voidincrement(void){intx=0;x++;printf(“%d\n”,x);}例局部靜態變量值具有可繼承性運行結果:111main(){voidincrement(void);increment();increment();increment();}voidincrement(void){staticintx=0;x++;printf(“%d\n”,x);}運行結果:123例變量的壽命與可見性#include<stdio.h>inti=1;main(){staticinta;
registerintb=-10;
intc=0;printf("-----MAIN------\n");printf("i:%da:%d\b:%dc:%d\n",i,a,b,c);c=c+8;other();printf("-----MAIN------\n");printf("i:%da:%d\b:%dc:%d\n",i,a,b,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 母嬰用品專業代購服務合作協議
- 遺產糾紛調節協議書
- 裝修公司結算協議書
- 銀行承兌抽屜協議書
- 酒店經營合伙協議書
- 首飾工廠訂購協議書
- 鄉村黨建宣傳欄協議書
- 餐廳設備租售協議書
- 跳舞團隊免責協議書
- 解除勞務協議協議書
- 轉讓店鋪輪胎協議書
- 2025年遼寧省盤錦市中考數學二模試卷
- 完整版新修訂《厲行節約反對浪費條例》(課件)
- (區縣版)-中小學教輔材料征訂專項整治工作方案
- 文員崗位筆試試題及答案
- 2025年制冷工職業技能競賽參考試題庫(共500題含答案)
- 2024年河北承德辰飛供電服務有限公司招聘真題
- 小米集團2024年環境、社會及管治報告(ESG)
- 手機媒體概論(自考14237)復習題庫(含真題、典型題)
- 晶圓缺陷檢測算法-全面剖析
- 江蘇省蘇、錫、常、鎮2025年高考物理三模試卷含解析
評論
0/150
提交評論