最新C语言基础学习笔记资料_第1页
最新C语言基础学习笔记资料_第2页
最新C语言基础学习笔记资料_第3页
最新C语言基础学习笔记资料_第4页
最新C语言基础学习笔记资料_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档一:程序设计与算法对于理工科的大学生而言, 掌握一门高级语言及其基本的编程技能是必需的。 大学学习, 除 了掌握本专业系统的基础知识外, 科学精神的培养、 思维方法的锻炼、 严谨踏实的科研作风 养成,以及分析问题、解决问题的能力的训练,都是日后工作的基础。学习计算机语言,正 是一种十分有益的训练方式,而语言本身又是与计算机进行交互的有力的工具。C 语言之所以被称为中级语言,是因为它把高级语言的成分同汇编语言的功能结合起来了。1 1 结构C 语言是块结构( b l o c k - s t r u c t u r e d )语言,但是它还是常被称为结构化语言。这是 因为它在结构上类似于 A

2、 L G O L 、 P a s c a l 和 M o d u l a - 2 (从技术上讲,块结构语言允 许在过程和函数中定义过程或函数。 用这种方法, 全局和局部的概念可以通过 “作用域 ”规则 加以扩展, “作用域 ”管理变量和过程的 “可见性 ”。因为 C 语言不允许在函数中定义函数, 所 以不能称之为通常意义上的块结构语言) 。结构化语言的显著特征是代码和数据的分离。 这种语言能够把执行某个特殊任务的指令和数 据从程序的其余部分分离出去、隐藏起来。C 语言的主要结构成分是函数 C 的独立子程序。在 C 语言中,函数是一种构件(程序块) , 是完成程序功能的基本构件。 函数允许一个程

3、序的诸任务被分别定义和编码, 使程序模块化。函数的基本形式是:函数类型函数名 (形式参数 )形式参数说明;数据说明部分;语句部分;其中:函数头 包括函数说明、函数名和圆括号中的形式参数(如 int volume(a,b,c) ),如果函数 调用无参数传递,圆括号中形式参数为空(如 void proc() 函数)。形式参数 指定函数调用传递参数的数据类型(如例 1 . 3 中语句 int a,b,c;)。 函数体 包括函数体内使用的数据说明和执行函数功能的语句,花括号和 表示函数体的开始和结束。开发一个 C 程序,包括以下四步:1) 程序设计程序设计亦称程序编辑。程序员用任一编辑软件(编辑器)将

4、编写好的C 程序输入计算机,并以文本文件的形式保存在计算机的磁盘上。编辑的结果是建立 C 源程序文 件。C程序习惯上使用小写英文字母,常量和其他用途的符号可用大写字母。C语言对大、小写字母是有区别的。关键字必须小写。2) 程序编译编译是指将编辑好的源文件翻译成二进制目标代码的过程。编译过程是使用C语言提供的编译程序 (编译器) 完成的。 不同操作系统下的各种编译器的使用命令不完全相 同,使用时应注意计算机环境。 编译时, 编译器首先要对源程序中的每一个语句检查语法错 误,当发现错误时, 就在屏幕上显示错误的位置和错误类型的信息。此时,要再次调用编辑器进行查错修改。然后, 再进行编译,直至排除所

5、有语法和语义错误。 正确的源程序文件经过编译后在磁盘上生成目标文件。3 ) 链接程序编译后产生的目标文件是可重定位的程序模块,不能直接运行。链接就是把目 标文件和其他分别进行编译生成的目标程序模块 (如果有的话) 及系统提供的标准库函数链 接在一起,生成可以运行的可执行文件的过程。链接过程使用 C 语言提供的链接程序(链 接器)完成,生成的可执行文件存在磁盘中。4) 程序运行生成可执行文件后,就可以在操作系统控制下运行。若执行程序后达到预期目的,则 C 程序的开发工作到此完成。否则,要进一步检查修改源程序,重复编辑 编译 链接 运行的过程,直到取得预期结果为止。大部分 C 语言都提供一个独立的

