




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 函数 C+程序设计网络与计算中心基础教研室2本章内容在结构化程序设计中,函数是将任务进行模块划分的基本单位。一个函数实现一项功能。在面向对象程序设计中,函数是对数据的一项操作,也是实现一项功能。网络与计算中心基础教研室33.5 作用域与标识符的可见性 3.4 函数调用机制 3.3 全局变量和局部变量 3.2 函数的参数传递,返回值及函数声明 3.9 头文件与多文件结构 3.6 存储类型与标识符的生命期 3.8 函数的一些高级议题 3.7 函数的递归调用 本章内容3.1 函数的定义与调用9/20/2022网络与计算中心基础教研室43.1 函数的定义与调用3.1.1 函数概述3.1.2 函
2、数定义3.1.3 函数调用网络与计算中心基础教研室5函数是C+程序的基本组成模块。通过函数,可以把一个复杂任务分解成为若干个易于解决的小任务。充分体现逐步细化的设计思想。组成C+程序的若干函数中,有一个称为main()(Winmain())函数,是程序执行的入口,它可以调用其他函数,但不可以被调用。而其他一般函数既可以调用也可以被调用。函数概念的引入:入口函数:3.1.1 函数概述网络与计算中心基础教研室6图3.1 函数调用层次关系main ( )fun2( )fun1( )fun3( )funa( )funb( )func( )3.1.1 函数概述程序执行的入口网络与计算中心基础教研室7 库
3、函数和自定义函数:库函数或标准函数,是由编译系统预定义的,如一些常用的数学计算函数、字符串处理函数、图形处理函数、标准输入输出函数等。库函数都按功能分类,集中说明在不同的头文件中。用户只需在自己的程序中包含某个头文件,就可直接使用该文件中定义的函数。用户根据需要将某个具有相对独立功能的程序定义为函数,称自定义函数。3.1.1 函数概述网络与计算中心基础教研室8函数头函数体数据类型 函数名(形式参数表) 语句序列 定义函数返回值的数据类型。若无返回值,void函数返回值由 return 语句给出3.1.2 函数的定义函数运行时需要的数据,由主调函数提供。若无,void或者省略函数体可以为空,称为
4、空函数。 网络与计算中心基础教研室93.1.2 函数的定义 无参函数/打印一个表头void TableHead ( ) cout*endl; cout* example *endl; cout*endl;函数头函数的数据类型定义了返回值的数据类型int input ( ) /输入满足要求的数据 int n; cout输入一个大于5的整数:n; while(n=b ? a : b); 有参函数的参数表中列出所有形式参数的类型和参数名称。各参数即使类型相同也必须分别加以说明。 形式参数简称形参,只能是变量名,不允许是常量或表达式。 /延时一段时间void delay(long n) int i;
5、for (i=0; in; i+); 数据类型 函数名 ( 参数类型1形式参数1, 参数类型2形式参数2, )函数体有参函数3.1.2 函数的定义网络与计算中心基础教研室12问题:定义函数时究竟哪些变量应当作为函数的参数?哪些应当定义在函数体内?原则:函数在使用时被看成“黑匣子”,除了输入输出外,其他部分可不必关心。 函数头即用来反映函数的使用接口,明确了“黑匣子”的输入输出部分,输出就是函数的返回值,输入就是参数。 只有那些在函数功能上起自变量作用的变量才必须作为参数定义在参数表中;函数体中具体描述“如何做”,因此除参数之外的为实现算法所需用的变量应当定义在函数体内。 C+中不允许函数的嵌套
6、定义,即不允许在一个函数中定义另一个函数。提示网络与计算中心基础教研室133.1.3 函数的调用函数调用所谓函数调用,就是使程序转去执行函数体。 无参函数的调用格式: 函数名( ) 有参函数的调用格式: 函数名(实际参数表)实际参数简称实参,用来将实际参数的值传递给形参,因此可以是常量、具有值的变量或表达式。在C+中,除了主函数外,其他任何函数都不能单独作为程序运行。任何函数功能的实现都是通过被主函数直接或间接调用进行的。网络与计算中心基础教研室14【例3.1】 输入两个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。main( )函数调用max(2.5,4.7 )函数max(2.
7、5,4.7 )return 4.7 主程序后续语句程序如下:#include using namespace std;float max(float a, float b) return(a=b ? a : b);int main()float x, y;cout输入两个实数:xy;coutx和y中较大数为max(x, y)endl;return 0;9/20/2022网络与计算中心基础教研室153.2 函数的参数传递、返回值及函数声明3.2.1 函数的参数传递及传值调用 3.2.2 函数返回值 3.2.3 函数声明网络与计算中心基础教研室16 3.2.1 函数的参数传递及传值调用 传值调用和
8、引用调用:按照参数形式的不同,C+有两种调用方式:传值调用和引用调用。传值调用传递的是实参的值,本章介绍传值调用网络与计算中心基础教研室17 3.2.1 函数的参数传递及传值调用 传值调用:将实参的值复制给形参,在函数中参加运算的是形参,而实参不会发生任何改变。传值调用起了一种隔离作用。网络与计算中心基础教研室18【例3.2】 实参和形参对应关系的示例。调用power(4.6,3 )函数power(4.6,3 )return 97.336 主程序后续语句n = 3x = 4.6c = afloat power(float x, int n) /求x的n次幂 float p=1; while(n
9、-) p*=x; return p; int main() int n=3; float x=4.6; char c=a; coutpower(x,n)=power(x,n)endl; coutpower(c,n)=power(c,n)endl; coutpower(n,x)=power(n,x)endl; return 0;网络与计算中心基础教研室19【例3.2】 实参和形参对应关系的示例。调用power(a,3 )函数power(97,3 )return912673 主程序后续语句n = 3x = 4.6c = afloat power(float x, int n) /求x的n次幂 fl
10、oat p=1; while(n-) p*=x; return p; int main() int n=3; float x=4.6; char c=a; coutpower(x,n)=power(x,n)endl; coutpower(c,n)=power(c,n)endl; coutpower(n,x)=power(n,x)endl; return 0;网络与计算中心基础教研室20【例3.2】 实参和形参对应关系的示例。调用power(3,4.6 )函数power(3,4 )return81主程序后续语句n = 3x = 4.6c = afloat power(float x, int n
11、) /求x的n次幂 float p=1; while(n-) p*=x; return p; int main() int n=3; float x=4.6; char c=a; coutpower(x,n)=power(x,n)endl; coutpower(c,n)=power(c,n)endl; coutpower(n,x)=power(n,x)endl; return 0;网络与计算中心基础教研室213.2.2 函数返回值 return语句的作用: 返回函数值 不再执行后续语句,程序控制返回调用点 一个函数体内可以有多个return 语句 表达式返回值的类型与函数类型不相同时,自动强制
12、转换成函数的类型return语句的格式:return 表达式;【例3.3】设计函数,根据三角形的三边长求面积。如果不能构成三角形,给出提示信息。分析:函数为计算三角形面积,一般三角形返回面积值,若不能构成三角形则返回-1。设计一个主函数完成函数测试。根据返回值情况输出相应结果。网络与计算中心基础教研室22【例3.3】程序:float TriangleArea(float a, float b, float c) if (a+b=c)|(a+c=b)|(b+c=a) return -1; float s; s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)
13、;int main() float a, b, c, area; cout输入三角形三边a,b,c:abc; area = TriangleArea(a, b, c); if(area = -1) cout(a,b, c)不能构成三角形!endl; else cout三角形(a,b,c)面积为areaendl; return 0;#include #include using namespace std;网络与计算中心基础教研室23讨论: -函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一定操作,应将返回值类型定义为void ,函数体内可以没有return语句,当需要在
14、程序指定位置退出时,可以在该处放置一个:return ;3.2.2结束3.2.2 函数返回值网络与计算中心基础教研室24【例3.3】程序:#include #include using namespace std;output(a, b, c, TriangleArea(a, b, c);float TriangleArea(float a, float b, float c) if (a+b=c)|(a+c=b)|(b+c=a) return -1; float s; s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c) ;void output(floa
15、t a, float b, float c, float area) if(area = -1) cout(a,b, c)不能构成三角形!endl; return; cout三角形(a,b,c)面积为:areaendl; return;int main() float a, b, c, area; cout输入三角形三边a,b,c:abc; area = TriangleArea(a, b, c); output(a, b, c, area); return 0;网络与计算中心基础教研室253.2.3 函数声明语法上对程序文件中函数的排列次序要求满足先定义后使用。对于函数,只要在调用之前作函数
16、声明(Function Declaration),则函数定义放在任何位置程序都能正确编译运行。 函数声明的引入:函数声明的格式: 函数声明是一条以分号结束的语句: 数据类型 函数名(形式参数表); 网络与计算中心基础教研室26例如【例3.3】中求三角形面积的函数声明为:float TriangleArea(float a, float b, float c);或float TriangleArea(float, float, float);但下面的函数原型是错误的:int TriangleArea(float, float, float);/错误,返回值类型不同float TriangleAr
17、ea(int, int, int); /错误,参数类型不同float TriangleArea(float, float);/错误,参数个数不同float TriangleArea(float a, float b, float c) if (a+b=c)|(a+c=b)|(b+cchoice; if (choice=4) continue; if (choice = 0) break; switch(choice) case 1: account_report(); break; case 2: engineering_report(); break; case 3: marketing_r
18、eport(); break; while(1); return 0;#include using namespace std;网络与计算中心基础教研室28void menu_print() cout系统功能:endl; cout1 财务报表endl; cout2 工程报表endl; cout3 市场报表endl; cout0 退出endl; cout选择业务序号:; void account_report() /生成财务报表 cout生成财务报表endlendl;void engineering_report()/生成工程报表 cout生成工程报表endlendl;void marketin
19、g_report()/生成市场报表; cout生成市场报表endlendl;网络与计算中心基础教研室293.2.3 函数声明【例3.4】 输出所有满足下列条件的正整数m:10m1000且m、m2、m3均为回文数。分析:回文指左右对称的序列。如121、353等就是回文数。判断整数是否回文数用函数实现,其思想是将该数各位拆开后反向组成新的整数,如果该整数与原数相等则为回文数。m m*m m*m*m11 121 1331101 10201 1030301111 12321 1367631 运行结果:网络与计算中心基础教研室30bool palindrome(int); /函数声明int main()
20、 int m; coutsetw(10)msetw(20)m*m setw(20)m*m*mendl; for(m=11; m1000; m+) if(palindrome(m)&palindrome(m*m)&palindrome(m*m*m) coutsetw(10)msetw(20)m*m setw(20)m*m*m0); for(j=0; ji; j+) n=n*10 + digitj; return (n=m);#include #include using namespace std;9/20/2022网络与计算中心基础教研室313.3 全局变量和局部变量3.3.1 变量的存储机制
21、与C+的内存布局 3.3.2 全局变量 3.3.3 局部变量网络与计算中心基础教研室323.3.1 变量的存储机制与C+的内存布局自由存储区 (动态数据) 操作系统为一个C+程序的运行所分配的内存分为四个区域:栈区(函数局部数据)全局数据区(全局变量、静态变量)代码区(程序代码)(main函数局部数据)网络与计算中心基础教研室333.3.1 变量的存储机制与C+的内存布局自由存储区 (动态数据) 操作系统为一个C+程序的运行所分配的内存分为四个区域:栈区(函数局部数据)全局数据区(全局、静态变量)代码区(程序代码)(main函数局部数据)存放程序代码,即程序中各个函数的代码块存放全局数据和静态
22、数据;分配该区时内存全部清零,变量的所有字节等效初始化为全存放局部变量,如函数中的变量等;分配栈区时不处理内存,即变量取随机值存放与指针相关的动态数据;分配自由存储区时也不处理内存,变量也取随机值。网络与计算中心基础教研室34 3.3.2 全局变量 在所有函数之外定义的变量称为全局变量。全局变量存放在全局数据区,因编译器自动将该区清为全0,如果用户在定义时不显式给出初始化值,则等效初始化为全0 。全局变量可定义在程序开头,也可定义在中间位置,该全局变量在定义处之后的任何位置都是可以访问的。网络与计算中心基础教研室35打印200调用func( )函数func( )200*2=400打印400n=
23、100n=100*2=200【例3.5】 多个函数使用全局变量的例子。int n=100;void func() n*=2; int main() n*=2; coutnendl; func(); coutnendl; return 0;网络与计算中心基础教研室363.3.3 局部变量 定义在函数内或块内的变量称为局部变量。程序中使用的绝大多数变量都是局部变量。局部变量在程序运行到它所在的块时建立在栈中,该块执行完毕局部变量占有的空间即被释放。故亦称为自动变量。局部变量在定义时可加修饰词auto,但通常省略。局部变量在定义时若未初始化,其值为随机数。网络与计算中心基础教研室37打印main()
24、中的t=3.5调用fun( )函数fun( )打印fun()中的t=5 打印main()中的t=3.5t = 3.5t = 5【例3.6】 使用局部变量的例子。void fun() auto int t=5; / fun()中的局部变量,auto可省略 coutfun()中的t=tendl;int main() float t=3.5; /main()函数中的局部变量 coutmain()中的t=tendl; fun(); coutmain()中的t=tendl; return 0;9/20/2022网络与计算中心基础教研室383.4 函数调用机制局部变量占用的内存是在程序执行过程中“动态”地
25、建立和释放的这种“动态”是通过栈由系统自动管理进行的。网络与计算中心基础教研室39局部变量占用的内存是在程序执行过程中“动态”地建立和释放的。这种“动态”是通过栈由系统自动管理进行的。函数调用机制 函数调用过程:(1)建立栈空间;(2)保护现场:主调函数运行状态和返回地址入栈; (3)为被调函数中的局部变量分配空间,完成参数传递; (4)执行被调函数函数体; (5)释放被调函数中局部变量占用的栈空间;(6)恢复现场:取主调函数运行状态及返回地址,释放栈空间; (7)继续主调函数后续语句。网络与计算中心基础教研室40void fun1(int, int);void fun2(float);int
26、 main() int x=1, y=2; fun1(x, y); return 0;void fun1(int a, int b) float x=3; fun2(x);void fun2(float y) int x; x栈顶栈底y3fun2()fun1()运行状态及返回地址x3a1b2fun1()main()运行状态及返回地址y2x1main()操作系统运行状态及返回地址3.4 函数调用机制 此图例说明在程序执行过程中怎样通过栈“动态”地建立和释放局部变量占用的内存的注意函数参数的压栈顺序9/20/2022网络与计算中心基础教研室413.5 作用域与标识符的可见性作用域:指标识符能够被使
27、用的范围。只有在作用域内标识符才可以被访问(称为可见)。作用域分为局部域和文件域(全局域),其中局部域包括块域和函数声明域。任何标识符作用域的起始点均为标识符说明处。网络与计算中心基础教研室42 块指一对大括号括起来的程序段。块中定义的标识符,作用域在块内。复合语句是一个块。复合语句中定义的标识符,作用域仅在该复合语句中。函数也是一个块。函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域。块的引入:块 域网络与计算中心基础教研室43 b = 5a = 335a=3 b=5a=5 b=3【例3.7】 输入两数,按从大到小的顺序保存,并输出结果。结果栈 t =
28、3 int main() int a, b; /具有函数域 cout输入两整数:ab; cout“a=atb=b=a)int t; /具有块域 t=a; a=b; b=t; /交换a,b的值 couta=atb=bendl; return 0;上述程序若在最后一个cout语句处增加:couttendl;则编译时会提示错误,因为变量t的作用域只在if语句中,其它地方不可见。块 域网络与计算中心基础教研室44由VC+运行,结果如下:输入两整数:3 5调用前:实参a=3,b=5调用中交换前:形参a=3,b=5交换后:形参a=5,b=3调用后:实参a=3,b=5 交换失败操作系统运行状态及返回地址ma
29、in()3a5bmain()运行状态及返回地址swap()3a5b3t35 3.5.1 块域局部变量具有局部作用域,使得程序在不同块中可以使用同名变量。这些同名变量各自在自己的作用域中可见,在其它地方不可见【例3.8】设计函数完成两数交换,用主函数进行测试。网络与计算中心基础教研室 200 3001100 500 600100 500 200 300200+300=500【例3.9】 显示同名变量可见性。#include using namespace std;int n=100;int main() int i=200, j=300; coutntitjendl; /内部块 int i=50
30、0, j=600,n; n=i+j; coutntitjendl; /输出局部变量n cout:nendl;/输出全局变量n n=i+j;/修改全局变量 coutntitjendl; return 0; 对于块中嵌套其它块的情况,如果嵌套块中有同名局部变量,服从局部优先原则。 在块内可以通过域运算符“:”访问同名的全局变量。网络与计算中心基础教研室46 函数声明不是定义函数,在作函数声明时,其中的形参作用域只在声明中,即作用域结束于右括号。正是由于形参不能被程序的其他地方引用,所以通常只要声明形参个数和类型,形参名可省略。3.5.2 函数声明域 网络与计算中心基础教研室473.5.3 文件域文
31、件域也称全局域。定义在所有函数之外的标识符作用域为从定义处到整个源文件结束,即文件域。文件中定义的全局变量和函数的作用域为文件域。9/20/2022网络与计算中心基础教研室483.6 存储类型与标识符的生命期 3.6.1 存储类型3.6.2 生命期网络与计算中心基础教研室493.6 存储类型与标识符的生命期 存储类型决定标识符的存储区域,即编译系统在不同区域为不同存储类型的标识符分配空间。由于存储区域不同,标识符的生命期也不同。所谓生命期,指的是标识符从获得空间到空间释放之间的期间,标识符只有在生存期中、并且在其自己的作用域中才能被访问。网络与计算中心基础教研室50用auto和register
32、修饰的称为自动存储类型用static修饰的称为静态存储类型用extern修饰的称为外部存储类型。3.6.1 存储类型 存储类型的说明符autoregisterstaticextern网络与计算中心基础教研室51自动存储类型自动变量为用auto说明的变量,通常auto缺省。局部变量都是自动变量,生命期开始于块的执行,结束于块的结束,其原因是自动变量的空间分配在栈中,块开始执行时系统自动分配空间,块执行结束时系统自动释放空间。故自动变量的生命期和作用域是一致的。3.6.1 存储类型 网络与计算中心基础教研室523.6.1 存储类型 静态存储类型static说明的变量称为静态变量。根据定义位置不同区
33、别局部静态变量和全局静态变量,也称内部静态变量和外部静态变量。静态变量存储在全局数据区,如果程序未显式给出初始化值,则等效初始化为全0。静态变量占有的空间要到整个程序执行结束才释放,故静态变量具有整个程序执行期间的生命期。网络与计算中心基础教研室53局部静态变量是定义在块中的静态变量,编译系统在全局数据区为其开辟空间并保存数据,如果显式给出初始化值,则在该块第一次执行时完成,且只进行一次。【例3.10】 自动变量与局部静态变量的区别3.6.1 存储类型 网络与计算中心基础教研室54【例3.10】 自动变量与局部静态变量的区别 int st() static int t=100; /局部静态变量
34、 t+; return t;int at() int t=100; /自动变量 t+; return t;int main() int i; for(i=0;i3;i+) coutat()t; coutendl; for(i=0;i5;i+) coutst()t; coutendl; return 0; i= 0 t= 100121011011013.6.1 存储类型 网络与计算中心基础教研室55i = 0t =10012101102103【例3.10】 自动变量与局部静态变量的区别 int st() static int t=100; /局部静态变量 t+; return t;int at(
35、) int t=100; /自动变量 t+; return t;int main() int i; for(i=0;i3;i+) coutat()t; coutendl; for(i=0;i3;i+) coutst()t; coutendl; return 0;3.6.1 存储类型 网络与计算中心基础教研室563.6.2 生命期静态生命期静态生命期指的是标识符从程序开始运行时就存在,具有存储空间,到程序运行结束时消亡,释放存储空间。具有静态生命期的标识符存放在全局数据区,如全局变量、静态全局变量、静态局部变量。具有静态生命期的标识符在未被用户初始化的情况下,系统会等效将其初始化为全0。网络与计
36、算中心基础教研室57 3.6.2 生命期 局部生命期在块中定义的标识符具有局部生命期,其生命期开始于该标识符定义处,结束于块的结束处。具有局部生命期的标识符存放在栈区。具有局部生命期的标识符如果未被初始化,其内容是随机的。具有局部生命期的标识符必定具有局部作用域;但反之不然,静态局部变量具有局部作用域,但却具有静态生命期。网络与计算中心基础教研室583.6.2 生命期动态生命期具有动态生命期的标识符存放在自由存储区,由特定的函数调用或运算来创建和释放如用new运算符(或调用malloc函数)为变量分配存储空间时,变量的生命期开始而用delete运算符(或调用free函数)释放空间或程序结束时,
37、变量生命期结束9/20/2022网络与计算中心基础教研室593.7 函数的递归调用 自己调用自己网络与计算中心基础教研室60可以看出是用阶乘定义阶乘,这种自己定义自己的方法称为递归定义。递归的引入 递归是一种描述问题的方法,或称算法。递归的思想可以简单地描述为“自己调用自己”。例如用如下方法定义阶乘:网络与计算中心基础教研室61递归定义的阶乘函数:fac(int n) int y; if (n=0 | n=1) y=1; else y=n*fac(n-1); return y;只要设计主函数调用阶乘函数,即可实现计算阶乘。递归的引入递归函数必须定义递归终止条件,避免无穷递归。网络与计算中心基础
38、教研室62 n=4cout4;y=4*fac(3);fac(4)=cout2;y=2*fac(1); n=2cout1;y=1;cout1;return 1; n=1 n=3cout3;y=3*fac(2);cout24;return 24;cout6;return 6;cout2;return 2;24递归的引入【例3.12】 求4!#include int fac(int n) int y; coutnt; if(n=0|n=1) y=1; else y=n*fac(n-1); coutyt; return y;int main() coutn4!=fac(4)endl; return o
39、;网络与计算中心基础教研室63递归过程分析递归函数的执行分为“递推”和“回归”两个过程这两个过程由递归终止条件控制,即逐层递推,直至递归终止条件,然后逐层回归。每次调用发生时都首先判断递归终止条件现场与返回地址第一层fac(4)域4n4*624y现场与返回地址第二层fac(3)域3n3*26y现场与返回地址第三层fac(2)域2n2*12y现场与返回地址第四层fac(1)域ny11存fac(1)返回值存fac(2)返回值存fac(3)返回值126fac(4)返回值=24main()域存fac(4)返回值249/20/2022网络与计算中心基础教研室643.8 函数的重载、内联及默认参数 3.8
40、.1 函数重载 3.8.2 默认参数3.8.3 内联函数网络与计算中心基础教研室653.8.1 函数重载 3.8.1 函数重载 重载的引入C+中,如果需要定义几个功能相似,而参数类型不同的函数,那么这样的几个函数可以使用相同的函数名,这就是函数重载例:求和函数对应不同的参数类型可以定义如下几个重载函数:int sum(int a, int b)double sum(double a, double b)float sum(float a, float b, float c)网络与计算中心基础教研室66因此在定义重载函数时必须保证参数类型不同,仅仅返回值类型不同是不行的。3.8.1 函数重载 重
41、载匹配规则(1)如果有严格匹配的函数,就调用该函数;(2)参数内部转换后如果匹配,调用该函数;(3)通过用户定义的转换寻求匹配。网络与计算中心基础教研室673.8.1 函数重载 3+5=调用sum(3,5 )函数sum(3,5 )return 8 2.2+5.6=调用sum(2.2,5.6 )函数double sum(2.2,5.6 )return 7.8 3.5+4+8=调用sum(3.5, 4, 8 )函数float sum(3.5, 4.0, 8.0 )return 15.5 结束87.815.5【例3.16】 重载函数的应用。int sum(int a,int b) return a+b;double sum(double a,double b) return a+b;float sum(float a,float b,float c) return a+b+c;int main() cout3+5=sum(3, 5) endl; cout2.2+5.6= sum(2.2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 移动阅读应用的内容策划与推广考核试卷
- 粮油产品故事营销与消费者情感共鸣考核试卷
- 肉制品加工业的市场战略规划考核试卷
- 海水养殖病害生物控制技术研究考核试卷
- 纺织鞋材的耐磨损性能评估考核试卷
- 聚苯乙烯纤维的化学性质和应用考核试卷
- 绿色供应链企业环保实践考核试卷
- 热电联产项目风险评估考核试卷
- 糖果与巧克力品牌故事与企业文化塑造考核试卷
- 球类生产环境保护与可持续发展考核试卷
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 【MOOC】机械原理-西北工业大学 中国大学慕课MOOC答案
- 一种基于STM32的智能门锁系统的设计-毕业论文
- 分红险、万能险销售资质考试真题模拟汇编(共763题)
- 鱼台工程运河杯汇报材料
- GB/T 16895.25-2022低压电气装置第7-711部分:特殊装置或场所的要求展览、展示及展区
- 《运营管理》案例库
- 煤矿安全监控系统设备管理报废制度
- 机关事业单位退休人员养老金领取资格确认表
- 第五届“国药工程杯”全国大学生制药工程设计竞赛
- 柔性主动防护网分项工程质量检验评定表
评论
0/150
提交评论