C语言课件第08章函数.ppt

上传人:max****ui 文档编号:10964176 上传时间:2020-04-16 格式:PPT 页数:100 大小:498.50KB
返回 下载 相关 举报
C语言课件第08章函数.ppt_第1页
第1页 / 共100页
C语言课件第08章函数.ppt_第2页
第2页 / 共100页
C语言课件第08章函数.ppt_第3页
第3页 / 共100页
点击查看更多>>
资源描述
第八章 函数 本章要点 函数的概念函数的定义与调用函数的递归调用变量的作用域函数的作用域 主要内容 8 1概述 8 函数定义的一般形式 8 函数参数和函数的值 8 函数的调用 8 函数的嵌套调用 8 函数的递归调用 8 数组作为函数参数 8 8局部变量和全局变量 8 变量的存储类别 8 10内部函数和外部函数 8 1概述 一个较大的程序可分为若干个程序模块 每一个模块用来实现一个特定的功能 在高级语言中用子程序实现模块的功能 子程序由函数来完成 一个 程序可由一个主函数和若干个其他函数构成 由主函数调用其他函数 其他函数也可以互相调用 同一个函数可以被一个或多个函数调用任意多次 函数间的调用关系 includevoidmain voidprintstar 对printstar函数声明 voidprint message 对print message函数声明 printstar 调用printstar函数 print message 调用print message函数 printstar 调用printstar函数 例8 1先举一个函数调用的简单例子 voidprintstar 定义printstar函数 printf n voidprint message 定义print message函数 printf Howdoyoudo n 运行情况如下 Howdoyoudo 说明 1 一个 程序由一个或多个程序模块组成 每一个程序模块作为一个源程序文件 对较大的程序 一般不希望把所有内容全放在一个文件中 而是将他们分别放在若干个源文件中 再由若干源程序文件组成一个C程序 这样便于分别编写 分别编译 提高调试效率 一个源程序文件可以为多个C程序公用 2 一个源程序文件由一个或多个函数以及其他有关内容 如命令行 数据定义等 组成 一个源程序文件是一个编译单位 在程序编译时是以源程序文件为单位进行编译的 而不是以函数为单位进行编译的 3 程序的执行是从 函数开始的 如是在 函数中调用其他函数 在调用后流程返回到 函数 在 函数中结束整个程序的运行 4 所有函数都是平行的 即在定义函数时是分别进行的 是互相独立的 一个函数并不从属于另一函数 即函数不能嵌套定义 函数间可以互相调用 但不能调用 函数 函数是系统调用的 5 从用户使用的角度看 函数有两种 标准函数 即库函数 这是由系统提供的 用户不必自己定义这些函数 可以直接使用它们 应该说明 不同的C系统提供的库函数的数量和功能会有一些不同 当然许多基本的函数是共同的 用户自己定义的函数 用以解决用户的专门需要 6 从函数的形式看 函数分两类 无参函数 如例8 1中的printstar和print message就是无参函数 在调用无参函数时 主调函数不向被调用函数传递数据 无参函数一般用来执行指定的一组操作 例如 例8 程序中的printstar函数 有参函数 在调用函数时 主调函数在调用被调用函数时 通过参数向被调用函数传递数据 一般情况下 执行被调用函数时会得到一个函数值 供主调函数使用 8 函数定义的一般形式 8 2 1 无参函数的定义一般形式 定义无参函数的一般形式为 类型标识符函数名 声明部分语句部分 在定义函数时要用 类型标识符 指定函数值的类型 即函数带回来的值的类型 例8 中的printstar和print message函数为void类型 表示不需要带回函数值 8 2 2 有参函数定义的一般形式 定义有参函数的一般形式为 类型标识符函数名 形式参数表列 声明部分语句部分 例如 int int 函数体中的声明部分 8 2 3空函数 定义空函数的一般形式为 类型标识符函数名 例如 调用此函数时 什么工作也不做 没有任何实际作用 在主调函数中写上 表明 这里要调用一个函数 而现在这个函数没有起作用 等以后扩充函数功能时补充上 8 函数参数和函数的值 8 形式参数和实际参数 大多数情况下 主调函数和被调用函数之间有数据传递的关系 在不同的函数之间传递数据 可以使用的方法 参数 通过形式参数和实际参数返回值 用return语句返回计算结果全局变量 外部变量 includevoid intmax int int 对 函数的声明 int scanf printf 例8 调用函数时的数据传递 intmax int int 定义有参函数max int return 运行情况如下 通过函数调用 使两个函数中的数据发生联系 关于形参与实参的说明 1 在定义函数中指定的形参 在未出现函数调用时 它们并不占内存中的存储单元 只有在发生函数调用时 函数 中的形参才被分配内存单元 在调用结束后 形参所占的内存单元也被释放 2 实参可以是常量 变量或表达式 如 但要求它们有确定的值 在调用时将实参的值赋给形参 3 在被定义的函数中 必须指定形参的类型 见例8 2程序中的 4 实参与形参的类型应相同或赋值兼容 例8 中实参和形参都是整型 如果实参为整型而形参x为实型 或者相反 则按第3章介绍的不同类型数值的赋值规则进行转换 例如实参值a为3 5 而形参x为整型 则将实数3 5转换成整数3 然后送到形参b 字符型与整型可以互相通用 5 在 语言中 实参向对形参的数据传递是 值传递 单向传递 只由实参传给形参 而不能由形参传回来给实参 在内存中 实参单元与形参单元是不同的单元 在调用函数时 给形参分配存储单元 并将实参对应的值传递给形参 调用结束后 形参单元被释放 实参单元仍保留并维持原值 因此 在执行一个被调用函数时 形参的值如果发生改变 并不会改变主调函数的实参的值 例如 若在执行函数过程中 和 的值变为 和 而 和 仍为 和 8 3 2函数的返回值 通常 希望通过函数调用使主调函数能得到一个确定的值 这就是函数的返回值 例如 例8 中 的值是 的值是5 赋值语句将这个函数值赋给变量 关于函数返回值的一些说明 1 函数的返回值是通过函数中的return语句获得的 如果需要从被调用函数带回一个函数值供主调函数使用 被调用函数中必须包含return语句 如果不需要从被调用函数带回函数值可以不要return语句 一个函数中可以有一个以上的return语句 执行到哪一个return语句 哪一个语句起作用 return语句后面的括弧也可以不要 如 return 等价于 return return语句将被调用函数中的一个确定值带回主调函数中去 见图8 2中从return语句返回的箭头 return后面的值可以是一个表达式 例如 例8 中的函数 可以改写成 int int 2 函数的返回值应当属于某一个确定的类型 在定义函数时指定函数返回值的类型 例如 下面是3个函数的首行 intmax float float 函数值为整型 charletter charc1 charc2 函数值为字符型 doublemin int int 函数值为双精度型 在 语言中 凡不加类型说明的函数 自动按整型处理 例8 中的 函数首行的函数类型int可以省写 用TurboC2 0编译程序时能通过 但用TurboC 3 0编译程序时不能通过 因为C 要求所有函数都必须指定函数类型 因此 建议在定义时对所有函数都指定函数类型 3 在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致 如果函数值的类型和return语句中表达式的值不一致 则以函数类型为准 对数值型数据 可以自动进行类型转换 即函数类型决定返回值的类型 4 对于不带回值的函数 应当用 void 定义函数为 无类型 或称 空类型 这样 系统就保证不使函数带回任何值 即禁止在调用函数中使用被调用函数的返回值 此时在函数体中不得出现return语句 例8 返回值类型与函数类型不同 includevoidmain int float float float int scanf printf intmax float float float z为实型变量 return 运行情况如下 Maxis 8 函数的调用 8 函数调用的一般形式 函数调用的一般形式为 函数名 实参表列 如果实参表列包含多个实参 则各参数间用逗号隔开 实参与形参的个数应相等 类型应匹配 实参与形参按顺序对应 一一传递数据 如果是调用无参函数 则 实参表列 可以没有 但括弧不能省略 例8 实参求值的顺序 includevoidmain intf inta intb 函数声明 inti 2 p p f i i 函数调用 printf d n p intf inta intb 函数定义 intc if a b c 1 elseif a b c 0 elsec 1 return c 如果按自左至右顺序求实参的值 则函数调用相当于 如果按自左至右顺序求实参的值 则函数调用相当于 3 对于函数调用inti 2 p p f i i 8 函数调用的方式 按函数在程序中出现的位置来分 可以有以下三种函数调用方式 函数语句把函数调用作为一个语句 如例8 1中的printstar 这时不要求函数带回值 只要求函数完成一定的操作 函数表达式函数出现在一个表达式中 这种表达式称为函数表达式 这时要求函数带回一个确定的值以参加表达式的运算 例如 函数参数函数调用作为一个函数的实参 例如 m max a max b c 其中max b c 是一次函数调用 它的值作为max另一次调用的实参 m的值是a b c三者中的最大者 又如 printf d max a b 也是把max a b 作为printf函数的一个参数 函数调用作为函数的参数 实质上也是函数表达式形式调用的一种 因为函数的参数本来就要求是表达式形式 8 对被调用函数的声明和函数原型 在一个函数中调用另一函数 即被调用函数 需要具备哪些条件呢 1 首先被调用的函数必须是已经存在的函数 是库函数或用户自己定义的函数 但光有这一条件还不够 8 对被调用函数的声明和函数原型 3 如果使用用户自己定义的函数 而该函数的位置在调用它的函数 即主调函数 的后面 在同一个文件中 应该在主调函数中对被调用的函数作声明 2 如果使用库函数 还应该在本文件开头用 命令将调用有关库函数时所需用到的信息 包含 到本文件中来 函数原型的一般形式为 1 函数类型函数名 参数类型1 参数类型2 2 函数类型函数名 参数类型1 参数名1 参数类型2 参数名2 声明 一词的原文是declaration 过去在许多书中把它译为 说明 声明的作用是把函数名 函数参数的个数和参数类型等信息通知编译系统 以便在遇到函数调用时 编译系统能正确识别函数并检查调用是否合法 例如函数名是否正确 实参与形参的类型和个数是否一致 注意 函数的 定义 和 声明 不是一回事 函数的定义是指对函数功能的确立 包括指定函数名 函数值类型 形参及其类型 函数体等 它是一个完整的 独立的函数单位 而函数的声明的作用则是把函数的名字 函数类型以及形参的类型 个数和顺序通知编译系统 以便在调用该函数时系统按此进行对照检查 includevoidmain floatadd floatx floaty 对被调用函数add的声明 floata b c scanf f f a b c add a b printf sumis f n c floatadd float float 函数首部 float 函数体 z return z 例8 对被调用的函数作声明 如果被调用函数的定义出现在主调函数之前 可以不必加以声明 因为编译系统已经先知道了已定义函数的有关情况 会根据函数首部提供的信息对函数的调用作正确性检查 如果被调用函数的定义出现在主调函数之前 可以不必加以声明 因为编译系统已经先知道了已定义函数的有关情况 会根据函数首部提供的信息对函数的调用作正确性检查 改写例8 includefloatadd float float 函数首部 float 函数体 z return z voidmain floata b c scanf f f a b c add a b printf sumis f n c 函数举例 例1计算10 9 6 例2写一个函数使输入的字符串按反次序存放 然后输出 作业 输入10个数x 计算下列函数值 编写程序计算1 1 2 1 2 3 1 n 编写函数计算m m n 函数回顾 函数定义的一般格式函数类型函数名 形参表 函数首部 函数体函数实现过程return表达式 函数的参数 形式参数表类型1参数1 类型2参数2 类型n参数n参数之间用逗号分隔 每个参数前面的类型都必须分别写明函数定义时的参数被称为形式参数 简称形参 intmax int int 函数调用时的参数被称为实际参数 简称实参 C max a b 函数原型声明 函数类型函数名 参数表 intmax int int 函数声明 说明函数的类型和参数的情况 以保证程序编译时能判断对该函数的调用是否正确 函数必须先定义后调用 将主调函数放在被调函数的后面 就像变量先定义后使用一样 如果自定义函数在主调函数的后面 就需要在函数调用前 加上函数原型声明 只写函数定义中的第1行 函数首部 并以分号结束 参数传递 实参 形参在参数传递过程中 实参把值复制给形参 形参和实参一一对应 数量一致 类型一致 顺序一致形参 变量 用于接受实参传递过来的值实参 常量 变量或表达式 例求100以内的全部素数 每行输出10个 include includeintmain void intcount m intprime intm count 0 for m 2 m 100 m if prime m 0 printf 6d m count if count 10 0 printf n printf n intprime intm inti n if m 1 return0 n sqrt m for i 2 i n i if m i 0 return0 return1 8 函数的嵌套调用 嵌套定义就在定义一个函数时 其函数体内又包含另一个函数的完整定义 语言不能嵌套定义函数 但可以嵌套调用函数 也就是说 在调用一个函数的过程中 又调用另一个函数 8 函数的嵌套调用 例1编写一个函数计算分析编写一个函数计算i 然后编写函数C n m 计算 8 函数的嵌套调用 计算阶乘的函数intfac inti intk f 1 for k 1 k i k f k return f 计算C n m 的函数intcnm intn intm intc c fac n fac m fac n m return c 8 函数的嵌套调用 调用函数C n m 计算voidmain intc n m n 9 m 5 或scanf d d 函数嵌套调用的执行过程 8 函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身 称为函数的递归调用 语言的特点之一就在于允许函数的递归调用 例8 有 个人坐在一起 问第 个人多少岁 他说比第 个人大 岁 问第 个人岁数 他说比第 个人大 岁 问第 个人 又说比第 个人大 岁 问第 个人 说比第 个人大 岁 最后问第 个人 他说是 岁 请问第 个人多大 可以用数学公式表述如下 age n age n age n 1 可以用一个函数来描述上述递归过程 intage int 求年龄的递归函数 int 用作存放函数的返回值的变量 if else return 用一个主函数调用age函数 求得第5人的年龄 includevoidmain printf d age 5 运行结果如下 例8 用递归方法求 求 也可以用递归方法 即 等于 而 可用下面的递归公式表示 longfac intn longf if n 0 f 1 elsef n fac n 1 returnf 例8 8用递归函数计算N 例8 9用递归法计算n阶勒让德多项式的值 Floatp intn floatx floatq if n 0 q 1 0 elseif n 1 q x elseq 2 n 1 x p n 1 x n 1 p n 2 x n return q 8 数组作为函数参数 数组作函数的参数有以下情况 数组元素作函数的参数数组名作函数的参数8 7 1数组元素作函数的实参数组元素作函数的参数时 和普通变量做参数相同 数组元素只能作函数的实参 采用 值传送 方式 8 7 2数组名作函数参数 可以用数组名作函数参数 此时形参应当用数组名或用指针变量 形参数组可不指定大小 例8 13用选择法对数组中10个整数按由小到大排序 程序实例 includevoidmain voidsort intarray int inta 10 i printf enterthearray n for i 0 i 10 i scanf d i printf d a i printf n 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 t array k array k array i array i t 8 7 3 多维数组名作函数参数 程序如下 includevoidmain intmax value intarray 4 inta 3 4 1 3 5 7 2 4 6 8 15 17 34 12 printf maxvalueis max value a intmax value intarray 4 inti j k max max array 0 0 for i 0 imax max array i j return max 运行结果如下 Maxvalueis34 8 8局部变量和全局变量 局部变量在函数内定义的变量 包括形参 作用范围 本函数内部定义在复合语句内的变量作用范围 复合语句内部全局变量在函数以外定义的变量 不从属于任一函数 作用范围 从定义处到源文件结束 包括各函数 例局部变量使用举例 includeintmain void inta a 1 复合语句开始 intb 2 b a b a a b 复合语句结束 printf d a return0 b 小范围内的临时变量 4 全局变量 在函数内定义的变量是局部变量 而在函数之外定义的变量称为外部变量 外部变量是全局变量 也称全程变量 全局变量可以为本文件中其他函数所共用 它的有效范围为从定义变量的位置开始到本源文件结束 例8 15有一个一维数组 内放 个学生成绩 写一个函数 求出平均分 最高分和最低分 includefloatMax Min 全局变量 voidmain floataverage floatarray intn floatave score 10 int for i 0 i 10 i scanf f score i ave average score 10 printf max 6 2f nmin 6 2f naverage 6 2f n Max Min ave floataverage floatarray intn 定义函数 形参为数组 int floataver sum 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 sum array i aver sum n returnaver 建议不在必要时不要使用全局变量 原因如下 全局变量在程序的全部执行过程中都占用存储单元 而不是仅在需要时才开辟单元 使用全局变量过多 会降低程序的清晰性 人们往往难以清楚地判断出每个瞬时各个外部变量的值 在各个函数执行时都可能改变外部变量的值 程序容易出错 因此 要限制使用全局变量 它使函数的通用性降低了 因为函数在执行时要依赖于其所在的外部变量 8 变量的存储类别 8 动态存储方式与静态存储方式 前面已介绍了从变量的作用域 即从空间 角度来分 可以分为全局变量和局部变量 那么从变量值存在的时间 即生存期 角度来分 又可以分为静态存储方式和动态存储方式 所谓静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式 而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式 这个存储空间可以分为三部分 程序区静态存储区动态存储区 存储类别指的是数据在内存中存储的方式 存储方式分为两大类 静态存储类和动态存储类 具体包含四种 自动的 静态的 寄存器的 外部的 根据变量的存储类别 可以知道变量的作用域和生存期 8 auto变量 函数中的局部变量 数据存储在动态存储区中函数中的形参 在函数中定义的变量和复合语句中定义的变量 都属auto类 在调用该函数时系统会给它们分配存储空间 在函数调用结束时就自动释放这些存储空间 因此这类局部变量称为自动变量 自动变量用关键字 作存储类别的声明 例如 int int 定义f函数 为形参 autoint 定义 为自动变量 int int int 8 9 3用static声明局部变量 有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值 即其占用的存储单元不释放 在下一次该函数调用时 该变量已有值 就是上一次函数调用结束时的值 这时就应该指定该局部变量为 静态局部变量 用关键字 进行声明 通过下面简单的例子可以了解它的特点 includevoidfun intk intmain void intk for k 1 k 3 k fun k return0 voidfun intk staticinta printf d a a k 0 1 3 静态变量会记住前一次调用时留下来的值 静态变量的初值为0 对静态局部变量的说明 1 静态局部变量属于静态存储类别 在静态存储区内分配存储单元 在程序整个运行期间都不释放 而自动变量 即动态局部变量 属于动态存储类别 占动态存储区空间而不占静态存储区空间 函数调用结束后即释放 2 对静态局部变量是在编译时赋初值的 即只赋初值一次 在程序运行时它已有初值 以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值 而对自动变量赋初值 不是在编译时进行的 而是在函数调用时进行 每调用一次函数重新给一次初值 相当于执行一次赋值语句 3 如在定义局部变量时不赋初值的话 则对静态局部变量来说 编译时自动赋初值 对数值型变量 或空字符 对字符变量 而对自动变量来说 如果不赋初值则它的值是一个不确定的值 这是由于每次函数调用结束后存储单元已释放 下次调用时又重新另分配存储单元 而所分配的单元中的值是不确定的 4 虽然静态局部变量在函数调用结束后仍然存在 但其他函数是不能引用它的 8 9 4register变量 寄存器变量 用关键字register作声明 例如 例8 19中的程序是输出 到n的阶乘的值 例8 19使用寄存器变量 includevoidmain longfac long longi n scanf ld 8 5用extern声明外部变量 外部变量是在函数的外部定义的全局变量 它的作用域是从变量的定义处开始 到本程序文件的末尾 在此作用域内 全局变量可以为程序中各个函数所引用 编译时将外部变量分配在静态存储区 有时需要用extern来声明外部变量 以扩展外部变量的作用域 1 在一个文件内声明外部变量 例8 20用extern声明外部变量 扩展它在程序文件中的作用域 includevoidmain intmax int int 外部变量声明 externA B printf d n max A B intA 13 B 8 定义外部变量 intmax intx inty 定义 函数 intz z x y x y return z 2 在多文件的程序中声明外部变量 例8 用extern将外部变量的作用域扩展到其他文件 本程序的作用是给定 的值 输入 和 求 和am的值 文件file 中的内容为 includeintA 定义外部变量 voidmain int int 函数声明 int printf enterthenumberaanditspowerm n scanf A A printf A printf n A 文件file 中的内容为 externA 声明A为一个已定义的外部变量 int int int for A 8 9 6用static声明外部变量 有时在程序设计中希望某些外部变量只限于被本文件引用 而不能被其他文件引用 这时可以在定义外部变量时加一个 声明 例如 file1 cfile2 cstaticintA externintA can tuseAinfile1 cvoidmain voidfun intn A A n 例1main inti for i 0 i 3 i add add staticintx 0 x printf d n x 例2main intx 10 func x printf d x func intx x 20 例3intx 1 main func x printf d x func intx x 3 例4main intx 10 intx 20 printf d x printf d n x 例5intn 7 main externintn printf n d f n n voidf intt n t 1 n 1 8 8存储类别小结 1 从作用域角度分 有局部变量和全局变量 它们采用的存储类别如下 局部变量 自动变量 即动态局部变量 离开函数 值就消失 静态局部变量 离开函数 值仍保留 寄存器变量 离开函数 值就消失 形式参数可以定义为自动变量或寄存器变量 全局变量 静态外部变量 只限本文件引用 外部变量 即非静态的外部变量 允许其他文件引用 从变量存在的时间 生存期 来区分 有动态存储和静态存储两种类型 静态存储是程序整个运行时间都存在 而动态存储则是在调用函数时临时分配单元 动态存储 自动变量 本函数内有效 寄存器变量 本函数内有效 形式参数 本函数内有效 静态存储 静态局部变量 函数内有效 静态外部变量 本文件内有效 外部变量 其他文件可引用 3 从变量值存放的位置来区分 可分为 内存中静态存储区 静态局部变量 静态外部变量 函数外部静态变量 外部变量 可为其他文件引用 内存中动态存储区 自动变量和形式参数CPU中的寄存器 寄存器变量 关于作用域和生存期的概念 从前面叙述可以知道 对一个变量的性质可以从两个方面分析 一是变量的作用域 一是变量值存在时间的长短 即生存期 前者是从空间的角度 后者是从时间的角度 二者有联系但不是同一回事 5 static对局部变量和全局变量的作用不同 对局部变量来说 它使变量由动态存储方式改变为静态存储方式 而对全局变量来说 它使变量局部化 局部于本文件 但仍为静态存储方式 从作用域角度看 凡有static声明的 其作用域都是局限的 或者是局限于本函数内 静态局部变量 或者局限于本文件内 静态外部变量 8 10内部函数和外部函数 函数本质上是全局的 因为一个函数要被另外的函数调用 但是 也可以指定函数不能被其他文件调用 根据函数能否被其他源文件调用 将函数区分为内部函数和外部函数 8 10 1内部函数 如果一个函数只能被本文件中其他函数所调用 它称为内部函数 在定义内部函数时 在函数名和函数类型的前面加static 即static类型标识符函数名 形参表 如staticintfun inta intb 8 10 2外部函数 1 在定义函数时 如果在函数首部的最左端加关键字extern 则表示此函数是外部函数 可供其他文件调用 如函数首部可以写为externintfun inta intb 这样 函数fun就可以为其他文件调用 C语言规定 如果在定义函数时省略extern 则隐含为外部函数 本书前面所用的函数都是外部函数 2 在需要调用此函数的文件中 用extern对函数作声明 表示该函数是在其他文件中定义的外部函数 例8 22有一个字符串 内有若干个字符 今输入一个字符 要求程序将字符串中该字符删去 用外部函数实现 File c 文件 includevoidmain externvoidenter string charstr externvoiddetele string charstr charch externvoidprint string charstr 以上3行声明在本函数中将要调用的在其他文件中定义的3个函数 charc charstr 80 scanf c file 文件 includevoidenter string charstr 80 定义外部函数enter string gets str 向字符数组输入字符串 file 文件 voiddelete string charstr charch 定义外部函数delete string inti j for i j 0 str i 0 i if str i ch str j str i str i 0 file 文件 includevoidprint string charstr printf s n str 运行情况如下 输入 输入要删去的字符 输出已删去指定字符的字符串
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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