6、开发集成环境,它可将上述四步连贯在一个程序之中。12 算法:什么是程序?程序 = 数据结构 + 算法。程序设计的关键之一,是解题的方法与步骤, 是算法。学习高级语言的重点,就是掌握分析 问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。与之相对应, 具体语言,如 C 语言的语法是工具,是算法的一个具体实现。所以在高级语言的学习中, 一方面应熟练掌握该语言的语法, 因为它是算法实现的基础, 另一方面必须认识到算法的重 要性,加强思维训练,以写出高质量的程序。:数据类型、运算符和表达式21 数据类型C 语言有五种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。C语言还提

7、供了几种聚合类型(aggregate types),包括数组、指针、结构、共用体(联合) 位域和枚举。为了使用方便,C编译程序允许使用整型的简写形式:? short int? long int? unsigned short int? unsigned int? unsigned long int 即 int 可缺省。简写为 short。简写为 long。简写为 unsigned short。简写为 unsigned。简写为 unsigned long 。2 2 变量在 C 语言中,标识符是对变量、函数标号和其它各种用户定义对象的命名。标识符的长度 可以是一个或多个字符。 绝大多数情况下, 标

8、识符的第一个字符必须是字母或下划线, 随后 的字符必须是字母、数字或下划线(某些 C 语言编译器可能不允许下划线作为标识符的起 始字符)。字符常量是指用一对单引号括起来的一个字符。如 a ', 。9'字,符常!量'中的单引号只起定界作用并不表示字符本身。单引号中的字符不能是单引号(')和反斜杠( ),它们特有的表示法在转义字符中介绍。在C语言中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。由于C语言中字符常量是按整数(short型)存储的,所以字符常量可以像整数一样在程序中参与相关的运算。C 语言中,字符串常量在内存中存储时,系统自动在字符串的

9、末尾加一个 “串结束标志 ”,即ASCII码值为0的字符N U L L ,常用 0表示。因此在程序中,长度为 n个字符的字符串常 量,在内存中占有 n + 1 个字节的存储空间。其值可以改变的量称为变量。一个变量应该有一个名字(标识符 ),在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念。实型常量又称浮点常量, 是一个十进制表示的符号实数。 符号实数的值包括整数部分、 尾数 部分和指数部分。实型常量的形式如下:digits.digitsE|e+|-digits在此digits是一位或多位十进制数字(从 09)。E (也可用e)是指数符号。小数点之

10、前是 整数部分,小数点之后是尾数部分,它们是可省略的。小数点在没有尾数时可省略。C 语言允许将程序中的常量定义为一个标识符, 称为符号常量。 符号常量一般使用大写英文 字母表示, 以区别于一般用小写字母表示的变量。 符号常量在使用前必须先定义, 定义的形 式是:#define 符号常量名 ; 常量;#define 是 C 语言的预处理命令,它表示经定义的符号常量在程序运行前将由其对应的常量 替换。字符变量用来存放字符常量, 注意只能存放一个字符, 不要以为在一个字符变量中可以放字 符串。23 运算符C 语言有三大运算符:算术、关系与逻辑、位操作。移位操作可对外部设备(如 D / A 转换器)的

11、输入和状态信息进行译码,移位操作还可用于 整数的快速乘除运算。如表 2 - 9 所示(假定移位时补 0),左移一位等效于乘 2,而右移一 位等效于除以 2。反码操作符为 。 的作用是将特定变量的各位状态取反,即将所有的1 位置成 0,所有的 0位置成 1。位操作符经常用在加密程序中。C语言提供了一个可以代替某些i f - t h e n - e l s e语句的简便易用的操作符?。该操作符是三元的,其一般形式为:EXP1?EXP2:EXP3EXP1, EXP2 和 EXP3 是表达式,注意冒号的用法和位置。操作符“ ?作用是这样的,在计算 EXP1之后,如果数值为True,则计算EXP2,并将

12、结果作 为整个表达式的数值;如果EXP1的值为Flase,则计算EXP3 ,并以它的结果作为整个表达式的值。逗号操作符和标准英语的 and 是同义词。2 4 表达式混合于同一表达式中的不同类型常量及变量,应均变换为同一类型的量。 C语言的编译程序将所有操作数变换为与最大类型操作数同类型。 变换以一次一操作的方式进行。 具体规则如 下:1 )所有c h a r及short int型量转为i n t型,所有f l o a t转换为d o u b l e。2) 如操作数对中一个为 long double ,另一个转换为 long double。 要不然,一个为 d o u b l e,另一个转为 d

