第四部分函数和作用域ppt课件

上传人:仙*** 文档编号:188639268 上传时间:2023-02-20 格式:PPT 页数:74 大小:193.50KB
返回 下载 相关 举报
第四部分函数和作用域ppt课件_第1页
第1页 / 共74页
第四部分函数和作用域ppt课件_第2页
第2页 / 共74页
第四部分函数和作用域ppt课件_第3页
第3页 / 共74页
点击查看更多>>
资源描述
第四章第四章 函数和作用域函数和作用域 函数的定义和阐明函数的定义和阐明 函数的调用函数的调用 函数的参数函数的参数 内联函数内联函数 函数重载函数重载 函数的嵌套调用和递归调用函数的嵌套调用和递归调用 作用域作用域 C+C+的系统函数的系统函数4.1 4.1 函数的定义和阐函数的定义和阐明明一、函数的定义一、函数的定义 函数前往值的函数前往值的类型类型4.1 4.1 函数的定义和阐函数的定义和阐明明一、函数的定义一、函数的定义 函数的标识函数的标识4.1 4.1 函数的定义和阐函数的定义和阐明明一、函数的定义一、函数的定义包括参数名和参数类型无形参时,括号不可省包括参数名和参数类型无形参时,括号不可省 函数调用时的函数调用时的方式参数方式参数4.1 4.1 函数的定义和阐函数的定义和阐明明一、函数的定义一、函数的定义 函数的详细实现函数的详细实现例:例:int add(int x,int y)int z;z=x+y;return z;void nothing()二、函数的阐明声明二、函数的阐明声明 函数定义在后、调用在先,调用前必需阐明;函数定义在后、调用在先,调用前必需阐明;函数定义在先、调用在后,可以不加阐明;函数定义在先、调用在后,可以不加阐明;复杂调用中,常在程序头对一切被调用函数复杂调用中,常在程序头对一切被调用函数 一次性阐明。一次性阐明。();例:例:int add(int x,int y);原型阐明原型阐明例例4.2#include void fun1(),fun2(),fun3();void main()cout“It is in main.endl;fun2();cout“It is back in main.endl;void fun1()cout“It is in fun1.endl;fun3();cout“It is back in fun1.endl;void fun2()cout“It is in fun2.endl;fun1();cout“It is back in fun2.endl;void fun3()cout“It is in fun3.endl;4.2 4.2 函数的调用函数的调用()void main()int a=3;int b=5;int c=add(a,b);/实参与形参个数相等,类型一样实参与形参个数相等,类型一样实参实参 函数调用表达式的值是函数的前往值函数调用表达式的值是函数的前往值;函数调用表达式的类型是函数的类型;函数调用表达式的类型是函数的类型;v 函数调用经过一个表达式实现:函数调用经过一个表达式实现:return;或或 return;v 函数的前往值经过前往语句实现函数的前往值经过前往语句实现的值作为函数的前往值;的值作为函数的前往值;的类型自动转换为函数类型;的类型自动转换为函数类型;程序执行的控制权转向调用函数;程序执行的控制权转向调用函数;注:无前往值的函数用注:无前往值的函数用“void阐明类型!阐明类型!一、函数的传值调用一、函数的传值调用1.传值调用传值调用 将实参值拷贝一个副本给对应的形参将实参值拷贝一个副本给对应的形参;形参值的改动不影响实参!形参值的改动不影响实参!实参:常量、变量值或表达式值实参:常量、变量值或表达式值形参:变量形参:变量变量的两种值:变量本身值和变量地址值;变量的两种值:变量本身值和变量地址值;传值调用分为:传值调用和传址调用;传值调用分为:传值调用和传址调用;例例4.3#include void swap1(int x,int y)int temp;temp=x;x=y;y=temp;/形参值交换形参值交换 cout“x=x“y=yendl;void main()int a(5),b(9);swap1(a,b);cout“a=a“b=bendl;a=5,b=9x=9,y=5 将实参的地址值赋给对应的形参指针,使将实参的地址值赋给对应的形参指针,使形参指针指向实参;形参指针指向实参;经过改动形参所指向的变量值来影响实参!经过改动形参所指向的变量值来影响实参!实参:地址值指针实参:地址值指针形参:指针形参:指针 2.传址调用传址调用一、函数的传值调用一、函数的传值调用 1.传值调用传值调用例例4.4#include void swap2(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;/形参指针所指向的变量值交换形参指针所指向的变量值交换 cout“x=*x“y=*yendl;void main()int a(5),b(9);swap2(&a,&b);cout“a=a“b=bendl;a=9,b=5x=9,y=5二、函数的援用调用二、函数的援用调用/C+特征特征 将实参变量名赋给对应的形参援用,相当于将实参变量名赋给对应的形参援用,相当于在被调用函数中运用了实参的别名在被调用函数中运用了实参的别名;经过改动援用来直接改动对应的实参值经过改动援用来直接改动对应的实参值;援用调用比传址调用更直接。援用调用比传址调用更直接。形参:援用形参:援用实参:变量名实参:变量名q 援用是变量的别名援用是变量的别名q 对援用的操作就是对被援用的变量的操作对援用的操作就是对被援用的变量的操作例例4.5#include void swap3(int&x,int&y)int temp;temp=x;x=y;y=temp;/形参援用值交换形参援用值交换 cout“x=x“y=yendl;void main()int a(5),b(9);swap3(a,b);cout“a=a“b=bendl;a=9,b=5x=9,y=5形参形参:援用援用实参实参:变量变量4.3 4.3 函数的参数函数的参数一、函数参数的求值顺序一、函数参数的求值顺序C+没有规定函数调用时实参的求值顺序,没有规定函数调用时实参的求值顺序,各编译器自行规定;各编译器自行规定;当实参表达式中带有副作用的运算符时,当实参表达式中带有副作用的运算符时,能够产生由于求值顺序不同而呵斥的二义能够产生由于求值顺序不同而呵斥的二义性;性;例例4.6#include int add(int x,int y)return x+y;void main()int x(4),y(6);int z=add(+x,x+y);coutzendl;int t=+x;int z=add(t,x+y);二、设置函数参数的默许值二、设置函数参数的默许值C+允许在函数阐明或定义时为形参指定允许在函数阐明或定义时为形参指定默许值;默许值;按从右至左的顺序设置参数的默许值;按从右至左的顺序设置参数的默许值;函数调用,实参与形参结合时:函数调用,实参与形参结合时:假设实参数目缺乏,那么运用形参默许假设实参数目缺乏,那么运用形参默许值;值;假设给定实参值,那么运用给定的实参假设给定实参值,那么运用给定的实参值。值。例例4.7#include void fun(int a=1,int b=3,int c=5)couta=a,b=b,c=cendl;void main()fun();fun(7);fun(7,9);fun(7,9,11);a=1,b=3,c=5a=7,b=3,c=5a=7,b=9,c=5a=7,b=9,c=11默许值默许值函数定义函数定义例例4.8#include int m(8);int add_int(int x,int y=7,int z=m);void main()int a(5),b(15),c(20);int s=add_int(a,b);coutsendl;int add_int(int x,int y,int z)return x+y+z;函数声明函数声明函数定义函数定义28 按自右至左的顺序设置参数的默许值;按自右至左的顺序设置参数的默许值;默许参数在函数声明中提供;默许参数在函数声明中提供;既有函数声明又有函数定义时,定义既有函数声明又有函数定义时,定义中不允许默许参数;中不允许默许参数;例例4.8 假设只需函数定义,默许参数才可以假设只需函数定义,默许参数才可以出如今函数定义中。出如今函数定义中。例例4.7v 设置参数默许值应留意的问题:设置参数默许值应留意的问题:三、运用数组作函数参数三、运用数组作函数参数 1.形参和实参都用数组形参和实参都用数组#includeint a8=1,3,5,7,9,11,13;void fun(int b,int n)for(int i=0;in-1;i+)b7+=bi;void main()int m=8;funa,m;couta7endl;例例4.949实参实参形参形参 2.形参和实参都用指针形参和实参都用指针#includeint a8=1,3,5,7,9,11,13;void fun(int*pa,int n)/指针指针pa指向实参数组指向实参数组 for(int i=0;in-1;i+)*(pa+7)+=*(pa+i);void main()int m=8;funa,m;couta7endl;例例4.1049实参实参 3.实参用数组名形参用援用实参用数组名形参用援用#includetypedef int array8;/int a8=1,3,5,7,9,11,13;array a=1,3,5,7,9,11,13;void fun(array&b,int n)/为实参数组起别名为实参数组起别名b for(int i=0;in-1;i+)b7+=bi;/对对b操作即对实参数组操作操作即对实参数组操作void main()int m=8;funa,m;couta7endl;例例4.1149实参实参4.4 4.4 内联函数内联函数一、内联函数的引入一、内联函数的引入引入内联函数是为理处理函数调用时的引入内联函数是为理处理函数调用时的效率问题;效率问题;编译时,用内联函数的函数体交换内联编译时,用内联函数的函数体交换内联函数的调用表达式普通函数在运转时函数的调用表达式普通函数在运转时被调用;被调用;内联函数是以目的代码的添加为代价来内联函数是以目的代码的添加为代价来换取时间的节省。换取时间的节省。二、内联函数的定义二、内联函数的定义 inline ()#include inline int power(int x)return (x)*(x);void main()for(int i=1;i=10;i+)int p=power(i);couti“*i“=pendl;例例4.12 内联函数的定义必需出如今内联函数内联函数的定义必需出如今内联函数第一次被调用前;第一次被调用前;内联函数体内不允许用循环语句和开内联函数体内不允许用循环语句和开关语句;关语句;类构造中一切在类阐明内部定义的函类构造中一切在类阐明内部定义的函数都是内联函数。数都是内联函数。v 运用内联函数时应留意:运用内联函数时应留意:4.5 4.5 函数重载函数重载 函数重载是指同一函数名对应多个函数函数重载是指同一函数名对应多个函数实现;实现;函数重载时,要求同名函数在参数个数函数重载时,要求同名函数在参数个数上不同,或参数类型上不同;上不同,或参数类型上不同;函数调用时,系统根据调用函数的实参函数调用时,系统根据调用函数的实参情况选择某个函数实现。情况选择某个函数实现。一、参数类型不同的函数重载一、参数类型不同的函数重载#include int add(int,int);double add(double,double);void main()coutadd(5,10)endl;coutadd(5.0,10.5)endl;int add(int x,int y)return x+y;double add(double a,double b)return a+b;例例4.13二、参数个数不同的函数重载二、参数个数不同的函数重载#include int min(int a,int b)return ab?a:b;int min(int a,int b,int c)int t=min(a,b);return min(t,c);void main()coutmin(5,4,9)endl;coutmin(-2,0)endl;例例4.144.6 4.6 函数的嵌套和递归函数的嵌套和递归调用调用一、函数的嵌套调用一、函数的嵌套调用 main函数函数调用调用a函数函数终了终了 b函数函数 a函数函数调用调用b函数函数q 在调用一个函数的过程中,又调用另一个函数在调用一个函数的过程中,又调用另一个函数例例4.15#includeconst int k=4,n=6;int sum(int k,int n),powers(int m,int n);void main()coutsum(k,n)endl;int sum(int k,int n)/求求n个数的个数的k次幂之和次幂之和 for(int i=1,sum=0;i=n;i+)sum+=powers(i,k);return sum;int powers(int i,int k)/求求i的的k次幂次幂 for(int j=1,p=1;j=k;j+)p*=i;return p;二、函数的递归调用二、函数的递归调用调用一个函数的过程中又直接或间接地调调用一个函数的过程中又直接或间接地调用该函数本身;用该函数本身;1.含义含义2.特点特点每次分解出的新问题是原问题的简化的每次分解出的新问题是原问题的简化的子问题;子问题;最终分解出的新问题是一个知解;最终分解出的新问题是一个知解;程序简约明晰,可读性强;程序简约明晰,可读性强;3.过程过程q 回归:从知条件出发,逐一求值回归,回归:从知条件出发,逐一求值回归,q 最终达递推开场处;最终达递推开场处;q 递推:原问题不断分解为新的子问题,递推:原问题不断分解为新的子问题,q 最终达递归终了条件最终达递归终了条件(知知);0!=1(知知)3!=3*2!2!=2*1!1!=1*0!递推递推递推递推递推递推1!=1*1=12!=2*1!=2*1=23!=3*2!=3*2=6回归回归回归回归回归回归例:例:例例4.16#include long int fac(int n);void main()int n;coutn;long fa=fac(n);coutn!=faendl;long int fac(int n)long int p;if(n=0)p=1;else p=n*fac(n-1);return p;例例4.17#include const int N=8;long fibo(int n);void main()long f=fibo(N);coutfendl;long fibo(int n)if(n=1)return 0;else if(n=2)return 1;else return fibo(n-1)+fibo(n-2);4.7 4.7 作用域作用域一、标识符的作用域规那么一、标识符的作用域规那么标识符只能在其阐明或定义的范围内可见,标识符只能在其阐明或定义的范围内可见,在该范围之外不可见!在该范围之外不可见!“可见即可以进展存取或访问;可见即可以进展存取或访问;标识符的阐明和定义不完全一样;标识符的阐明和定义不完全一样;定义一个标识符总是在一定范围内定义的,定义一个标识符总是在一定范围内定义的,作用范围有大有小作用范围有大有小;二、作用域的种类二、作用域的种类1.程序级工程级最大程序级工程级最大作用域:组成程序的一切文件;作用域:组成程序的一切文件;包括:外部变量和外部函数;包括:外部变量和外部函数;2.文件级文件级作用域:定义该标识符的文件内;作用域:定义该标识符的文件内;包括:外部静态类变量和内部函数;包括:外部静态类变量和内部函数;3.函数级函数级作用域:定义该标识符的函数体内;作用域:定义该标识符的函数体内;包括:函数形参、函数内的自动类变量、包括:函数形参、函数内的自动类变量、内部静态类变量、语句标号;内部静态类变量、语句标号;4.块级最小块级最小定义在分程序中、定义在分程序中、if语句、语句、switch语句中语句中以及循环体中的自动类变量和内部静态以及循环体中的自动类变量和内部静态类变量。类变量。二、作用域的种类二、作用域的种类三、重新定义标识符作用域三、重新定义标识符作用域1.在标识符作用域的某个子范围内可以重新在标识符作用域的某个子范围内可以重新定义该标识符!定义该标识符!void fun()int a;/函数体内函数体内 float a;/分程序内分程序内 2.原定义的标识符在子范围内不可见,但仍原定义的标识符在子范围内不可见,但仍存在暂时被隐藏;存在暂时被隐藏;#includevoid main()int a(5),b(7),c(10);couta b cendl;int b(8);float c(8.8);couta b cendl;a=b;int c=b;couta b cendl;couta b cendl;couta b cendl;5 7 105 8 8.88 8 88 8 8.88 7 10例例4.18#include void main()int x(3);for(;x0;x-)int x(5);/重新定义变量重新定义变量x,作用域作用域:块级块级coutx ;coutendlxendl;5 5 5 0例例4.191.部分变量部分变量1)作用域:函数级和块级;作用域:函数级和块级;2)包括:自动类变量、内部静态变量和函数形参;包括:自动类变量、内部静态变量和函数形参;q 自动类变量自动类变量autoautoq 存放器类变量存放器类变量registerregisterv 内部静态类变量内部静态类变量staticstaticv 定义在函数体内或分程序内,定义时有默许值定义在函数体内或分程序内,定义时有默许值;v 生存期长生存期长,可见性与存在性不一致可见性与存在性不一致(作用域外不作用域外不可见但仍存在,回到作用域仍保管原值可见但仍存在,回到作用域仍保管原值););例例4.20#include void other();void main()int a(3);register int b(5);static int c;couta=a,b=b,c=cendl;other();other();void other()int a(5);static int b(12);/内部静态类变量内部静态类变量 a+10;b+=20;couta=a,b=bendl;a=3,b=5,c=0 a=5,b=32 a=5,b=522.全局变量全局变量1)作用域:程序级和文件级;作用域:程序级和文件级;2)包括:外部变量和外部静态类变量;包括:外部变量和外部静态类变量;v 外部变量的定义外部变量的定义v 定义在函数体外,定义时不加任何存储类阐定义在函数体外,定义时不加任何存储类阐明;明;v 外部变量的阐明声明外部变量的阐明声明v 用阐明符用阐明符“extern对外部变量进展阐明对外部变量进展阐明v 运用后定义的外部变量,在运用前必需阐明;运用后定义的外部变量,在运用前必需阐明;v 在一个文件中运用另一个文件定义的外部变量,在一个文件中运用另一个文件定义的外部变量,必需阐明;必需阐明;v 一个外部变量只能定义一次,但可以阐明多次。一个外部变量只能定义一次,但可以阐明多次。int add(int a,int b)int s=a+b;return s;void main()extern int x,y;/外部变量外部变量阐明阐明 coutadd(x,y)endl;int x(20),y(5);/外部变量外部变量定义定义运用后定义的外部变量运用后定义的外部变量必需提早阐明必需提早阐明例:例:例例4.21#include void fun1(),fun2(),fun3();/函数阐明函数阐明int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;文件:文件:main.cpp#includestatic int i;/外部静态变量:文件级外部静态变量:文件级void fun1()i=50;coutfun1():i(static)=iendl;1fun1():i(static)=50文件:文件:file1.cpp3)fun2():i(auto)=154)fun2():i(extern)=20#includevoid fun2()int i=15;/自动类变量:函数级自动类变量:函数级 coutfun2():i(auto)=iendl;if(i)extern int i;/声明外部变量:程序级声明外部变量:程序级 coutfun2():i(extern)=iendl;extern int i;void fun3()i=30;coutfun3():i(extern)=iendl;if(i)int i=10;coutfun3():i(auto)=iendl;文件:文件:file2.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;2main():i=20文件:文件:main.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;文件:文件:main.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;5main():i=20文件:文件:main.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;文件:文件:main.cpp#includevoid fun2()int i=15;/自动类变量:函数级自动类变量:函数级 coutfun2():i(auto)=iendl;if(i)extern int i;/声明外部变量:程序级声明外部变量:程序级 coutfun2():i(extern)=iendl;extern int i;/声明外部变量:程序级声明外部变量:程序级 void fun3()i=30;coutfun3():i(extern)=iendl;if(i)int i=10;/自动类变量:块级自动类变量:块级 coutfun3():i(auto)=iendl;6)fun3():i(extern)=307)fun3():i(auto)=10文件:文件:file2.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;8main():i=30文件:文件:main.cpp例例4.21#include void fun1(),fun2(),fun3();int i(5);/外部变量:程序级外部变量:程序级void main()i=20;fun1();coutmain():i=iendl;fun2();coutmain():i=iendl;fun3();coutmain():i=iendl;8main():i=30文件:文件:main.cpp1.内部函数内部函数 内部函数只在定义它的文件中可用!内部函数只在定义它的文件中可用!static()2.外部函数外部函数extern()外部函数的作用域是整个程序!外部函数的作用域是整个程序!一、一、C+系统函数概述系统函数概述了解所用的了解所用的C+系统提供哪些系统函数;系统提供哪些系统函数;知道某系统函数的阐明放在哪个头文件中;知道某系统函数的阐明放在哪个头文件中;调用一个函数时,要清楚其功能、参数和调用一个函数时,要清楚其功能、参数和前往值。前往值。二、字符串处置函数二、字符串处置函数q 调用字符串处置函数时,要包含头文件调用字符串处置函数时,要包含头文件string.hstring.h1.字符串长度函数字符串长度函数strlen()int strlen(const char *s);前往字符一个字符串的长度,空字符不计在内前往字符一个字符串的长度,空字符不计在内2.字符串拷贝函数字符串拷贝函数strcpy()char*strcpy(char*s1,char*s2);char*strncpy(char*s1,char*s2,int n);实现字符串的复制,前往实现字符串的复制,前往s1s1的地址的地址3.字符串衔接函数字符串衔接函数strcat()char*strcat(char*s1,char*s2);char*strncat(char*s1,char*s2,int n);4.字符串比较函数字符串比较函数strcmp()int strcmp(const char*s1,const char*s2);int strncmp(const char*s1,const char*s2,int n);前往值整数:大于前往值整数:大于0、等于、等于0、小于、小于0 函数的定义和阐明函数的定义和阐明 函数的调用传值、传址、援用函数的调用传值、传址、援用 嵌套调用和递归调用嵌套调用和递归调用 函数的参数默许值函数的参数默许值 内联函数内联函数inlineinline 函数重载参数个数、类型不同函数重载参数个数、类型不同 作用域作用域4 4级级 C+C+系统函数字符串处置函数系统函数字符串处置函数实实 验验 一一调试调试例例4.8、例例4.13,掌握参数默许值的设置,掌握参数默许值的设置和函数重载;和函数重载;编制程序,经过调用援用作参数的函数,实现编制程序,经过调用援用作参数的函数,实现两个字符串的交换。两个字符串的交换。测试:测试:char a50=“hello;char b50=“how are you;编写程序验证哥德巴赫猜测:任何一个充分大编写程序验证哥德巴赫猜测:任何一个充分大的偶数的偶数(=6)总可以表示成两个素数之和。总可以表示成两个素数之和。#includevoid f(int j);void main()for(int i(1);i=4;i+)f(i);void f(int j)static int a(10);/内部静态类变量内部静态类变量 int b(1);/自动类变量自动类变量 b+;couta+b+j=a+b+jendl;a+=10;三三(3)10+2+1=1320+2+2=2430+2+3=3540+2+4=46三三(6)(6)传址调用传址调用#includevoid fun(int,int,int*);void main()int x,y,z;fun(5,6,&x);fun(7,x,&y);fun(x,y,&z);coutx,y,zendl;void fun(int a,int b,int*c)b=b+a;*c=b-a;666实参:实参:地址地址形参:形参:指针指针三三(7)(7)函数参数的默许值函数参数的默许值#includeint add(int x,int y=8);void main()int a(5);coutsum1=add(a)endl;coutsum2=add(a,add(a)endl;coutsum3=add(a,add(a,add(a)endl;int add(int x,int y)return x+y;sum1=13sum2=18sum3=23函数声明函数声明三三(10)(10)援用作函数前往值援用作函数前往值#includeint&f(int n,int s)/函数类型为函数类型为“援用援用 int&m=sn;return m;void main()int s=5,4,3,2,1,0;f(3,s)=10;/前往值前往值“援用作赋值语句左值援用作赋值语句左值 coutf(3,s)endl;10 s=5,4,3,10,1,0援用援用 float&fun(float r)float temp;temp=r*r*3.14;return temp;void main()fun(1.5)=12.4;v不是一切前往的援用都可以不是一切前往的援用都可以作为作为“左值计算!左值计算!v前往不在作用域范围内的变前往不在作用域范围内的变量的援用,错误!量的援用,错误!问题:援用作函数前往值问题:援用作函数前往值部分变量部分变量 float temp;float&fun(float r)temp=r*r*3.14;return temp;void main()fun(1.5)=12.4;/此处此处temp“可见可见 问题:援用作函数前往值问题:援用作函数前往值全局变量全局变量三三(12)(12)函数重载函数重载#includevoid ff(int),ff(double);void main()float a(88.18);ff(a);char b(a);ff(b);void ff(double x)coutff(double):xendl;void ff(int x)coutff(int):xendl;ff(double):88.18ff(int):97三三 1.581114三三 2.25三三 4.6,11三三 5.5!+4!+3!+2!+1!=153三三 8.720三三 9.a=5,b=8a=8,b=5三三 11.u2019abcd
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!