版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 教学内容: 8.1 概述 8.2 函数定义 8.3 函数返回值 8.4 函数的调用 8.5 变量的作用域与存储类别 8.6 函数的存储类别 第 8 章 函 数 教学要求: 1.掌握函数的定义和调用方式,以及形参与实参之间数据传递的规则。 2.掌握局部变量与全局变量、静态存储与动态存储变量的使用方法。 3. 掌握递归函数的定义与调用。 4.了解内部函数和外部函数的概念。 第 8 章 函 数 8.1 概 述1.函数分类(1) 库函数, C系统已提供的函数。例如: printf(); scanf(); sin(); putchar(); getchar();(2)主函数:main() (3)用户自
2、定义函数,函数名不能与主函数名或库函数名相同,函数体语句由用户自己编写。(4) 空函数, 函数体无语句。函数的另外分类方法: (1)有参函数 (2)无参函数: (3)有返回值函数 (4)无返回值函数 2.库函数分类(功能角度) (1) 数学函数,包括三角函数、指数等。 (2) 字符串、字符处理函数。 (3) 转换函数,用于字符或字符串的转换;在字符量和各类数字量(整型,实型等)之间进行转换;在大、小写之间进行转换。 (4) 目录路径函数,用于文件目录和路径操作。 (5) 诊断函数,用于内部错误检测。 (6) 字符屏幕和图形功能函数 (7) 输入输出函数,用于完成输入输出功能。 (8) 接口函数
3、,用于与DOS,BIOS和硬件的接口 3.函数的作用 (1) C编译系统可以对一个程序中的多个函数,分成若干个源程序分别进行编译,编译效率高 。所以,一个C程序又可以由若干个源文件组成。 (2)所有函数之间是互相独立的,即函数的定义不能嵌套定义。 (3) 一个C程序从运行主函数开始执行,到主函数运行终止,整个程序执行结束。 (4) 函数是构成C程序的基本单元,C语言是通过函数来实现模块化程序设计 。8.2 函 数 定 义1函数组成函数(含主函数)都是由函数说明和函数体两部分。(1)无参函数的一般形式: 函数类型 函数名( void ) 说明语句部分; 可执行语句部分; 注意:在旧标准中,函数可
4、以缺省参数表。但在新标准中,除主函数main()外,函数不可缺省参数表,如果不需要参数,则用“void”表示 。 函数体函数说明( 2 ) 有参函数的一般形式函数类型 函数名( 数据类型 参数1 ,数据类型 参数2 ) 说明语句部分; 可执行语句部分; 形式参数:将函数定义中的参数表称为形式参数表,简称形参表。与调用函数提供的实际参数区别。 实际参数:调用有参函数时,调用函数必须赋予这些参数实际的值,调用函数中的参数称为实际参数。( 3 ) 空函数其形式为: 函数类型 函数名(void) “空函数”既无参数、函数体为空的函数,什么操作也不做。其作用是在此处留一函数的位置,以便将来扩充功能之用。
5、函数名也在将来换取实际的函数名。2、函数定义说明: 在语言中,所有函数(包括主函数main())都是平行的、独立的。 在一个包含多个函数的程序中,一个函数的定义,可以放在程序中的任意位置,即可以放在主函数main()之前或放在主函数main()之后。 在一个函数的函数体内,不能再定义另一个函数,即函数不能嵌套定义。 函数之间允许互相调用,以可以嵌套调用。 例 8.1 在程序的主函数中,执行了3次调用无参函数s()语句 。 # include void main() void s( ) ; /*函数调用说明*/ int i=0, a=10; while ( iy ? x : y; return(
6、z); 带参数的用户自定义函数 int max( int x, int y ) int z; z=xy ? x : y; return (z); 在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。 例:int max(x,y)int x, y; int z; z=xy ? x : y; return (z);在新版本中写成一行: int max( int x, int y )在老版本中写成二行: int max(x, y ) int x, y; 语言的函数从有无返回值这个角度考虑,可把函数分为有返回值函数和无返回值函数两种。有参函数的返回值,是通过函数中的 return语句来
7、获得的。(1)返回语句的格式: return ( 表达式 );(2)return 语句的功能:返回调用函数,并将“表达式”的值带给调用函数。 (3) return语句返回值的类型应与该函数的类型一致。否则以函数类型为准。 8.3 函数返回值 (4) return 语句后面可以是变量,也可以是表达式。 如: return (x y ? x : y); (5) return 语句的后面可以有括号,也可以没有。 如 : return z ; 或 return(z); (6) 函数的返回值是通过 return 语句获得的。当不需返回函数值时,可省去return语句。 调用函数中无 return 语句,
8、并不是不返回一个值,而是一个不确定的值。为了明确表示不返回值,可以用“void”定义成“无(空)类型”。 若函数中没有return语句,则该函数被调用后也会带回不确定的值。如在执行以下的函数体语句: int a, b, c ; a=printstar( ); b=print_message( ); c=printstar( ); printf(“%d,%d,%dn”,a,b,c); 输出的a, b, c的值将是各个被处理的字符串的长度。 为了明确表示不需要函数返回值,可以用“void”定义函数为“无类型”。 此时,不得使用a=printstar( )之类的语句。3个被调函数中均没有return
9、语句 例8.3 主函数分别调用空类型函数fu1和返回整型值的fu2函数。程序如下:# include main()void fu1( int a, int b ); int fu2( int a, int b ) ; int a, b ; printf(input two numbers:n); scanf(“%d%d”,&a,&b); fu1(a,b); printf(“(a+b)* (a+b) = %dn”, fu2(a,b); void fu1(int x, int y ) int z1 ; z1=x*x+y*y; printf( x*x+y*y=%dn ,z1); int fu2(in
10、t x, int y ) int z2 ; z2=(x+y)* (x+y); return ( z2 ); 其中fu1() ,fu2() 两个函数为用户自己定义函数,需要用户指定函数名及函数体内语句。无返回值 函数返回值函数8.4 函 数 的 调 用 C程序通过对函数的调用来执行函数体的。 1、函数调用方式(1)表达式语句调用函数。 被调函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。 这种方式要求函数是有返回值的。 例如: a = b+fun(x,y);(2)函数语句 被调函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。 例如: funa( );
11、(3)函数实参 被调函数作为另一个函数调用的实际参数出现。即把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf(“%dn”,max(a,b);2. 调用函数说明 (1)调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。(2)实参在类型上按顺序与形参,必须一一对应和匹配。如果类型不匹配,C编译程序将按赋值兼容的规则进行转换。如果实参和形参的类型不赋值兼容,通常并不给出出错信息,且程序仍然继续执行,只是得不到正确的结果。(3)如果实参表中包括多个参数,对实参的求值顺序随系统而异。有的系统按自左向右顺序求实参的值,有的系统则相反。Turbo C和MS
12、C是按自右向左的顺序进行的 。 例8.4 函数调用方式示例程序。# include # include main()void fu1( int a, int b ); int fu2( int a, int b ) ; int a, b, x1; printf(input two numbers:n); scanf(“%d%d”,&a,&b); fu1(a,b); /*调用求两数平方和函数 */ printf(“(a+b)* (a+b) = %dn”, fu2(a,b); x1 sqrt(a+b); printf(“x1 %dn”,x1); 函数调用说明表达式语句函数调用 作为 函数实参 被调
13、用函数语句调用函数语句调用函数语句调用3函数类型在定义函数时,对函数类型的说明,应与return 语句中返回值表达式的类型一致。如果不一致,则以函数类型为准。如果缺省函数类型,则系统一律按整型处理。良好的程序设计习惯:为了使程序具有良好的可读性并减少出错,凡不要求返回值的函数都应定义为空类型;即使函数类型为整型,也不使用系统的缺省处理。例8.5int f ( int a , int b ) ; int c ; if ( a b ) c = 1; else if ( a = = b ) c = 0 ; else c = 1 ; return( c ) ;main( ) int i =2 , p
14、; p = f ( i , + + i ); printf ( “%d”, p ) ;输出结果: 0 注意:这里是按自右至左求值的,相当于fun(3,3)。 3 b 3 a函数类型为int 4. 对被调用函数的说明 ANSI C对被调用函数进行说明,其一般格式如下:函数类型 函数名( 形参表 ); 以下2种情况下,可以省去对被调用函数的说明: (1)当被调用函数的函数定义出现在调用函数之前时。因为在调用之前,编译系统已经知道了被调用函数的函数类型、参数个数、类型和顺序。 (2)如果在所有函数定义之前,在函数外部(例如文件开始处)预先对各个函数进行了说明。例8.6main( ) int f (
15、int a , int b ) ; int i =2 , p ; p = f ( i , + + i ); printf ( “%d”, p ) ;int f ( int a , int b ) int c ; if ( a b ) c = 1; else if ( a = = b ) c = 0 ; else c = 1 ; return( c ) ;输出结果: 0被调用函数的函数定义出现在调用函数之后,对被调用函数进行说明5. 函数的形参与实参形式参数:将函数定义中的参数表称为形式参数表,简称形参表。与调用函数提供的实际参数区别。 实际参数:调用有参函数时,调用函数必须赋予这些参数实际的值
16、,调用函数中的参数称为实际参数。当函数调用时,调用函数把实参的值传送给被调用函数的形参,从而实现调用函数向被调用函数的数据传送。 形参出现在函数定义中,只能在该函数体内使用。 说明:(1)函数的实参可以使用:常量、变量、表达式、函数。无论函数的实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。(2)形参变量只有在被调用时,才分配内存单元,调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。(3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,不能把形参的值反向地传送给实参。(4)实参
17、和形参占用不同的内存单元,即使同名也互不影响。例8.7 实参对形参的数据传递。程序如下: void main() void s(int n); int x=12; s( x ); printf(n_s=%dn,x); /*输出调用后实参的值*/ void s( int n ) int i; printf(n_x=%dn,n); /*输出改变前形参的值*/ for(i=n-8; i=1; i-) n=n+i; /*改变形参的值*/ printf(n_x=%dn,n) /*输出改变后形参的值*/ 调用函数 x 的值传给形参n12x12n 例8.8 程序中3次调用func() 。 # include
18、 int func( int x,int y ) int z; z=x+y; return z ; void main() int i=3, j=2, k=1; do k+=func( i, j ); printf(“%dn”,k); i+; j+; while (i=5); 运行结果: 6 13 22实参值传送给形参: 第1次调用:3 x 2 y 第2次调用:4 x 3 y 第3次调用: 5 x 4 y形参int x,int y 实参为整型变量 i, j例8.9 求两个数的平方和 #include float mul( int a,int b ) return a * ab * b ; ma
19、in() int x,y,z; scanf(“%d , %d”,&x,&y); z=mul(x,y); printf(z=%dn,z); x=x+5; y=y -3; z=mul(x,y); printf(mul(%d,%d)=%dn,x,y,mul(x,y); 第1次mul(2,6)输入2 , 6 X6 y第2次mul(7,3)第3次mul(7,3)形 参 运行结果: 40 mul(7,3)=58 6.函数的嵌套调用 (1)函数的嵌套调用是指,在执行被调用函数时,被调用函数又调用了其它函数。(2)函数的嵌套调用执行过程 :例8.10 嵌套调用程序。# include main() print
20、f (“ Im in main.n”); fun1( ); printf (“ Now Im in main.n”); void fun1( ) printf (“ Now Im in fun1.n”) fun2( ); void fun2( ) printf (“ Now Im in fun2.n”); 主函数体内调用fun1( )fun1( )函数体内调用fun2( ) 例8.11 计算 s=1k + 2k + 3k + + N k 设 k=3 n=6 即求:13 + 23 + 33 + + 6 3的和。 /*求 1 到 n 的 k 次方之累加和*/ long f2 ( int n, in
21、t k ) int i; long sum=0; for( i=1; i=n; i+ ) sum += f1( i, k ); return sum; N为6累加6次n=6 k=3 /*计算 n 的 k 次方值的函数*/ long f1( int n, int k ) long power=1; int i; for( i=1; i= k; i+ ) power *= n; return power; main() int k=3, n=6; printf(Sum of %d powers of integers ,k); printf( from 1 to %d = , N); printf
22、(%dn,f2(n,k) ); k=3累乘3次 6次调用 f1()函数 n的值为: 1 2 3 4 5 67.函数的递归调用(1)函数的递归调用是指,一个函数在它的函数体内,直接或间接地调用它自身。语言允许函数的递归调用。在递归调用中,调用函数又是被调用函数,执行递归函数将反复调用其自身。每调用一次就进入新的一层。(2)递归调用终止为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。#include fact (int); void main() int m; printf(“Enter a number: ”
23、); scanf(“%d”, &m); printf(“%d! = %dn”, m, fact(m); fact(int n) int result; if(n=1) return (1); result = fact(n-1)*n;/* 递归调用 */ return (result); 例8.12用递归调用编写计算阶乘n!的函数fact()。 求n! 阶乘计算公式:n!=n(n-1)! 程序如左边: 调用和返回过程(n=4):调用: main() fact(4) fact(3) fact(2) fact(1) 执行: fact(4) 4*fact(3) 3*fact(2) 2*fact(1)
24、 1 返回: 24 4*6=24 3*2=6 2*1=2 1 程序运行情况如下: Enter a number:5 5! = 120 8.5 变量的作用域与存储类别 1. 变量的作用域 语言中所有的变量都有自己的作用域。变量的作用域是指变量在程序中的有效范围。 变量说明的位置不同,其作用域也不同。语言中的变量按照作用域,分为内部变量和外部变量。 2. 内部变量(1)在函数内部定义的变量称为内部变量,内部变量也称“局部变量”。 内部变量只有在包含变量说明的函数内部才能使用,在此函数之外就不能使用这些变量。(2)局部变量仅由其被定义的模块内部的语句所访问(变量值可见)。换言之,局部变量在自己的代码
25、模块之外是不可知的。模块以左花括号开始,以右花括号结束。 局部变量仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。定义局部变量的最常见的代码块是函数。 例8.13 int f1(int a) int b,c ; int f2(int x) int y,z ; main() int m,n ; a,b,c作用域:仅限于函数f1()中x,y,z作用域:仅限于函数f2()中m,n作用域:仅限于函数main()中 a, b, c, x, y, z , m, n 都是内部变量 (3)主函数 main()中定义的内部变量,是局部变量,也只能在主函数中使用,其它函数不能使用。
26、同样,主函数中也不能使用其它函数中定义的内部变量。因为主函数也是一个函数,与其它函数是平行关系。 (4)形参变量也是内部变量,属于被调用函数;实参变量,则是调用函数的内部变量。 (5)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。 (6)在复合语句中也可定义变量,其作用域只在复合语句范围内。 输出结果: 10, 4, 8 10, 2, 5例8.14#include “stdio.h”main( ) int a=1, b=2, c=3; a+; c+=b; int b=4, c; c=2b; a+=c; printf(“%d,%d,%dn”,
27、a, b, c); printf(“%d,%d,%dn”, a, b, c);复合语句中定义的变量b、c,其作用域只在复合语句范围内 主函数中与复合语句中分别定义的同名变量b、c, 它们代表不同的对象,分配不同的单元,互不干扰 3. 全局变量 (1)在函数外部定义的变量称为外部变量,外部变量又称全局变量。 外部变量不属于任何一个函数,其作用域是:从外部变量的定义位置开始,到本文件结束为止。 外部变量可被作用域内的所有函数直接引用。 (2)外部变量的定义,在所有的函数之外,且只能定义一次。 外部变量说明的一般形式为: extern 数据类型 外部变量1 ,外部变量2 ; (3)如果定义点之前的函
28、数需要引用这些外部变量时,需要在函数内对被引用的外部变量进行说明,可以出现多次。 (4)与局部变量不同,全局变量贯穿整个程序,并且可被任何一个模块使用,它们在整个程序执行期间保持有效。 (5)在同一源文件中,允许外部变量和内部变量同名。在内部变量的作用域内,外部变量将被屏蔽而不起作用。 (6)避免使用不必要的全局变量3种原因: 外部变量可加强函数模块之间的数据联系,但又使这些函数依赖这些外部变量,因而使得这些函数的独立性降低。 全局变量在整个程序执行期间均占有存储空间。 程序中大量使用全局变量,不可知的和不需要的副作用将可能导致程序错误。 例8. 15全局变量的使用举例。 int count;
29、 /* count是全局变量*/main () count =100; func1( ); func1( ) int temp; Temp = count ; func2() Printr(“count is %d”, count); /* 打印100*/ func2() int count; for (count=1; count10; count+)Putchar(*); /* 打印出*/ 例8.16 外部变量的定义与说明。 int vs( int xl, int xw ) extern int xh; /*外部变量xh的说明*/ int v; v=xl*xw*xh; /*使用外部变量xh
30、的值*/ return v; main() extern int xw , xh; /*外部变量的说明*/ int xl=5; /*内部变量的定义*/ printf(xl=%d,xw=%d,xh=%dn ,xl,xw,xh); printf(“ v=%d“,vs(xl,xw); int xl=3, xw=4, xh=5; /*外部变量定义*/ 4.变量存储类别 变量具有两个属性:类型、存储类别。类型规定了变量和函数的取值范围和运算范围;则决定了变量在内存中的存储区域和生成期,即存在时间。 (1) 变量的存储类型 变量的存储类型说明有以下四种: 自动变量(auto) 寄存器变量(register
31、) 外部变量(extern) 静态变量(static)。 自动变量和寄存器变量属于动态存储方式,外部变量和静态内部变量属于静态存储方式。数据区 (2) 变量的存储 静态存储变量存放在静态存储区。在编译时分配空间,直到整个程序执行完毕才释放。 动态存储变量存放在动态存储区。在函数调用时分配临时的空间,离开函数,其空间便被系统收回,其值随之消失。 C系统中, 内存用户区空间可划分为三个区,如下图所示:静态存储区动态存储区 程 序 区 5. 动态存储变量 (1)自动变量,只在定义函数内有效;函数被调用时分配存储空间,调用结束就释放。 定义形式为:auto 数据类型 变量表; 动态存储变量可以是函数的
32、形式参数、局部变量、函数调用时的现场保护和返回地址。 自动变量定义时不初始化,则其值是不确定的。如果初始化,则赋初值操作是在调用时进行的,且每次调用都要重新赋一次初值。 在复合语句中定义的自动变量,只在该复合语句中有效。 在不同函数或复合语句中允许使用同名的变量而不会混淆。(2)寄存器变量 语言允许将局部变量的值存放到寄存器中,这种变量就称为寄存器变量。定义格式如下: register 数据类型 变量表; 只有局部变量才能定义成寄存器变量,即全局变量不行。 对寄存器变量的实际处理,随系统而异。例如,微机上的MSC和TC 将寄存器变量实际当作自动变量处理。 允许使用的寄存器数目是有限的,不能定义
33、任意多个寄存器变量。 6. 静态存储变量 静态存储变量无论是做全程量或是局部变量,其定义和初始化在程序编译时进行,在编译时分配存储空间的变量称为静态存储变量。 (1)内部静态变量(又称为静态局部变量) 在函数内定义,在调用函数结束时,静态存储变量不消失并且保留原值,但其它函数不能引用它们。 定义形式: static 数据类型 内部变量表;静态局部变量定义时不初始化,则系统自动赋以“0”(整型和实型)或0(字符型);且每次调用它们所在的函数时,不再重新赋初值,只保留上次调用结束时的值。例8.17静态内部变量应用 int fac( int n ) static int f=1; 运行结果: 1!=
34、1 f=f*n; 2!=2 return f; 3!=6 4!=24 main( ) 5!=120 int i; for ( i=1; i=5; i+) printf(“%d!=%dn”,i, fac(i); 例8.18 自动变量与静态局部变量的存储特性。 void austatic(void) int vto=0; /*自动变量每次调用都重新初始化*/ static int vtic=0; /*静态局部变量只初始化1次*/ printf(“vto=%d, vtic=%dn”, vto, vtic); +vto; +vtic; main() int i; for(i=0; i5; i+) au
35、static( ); 运行结果: vto=0,vtic=0 vto=0,vtic=1 vto=0,vtic=2 vto=0,vtic=3 vto=0,vtic=4(2)外部静态变量在函数外定义,外部静态变量只允许被本源文件中的函数引用。静态外部变量定义形式: static 数据类型 外部变量表; (3)非静态外部变量允许被其它源文件中函数引用,定义时缺省 static 关键字的外部变量。 非静态外部变量定义形式: 据类型 外部变量表; 允许被其它源文件中函数引用, 非静态外部变量引用 其它源文件中的函数,引用非静态外部变量时,需要在引用函数所在的源文件中进行说明: extern 数据类型 外部
36、变量表; 在函数内的extern变量说明,表示引用本源文件中的外部变量! 在函数外(通常在文件开头)的extern变量说明,表示引用其它文件中的外部变量 7.静态局部变量和静态外部变量两者区别: (1)定义的位置不同。 静态局部变量在函数内定义,静态外部变量在函数外定义。(2)作用域不同。静态局部变量属于内部变量,其作用域仅限于定义它的函数内;虽然生存期为整个源程序,但其它函数是不能使用它的。静态外部变量其作用域为定义它的源文件内;生存期为整个源程序,但其它源文件中的函数也是不能使用它的。 (3)初始化处理不同。静态局部变量,仅在第1次调用它所在的函数时被初始化,当再次调用定义它的函数时,不再
37、初始化,而是保留上1次调用结束时的值。静态外部变量是在函数外定义的,不存在静态内部变量的“重复”初始化问题,其当前值由最近1次给它赋值的操作决定。 注意:(1)把局部变量改变为静态内部变量后,改变了它的存储方式,即改变了它的生存期。(2)把外部变量改变为静态外部变量后,改变了它的作用域,限制了它的使用范围。因此,关键字“static”在不同的地方所起的作用是不同的。外部变量的说明:(动态)内部变量的说明:静态外部变量的说明:static 类型名 变量名; extern 类型名 变量名; auto 类型名 变量名;靜态内部变量的说明:static 类型名 变量名;变量存储类的说明(定义)方式:可省略不写可省略不写在函数外在函数内变量的存储类别静态存储类动态存储类外 部 变 量静态外部变量静态内部变量自动变量寄存器变量形式参数 静 态 变 量离开函数其值消失允许其它文件引用在引用它文件中用extern作说明离开函数其值保留只限本文件引用但应先定义后引用,否则须作声明:extern 类型符 变量名;全局量局部量在函数外定义其值永久保留只限本函数或本复合语句中使用。在函数或复合语句内定义。在cpu中分配临时空间。动态内部变量8.6 函数的存储类别 语言允许一个大程序分成若干个程序单元,编译成若干个源程序文件。 1. 主文件与外部文件 语言把
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024牛肉供应链优化与物流配送合同
- 二零二五年鲍鱼海鲜产品进出口合同2篇
- 2025年度中小企业财务辅导与融资对接服务合同3篇
- 2025年工艺品FOB出口合同标准范本2篇
- 2024年相机设备采购正式协议样本
- 2024特定事项补充协议范本版B版
- 2025年度淋浴房安全检测与安装服务合同4篇
- 2025年环保型小区车棚租赁与充电桩建设合同3篇
- 2025年度绿色生态园林景观项目苗木采购合同样本3篇
- 2025年度消防设施设备安全性能评估合同3篇
- 软件项目应急措施及方案
- 2025河北邯郸经开国控资产运营管理限公司招聘专业技术人才5名高频重点提升(共500题)附带答案详解
- 2024年民法典知识竞赛考试题库及答案(共50题)
- 2025老年公寓合同管理制度
- 2024-2025学年人教版数学六年级上册 期末综合卷(含答案)
- 2024中国汽车后市场年度发展报告
- 钣金设备操作培训
- 感染性腹泻的护理查房
- 天津市部分区2023-2024学年高二上学期期末考试 物理 含解析
- 中考英语688高频词大纲词频表
- 九年级初三中考物理综合复习测试卷3套(含答案)
评论
0/150
提交评论