13、 o u b l e。 要不然,一个为I o n g ,另一个转为I o n g。 要不然,一个为 u n s i g n e d ,另一个转为 u n s i g n e d 。 一旦运用以上规则。每一对操作数均变为同类型。注意,规则 2 )有几种必须依次应用的条 件。可以通过称为c a s t的构成符强迫一表达式变为特定类型。其一般形式为:( type) expression(type)是标准C语言中的一个数据类型。为了增加可读性,可以随意在表达式中插入 tab 和空格符。 冗余的括号并不导致错误或减慢表达式的执行速度。 冗余的括号并不导致错误或减慢表达式的执行速度。三:程序控制语句3.1

14、 程序的三种基本结构C 语言中,有一组相关的控制语句,用以实现选择结构与循环结构: 选择控制语句;if ;switch、case循环控制语句:for、while、dowhile转移控制语句:break、 continue、 goto3.2 数据的输入与输出最常用的输入输出函数有scanf()、printf()、getchar()和putchar()% 修饰符; 格式字;d输入一个十进制整数o输入一个八进制整数x输入一个十六进制整数f输入一个小数形式的浮点数e输入一个指数形式的浮点数c输入一个字符s输入一个字符串putchar()与getchar()是对单个字符进行输入输出的函数;getchar

15、()的功能是返回键盘输入的一个字符,它不带任何参数;putchar()的作用是向屏幕上输出一个字符,它的功能与printf函数中的%c相当。3.3 循环控制语句在循环语句中,break语句的作用是在循环体中测试到应立即结束循环时,使控制立即跳出循环结构,转而执行循环语句后的语句。continue 语句只能用于循环结构中,一旦执行了 continue 语句,程序就跳过循环体中位于该 语句后的所有语句,提前结束本次循环周期并开始新一轮循环。四:函数程序员在设计一个复杂的应用程序时, 往往也是把整个程序划分为若干功能较为单一的程序 模块, 然后分别予以实现, 最后再把所有的程序模块像搭积木一样装配起

16、来, 这种在程序设 计中分而治之的策略,被称为模块化程序设计方法。4.1 函数说明与返回值当一个函数没有明确说明类型时,C语言的编译程序自动将整型( i n t )作为这个函数的缺省类型, 缺省类型适用于很大一部分函数。 当有必要返回其它类型数据时, 需要分两步处 理:首先,必须给函数以明确的类型说明符;其次,函数类型的说明必须处于对它的首次调 用之前。当被说明为整型的函数返回字符时,这个字符值被转换为整数。因为C 语言以不加说明的方式进行字符型与整型之间的数据转换, 因而多数情况下, 返回字符值的函数并不是说明为 返回字符值,而是由函数的这种字符型向整型的缺省类型转换隐含实现的。返回语句 r

17、 e t u r n 有两个重要用途。第一,它使得内含它的那个函数立即退出,也就是使 程序返回到调用语句处继续进行。第二,它可以用来回送一个数值。所有非空值的函数都会返回一个值。大部分函数属于三种类型。 第一种类型是简单计算型 函数设计成对变量进行运算,并且返回计算值。 第二类函数处理信息,并且返回一个值,仅以此表示处理的成功或失败。例如write( ),用于向磁盘文件写信息。如果写操作成功了,write( )返回写入的字节数,当函数返回 - 1 时,标志写操作失败。最后一类函数没有明确的返回值。实际上这类函数是严格的过程型函数,不产生值。4.2 函数的作用域规则C 语言中所有的函数都处于同一

18、作用域级别上。 这就是说, 把一个函数定义于另一个函数内 部是不可能的。全局变量和某一函数的局部变量同名时, 该函数对该名的所有访问仅针对局部变量, 对全局 变量无影响 .动态存储变量可以是函数的形式参数、 局部变量、 函数调用时的现场保护和返回地址。 这些 动态存储变量在函数调用时分配存储空间,函数结束时释放存储空间。在编译时分配存储空间的变量称为静态存储变量, 其定义形式为在变量定义的前面加上关键 字 “static。”4.3 函数的调用与参数函数定义时填入的参数我们称之为形式参数, 简称形参, 它们同函数内部的局部变量作用相同。 形参的定义是在函数名之后和函数开始的花括号之前。调用时填入

19、的参数, 我们称之为实际参数,简称实参。一般说来,有两种方法可以把参数传递给函数。第一种叫做 “赋值调用 ”(call by value ),这 种方法是把参数的值复制到函数的形式参数中。 第二种方法是 “引用调用 (” call by reference ) 。 这种方法是把参数的地址复制给形式参数, 在函数中, 这个地址用来访问调用中所使用的实 际参数。这意味着,形式参数的变化会影响调用时所使用的那个变量。切记,传给函数的只是参数值的复制品。 所有发生在函数内部的变化均无法影响调用时使用 的变量。4.4 递归如果函数内部一个语句调用了函数自己, 则称这个函数是 “递归” 。递归是以自身定义

20、的过程。 也可称为 “循环定义 ”。4.5 实现问题 有两个原因使得内嵌代码的执行速度比函数快。首先,调用需要花费时间; 其次, 如果有参 数需要传递,就要把它们放在堆栈中,这也要用时间。4.6 函数库和文件一个函数设计完后, 我们可以用三种方法处理它:1) 把它放在 main( )函数的同一个文件中;2) 把它和写好的其它函数一起放在另一个文件中; 3) 把它放在函数库中。 在程序开发的早期做一点文件组织工作就可以避免这一问题。首先可以把概念上有关的函数组织到一个文件中。 如果在编写正文编辑程序时, 把删除正文 所用的所有函数放进另一个文件,等等。第二, 把所有的通用函数放在一起。 例如,在

21、数据库程序中, 输入输出格式编排函数是被 其它函数调用的通用函数,应把它们放进一个单独的文件里。第三,把最高层函数放进一个单独的文件中,如果空间允许,就和 main ( ) 放在一起。最高 层函数被用来启动程序的总体活动。这些例程从本质上定义了程序的操作4.7 C 语言的预处理程序与注释ANSI 标准定义的 C 语言预处理程序包括下列命令:#define 命令 define 定义了一个标识符及一个串。 在源程序中每次遇到该标识 符时,均以定义的串代换它。 ANSI 标准将标识符定义为宏名,将替换过程称为宏替换。该 语句没有分号。在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束。#e

22、rror 强迫编译程序停止编译,主要用于程序调试。#include 使编译程序将另一源文件嵌入带有 #include 的源文件,被读入的源文件必须 用双引号或尖括号括起来。#if #if 的一般含义是如果 #if 后面的常量表达式为true ,则编译它与 # endif 之间的代码,否则跳过这些代码。命令 #endif 标识一个 #if 块的结束。#else功能有点象C语言中的else; #else建立另一选择(在# if失败的情况下)#elif与 ELSE IF 相同,它形成一个 if else-if 阶梯状语句,可进行多种编译选择。#elif后跟一个常量表达式。如果表达式为true,则编译

23、其后的代码块,不对其它#elif表达式进行测试。否则,顺序测试下一块。#endif#ifdef#ifndef#undef取消其后那个前面已定义过有宏名定义。#line改变_LINE_与_FILE_的内容,它们是在编译程序中预先定义的标识符。#pragma为实现时定义的命令, 它允许向编译程序传送各种指令。 可用 #pragma语句指定一个跟踪选择。五:数组5.1 一维数组将一维数组传递给函数时,把数组名作为参数直接调用函数即可,无需任何下标。 这样,数组的第一个元素的地址将传递给该函数。 C 语言并不是将整个数组作为实参来传递, 而是用 指针来代替它。一维数组的最普通的用法是作为字符串。在 C

24、 语言中,字符串被定义为一个以空字符终结 的字符数组。空字符以 0'来标识,它通常是不显示的。因此,在说明字符数组时,必须比 它要存放的最长字符串多一个字符。尽管 C 语言并不把字符串定义为一种数据类型,但却允许使用字符串常量。字符串常量是 由双引号括起来的字符表。例如,下面两个短语均为字符串常量 :"hello there""this is a test" 不必向字符串的末尾加空字符,C 编译程序会自动完成这一工作。5.2 二维数组二维数组以行列矩阵的形式存储。第一个下标代表行, 第二个下标代表列,这意味着按照 在内存中的实际存储顺序访问数组元

25、素时,右边的下标比左边的下标的变化快一些。可用二维字符数组的形式建立字符串数组, 左下标决定字符串的个数, 右下标说明串的最大 长度。5.3 多维数组 关于多维数组,需要注意一点:计算机要花大量时间计算数组下标, 这意味着存取多维数组 中的元素要比存取一维数组的元素花更多的时间。 由于这些和其它原因, 大量的多维数组一 般采用 C 语言动态分配函数及指针的方法,每次对数组的一部分动态地分配存储空间。 多维数组传递给函数时,除第一维外,其它各维都必须说明。5.4 数组的初始化六:指针6.1 指针与指针变量变量 a , b 是整型变量,在内存各占 2个字节; x , y 是实型,各占 4 个字节;

26、 m 是双精度实 型,占 8个字节; c h 1 , c h 2 是字符型,各占 1个字节。访问变量,首先应找到其在内存的地址, 或者说,一个地址唯一指向一个内存变量,我们称 这个地址为变量的指针。如果将变量的地址保存在内存的特定区域, 用变量来存放这些地址, 这样的变量就是指针变量, 通过指针对所指向变量的访问, 也就是一种对变量的 “间接访问” 变量的地址就是指针,存放指针的变量就是指针变量。6.2 指针变量的定义与引用 利用指针变量,是提供对变量的一种间接访问形式。对指针变量的引用形式为: *指针变量其含义是指针变量所指向的值。6.3 指针运算符与指针表达式在 C 中有两个关于指针的运算

27、符:? &运算符 : 取地址运算符, & m 即是变量 m 的地址。? *运算符:指针运算符, * ptr 表示其所指向的变量。使用指针类型做函数的参数, 实际向函数传递的是变量的地址。 由于子程序中获得了所传递 变量的地址,在该地址空间的数据当子程序调用结束后被物理地保留下来。6.4 指针与数组 变量在内存存放是有地址的, 数组在内存存放也同样具有地址。 对数组来说, 数组名就是数 组在内存安放的首地址。 指针变量是用于存放变量的地址, 可以指向变量, 当然也可存放数 组的首址或数组元素的地址,这就是说,指针变量可以指向数组或数组元素,对数组而言, 数组和数组元素的引用, 也

28、同样可以使用指针变量。 所以引用数组的时候可以用地址法和指 针法。6.4.1 指针与一维数组若 ptr 指向了一维数组,现在看一下 C 规定指针对数组的表示方法:1) ptr+ n与a + n表示数组元素 a n 的地址,即&an。对整个a数组来说,共有1 0个元 素,n的取值为09,则数组元素的地址就可以表示为 ptr + 0ptr + 9或a + 0a + 9,与 &a0& a 9 保持一致。2) 知道了数组元素的地址表示方法,* ( ptr + n )和* ( a + n )就表示为数组的各元素即等效于 a n 。3) 指向数组的指针变量也可用数组的下标形式表示为

29、 ptr n ,其效果相当于 * ( ptr + n ) 。6.4.2 指针与二维数组对于二维数组anm : a是二维数组的首地址,& a 0 0 既可以看作数组 0行0列的首地址,同样还可以看作是二维数组的首地址,a 0 是第 0 行的首地址,当然也是数组的首地址。同理 a n 就是第 n 行的首址; & a n m 就是数组元素 a n m 的地址。 若赋值: ptr = a;则用ptr+就能访问数组的各元素。6.4.3 数组指针作函数的参数 子程序的形式参数为一维数组,实际参数是指向一维数组的指针。由于 C 程序的函数调用是采用传值调用,即实际参数与形式参数相结合时,实参

30、将值传给 形式参数, 所以当我们利用函数来处理数组时, 如果需要对数组在子程序中修改, 只能传递 数组的地址, 进行传地址的调用, 在内存相同的地址区间进行数据的修改。 在实际的应用中, 如果需要利用子程序对数组进行处理, 函数的调用利用指向数组 (一维或多维) 的指针作参 数,无论是实参还是形参共有下面四种情况:实参形参1数组名数组名2数组名指针变量3指针变量数组名4指针变量指针变量在函数的调用时,实参与形参的结合要注意所传递的地址具体指向什么对象,是数组的首址,还是数组元素的地址,这一点很重要。6.4.4 指针与字符数组6.5 指针的地址分配A N S I 标准建议设置了两个最常用的动态分

31、配内存的函数 malloc() 和 f r e e ( ) ,并包含在 s t d l i b . h 中,但有些 C 编译却使用 m a l l o c . h 包含。动态内存分配其含义是指: 当定义指针变量时, 其变量的取值是随机的, 可能指向内存的任 一单元。 若指针的指向是不安全的内存地址, 在该地址空间上的数据交换就会产生意料不到 的效果。为此, 在程序的执行过程中,要保证指针操作的安全性, 就要为指针变量分配安全 地址。在程序执行时为指针变量所做的地址分配就称之为动态内存分配。当无需指针变量操作时,可以将其所分配的内存归还系统,此过程我们称之为内存单元的释放。malloc( )用以

32、向编译系统申请分配内存;free( )用以在使用完毕释放掉所占内存。为指针变量分配的存储空间长度取决于存放字符的多少。6.6 指针数组6.7 指向指针的指针一个指针变量可以指向整型变量、 实型变量、 字符类型变量, 当然也可以指向指针类型变量。 当这种指针变量用于指向指针类型变量时,我们称之为指向指针的指针变量,6.8 main 函数的参数七:结构体与共用体7.1 结构体类型变量的定义和引用7.2 结构体数组的定义和引用 程序中要谨慎处理以数组名作函数的参数。 由于数组名作为数组的首地址, 在形参和实参结 合时, 传递给子程序的就是数组的首地址。 形参数组的大小最好不定义, 以表示与调用函数

33、的数组保持一致。7.3 结构体指针的定义和引用程序中使用结构体类型指针引用结构体变量的成员,需要通过C提供的函数m a II o c ()来为指针分配安全的地址。函数 s i z e o f ( )返回值是计算给定数据类型所占内存的字节数。 定义结构体类型的指针,既可以指向数组的元素,也可以指向数组,在使用时要加以区分。p 是指向一维结构体数组的指针,对数组元素的引用可采用三种方法。1) 地址法student + i和p + i均表示数组第i个元素的地址,数组元素各成员的引用形式为:(student + i )- > n a m e、( student + i ) - > n u

34、m 和 ( p + i ) - > n a m e 、( p + i )- > n u m 等。 student + i 和 p + i 与 & student i 意义相同。2) 指针法若p指向数组的某一个元素,则p + +就指向其后续元素。3) 指针的数组表示法若p = student,我们说指针p指向数组student ,p i 表示数组的第i个元素,其效果与student i 等同。对数组成员的引用描述为 : p i . n a m e、p i . n u m 等。7.5 共用体 所谓共用体类型是指将不同的数据项组织成一个整体,它们在内存中占用同一段存储单元。其定义形式为:union 共用体名成员表列 ;结构体类型所占的内存空间为其各成员所占存储空间之和。 而形同结构体的共用体类型实际 占用存储空间为其最长的成员所占的存储空间。 由于共用体各成员共用同一段内存空间, 使 用时,根据需要使用其中的某一个成员,即在某一时刻,只能使用其中之一的成员。八:输入、输出和文件系统 从标准输入设备 键盘输入,由标准输出设备 显示器或打印机输出。 字符文件通常又称为 ASCII 码文件或正文文件,按字符存储,具有可读性;而二进制文件 是以二进制存储,不具备可读性,但从存储空间的利用来看,实型数无论位数大小均占 4 位,字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论