火龙果-C语言重难点精选_第1页
火龙果-C语言重难点精选_第2页
火龙果-C语言重难点精选_第3页
火龙果-C语言重难点精选_第4页
火龙果-C语言重难点精选_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言精华作者:刘丽英print函数n 1.格式字符格式字符n (1)u格式格式 %u为为unsigned型数据以十进制整形输出型数据以十进制整形输出n (2)d格式格式 %d为整形输出为整形输出n %md.其中其中m为指定的字段的宽度,如果数据的位数小于为指定的字段的宽度,如果数据的位数小于m,则左,则左端补以空格,如果数据的位数大于端补以空格,如果数据的位数大于m则按实际输出则按实际输出n eg:printf(%4d,%4d,a,b);n 若若a=123,b=12345,则输出结果为则输出结果为n _123,12345n 同理有同理有%mld,%mo(八进制输出八进制输出),%mx(十六进

2、制输出)(十六进制输出),%mcn (3)s格式格式 %s用来输出一个字符串用来输出一个字符串n %msn %-ms如果字符串小于如果字符串小于m,则在,则在m列范围内,字符串向左靠,右列范围内,字符串向左靠,右补空格补空格n n %m.ns输出占有输出占有m列,但只取字符串中左端列,但只取字符串中左端n个字符。这个字符。这n个字个字符输出在符输出在m列的右侧,左补空格列的右侧,左补空格n %-m.ns输出占有输出占有m列,但只取字符串中左端列,但只取字符串中左端n个字符。这个字符。这n个字个字符输出在符输出在m列的左侧,右补空格。若列的左侧,右补空格。若nm则则m自动取自动取n值,即保证值,

3、即保证n个个字符正常输出字符正常输出n (4)f格式格式n %m.nf一共占一共占m列,其中有列,其中有n为小数。如果数值长度小于为小数。如果数值长度小于m则左则左端补空格。端补空格。n %-m.nf基本同上,只是输出数值向左端靠齐,右端补空格基本同上,只是输出数值向左端靠齐,右端补空格n (5)e格式格式 以指数形式输出实数以指数形式输出实数n %e数字部分的小数位为数字部分的小数位为6位,指数部分占位,指数部分占5位(如位(如 e+002),数),数值按规范化指数形式输出(即小数点前必须有而且只有值按规范化指数形式输出(即小数点前必须有而且只有1位非零数位非零数字)。字)。n 例如例如:n

4、 printf(%e,123.456);输出结果为输出结果为1.234560e+002所输出实数共所输出实数共占占13列(不同系统的规定略有不同)列(不同系统的规定略有不同)n %m.ne与与%-m.ne中的中的m,n,-与前面的相同。此时的与前面的相同。此时的n指的是拟指的是拟输出的数据的小数部分(又称尾数)的小数位数若输出的数据的小数部分(又称尾数)的小数位数若f=123.456,则则n printf(%e- -%10e- -%10.2e- -%.2e- -%-10.2e,f,f,f,f,f);n 输出结果如下输出结果如下n 1.234560e+002- -1.234560e+002- -

5、 -1.23e+002- -1.23e+002- -1.23e+002-n 13列列 13列列 10列列 9列列 10列列条件表达式n 条件表达式,条件表达式,C中唯一的一个三目表达式中唯一的一个三目表达式n 表达式1?表达式2:表达式3n 例1n if(ab) 优先级别比关系运算符和算术运算符都低n max=a; ab?a:b+1;ab?a:(b+1);(ab?a:b)+1;n else max=(ab)?a:b; max=ab?a:b;n max=b; 结合方向自右至左n 表达式2和3不仅可以是数值表达式,还可以是赋值表达式或函数表达式;表达式1,2,3的类型可以都不同。n eg2:n a

6、b?(a=100):(b=123); ab?printf(%d,a):printf(%d,b);n x?a:b; xy?1:1.5;数据类型n 浮点小数浮点小数n 1.指数形式:包含整数部分、字母E或e和阶数。如 2.48E23 。注意尾数部分不能省、阶码必须是整数n 2.十进制小数:包含整数部分、小数点和小数部分。其中小数点不能省。n 文字数据的表示文字数据的表示n 1.单个字符:单个字符的表现形式是由单引号括起来的一个字符,如A。其中单引号、双引号、反斜杠的表现形式比较特殊,分别是 ,n , 。n 数据类型转换数据类型转换n 1.强制类型转换 (类型)表达式n 强制类型装换最主要的用途一是

7、满足一些运算对类型的要求,例如求余运 “ % ”要求运算符两侧的数据类型为整型,(int) 2.5%3 二是防止丢失整数除法中的小数部分。n break语句的的作用:语句的的作用:n 1.用于用于switch语句中,从中推出语句中,从中推出switch语句。语句。n 2.用于循环语句中,从循环体内直接退出循环。用于循环语句中,从循环体内直接退出循环。n 注意:对于嵌套的循环语句和注意:对于嵌套的循环语句和switch语句,语句,break语句的执行只能退语句的执行只能退出直接包含出直接包含break的那层结构的那层结构函数n C语言的函数可以分为三类:主函数语言的函数可以分为三类:主函数mai

8、n()、库函数、库函数(如如 ,printf()scanf())、和用户自定义函数)、和用户自定义函数n 自定义的函数类型自定义的函数类型n 函数类型与return语句的返回值类型相同,当函数类型缺省时默认为整形,如果函数无返回值用void。函数体可以为空。n return(表达式);表达式可为一个变量、常量、表达式,函数类型决定返回值类型n 函数的调用函数的调用n 实参与形参之间是“单向的值传递”实参可以是常量、变量表达式或函数。n 函数递归调用函数递归调用n 直接或间接地调用函数自身为函数递归调用。n 递归调用必须可以满足一定条件时结束调用,否则无限的递归调用将导致程序无法结束。数组n 一

9、、一维数组一、一维数组n 1.一维数组的定义一维数组的定义n 数组类型的所有元素都是同一种类型按顺序存放在一个连续的存储空间中,下表从0开始顺序编号。n 数组元素的个数是一个固定值,可以是整型常量、符号常量或者整型常量表达式。n 定义数组时,系统将按照数组类型和个数数组元素,分配一段连续的存储空间存储,绝对不能使用变量或者变量表达式来表示元素的个数,大多数情况下不要省略元素的个数(形参和数组初始化时除外)。n 2。一位数组的引用。一位数组的引用n C语言规定只能逐个引用数组元素,而不能一次引用整个数组.n C语言不检查边界,所以当超越边界是系统将不会提示错误,但运行时可能导致其他变量甚至程序被

10、破坏。n 数组元素的使用方法与同类型的变量使用方法相同,可以参加各种运算,常用于循环语句来处理n 二、多维数组二、多维数组n 1.多(以二维为例)维数组的定义多(以二维为例)维数组的定义n 类型标示符 数组名 元素个数1元素个数2 .元素个数N ;n 二维数组中元素的存放顺序是按行存放的 ;多维数组的存储顺序为:最左边的下标变化最慢,越往右边变化越快。n 三、数组作为函数参数n 数组中的元素和数组名都可以作函数参数,但效果不一样。n 2.一维数组元素作为函数参数一维数组元素作为函数参数n 一一维数组中元素作为函数实参,与同类型的简单变量作为实参一样是单向的值传递,即数组元素的值传给形参,形参的

11、改变不影响作为数组元素的实参,n 3数组名作为函数参数数组名作为函数参数n 此时形参和实参都是数组名(或者是表示地址的指针变量,见第十讲),传递的是整个数组(数组的起始地址),即形参数组和实参数组完全等同,是存放在同一空间的同一个数组。这样形参数组修改时是参数组也同时被改变了。形参中的数组要定义,并且要求与实参数组类型一致,但是形参数组的大小(即元素个数)可以小于等于实参数组的个数,甚至可以省略,而有一个专门的形参传递元素个数。n 变量类别与编译预处理n 一、全局变量与局部变量一、全局变量与局部变量n C语言根据变量的作用域不同,将变量分为局部变量和全局变量n 局部变量:局部变量:在函数内部定

12、义的变量,它只在定义它的函数内部有效。 全局变量:全局变量:在所有函数的外部定义的变量,作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。n 全局变量主要用于函数之间数据的传递。具体应用在两方面:一是函数可以将结果保存在全局变量中,这样函数得到多个执行结果,而不局限于一个返回值;二是由于函数可以直接使用全局变量的数据,从而减少了函数调用时的参数。n 用用extern、static声明的全局变量:声明的全局变量:n 如果组成这一个程序的几个文件需要用到同一个全局变量,只要在其他引用该全局变量的源程序文件中说明该全局变量为extern即可。n 反之,如果

13、希望一个源程序文件中的全局变量仅限于该文件使n 用,只要在该全局变量定义时的类型说明前加一个static。n 二、自动变量、静态变量和寄存器变量二、自动变量、静态变量和寄存器变量n C语言根据变量的存储空间的不同,可以分为寄存器变量、静态变量、和自动变量。n 自动变量:自动变量:动态变量的存储空间为内存中的动态数据区。n 自动变量的类型修饰符auto 放在变量的类型说明之前。但auto一般不写的。在函数体内或者复合语句内定义的局部变量只要不专门说明是static存储类型都属于自动变量,采用动态存储方式。n 特点是当程序和执行到自动变量的作用域时,才为自动变量分配存储空间,并且定义自动变量的函数

14、执行结束后,程序将释放自动变量的空间,留给其他自动变量使用。n 静态变量:静态变量:静态变量的存储空间为内存的静态数据区,该区域中的数据在整个程序的运行期间一直占用这些存储空间,知道整个程序运行结束。n 所有的全局变量都是静态变量,而局部变量只有加上类型修饰符static,才为局部静态变量。n n 静态变量的特点是在程序的整个执行过程中始终存在,但在它作用域之外不能使用,即静态变量的生存期就是整个运行期。n 在选择使用静态变量还是动态变量时,可以考虑以下两点:一是如果需要在两次函数调用之间保持上一次函数调用结果,可以使用局部静态变量;二是如果在每次掉用函数时都必须对局部变量初始化,选择自动变量

15、。但是实际上局部静态变量占用内存时间较长,并且可读性差,因此,除非必要,尽量避免使用局部变量。n 寄存器变量:寄存器变量:为提高运算速度,C语言允许将一些频繁使用的局部变量定义为寄存器变量,这样程序尽可能地为它分配寄存器存放,而不用内存。n 三、宏定义三、宏定义n C语言提供的预处理命令主要有:宏定义、文件包含和条件编译。其中宏定义分为带参数的宏定义和不带参数的宏定义。n 1.不带参数的宏定义n #define 标识符标识符 字符串字符串n n 它的作用是在编译预处理时,将源程序中所有的标识符替换成字符串n 注意:(注意:(1)宏名一般用大写字母,以便与变量名区分)宏名一般用大写字母,以便与变

16、量名区分n (2)宏名的有效范围是从定义为止到文件结束,如果需)宏名的有效范围是从定义为止到文件结束,如果需要要n 终止宏定义的作用域,可以用终止宏定义的作用域,可以用#undef命令 n (3)宏定义时可以引用已经定义的宏名)宏定义时可以引用已经定义的宏名n (4)对程序中用双引号括起来的字符串内的字符,不进)对程序中用双引号括起来的字符串内的字符,不进 n 行宏的替换操作。行宏的替换操作。n 2.带参数的宏定义n #define 标识符(参数表)字符串标识符(参数表)字符串n 它的作用是在编译预处理时,将源程序中所有标识符替换成字符串,并且将字符串中的参数用实际参数替换。n 注意:(注意:

17、(1)在宏定义时,宏名和参数之间不能有空格)在宏定义时,宏名和参数之间不能有空格n (2)一般在宏定义时,字符串中的形式参数外面加一个)一般在宏定义时,字符串中的形式参数外面加一个 n 小括号。小括号。 指针(一)n 10.1地址和指针n 计算机内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编码,这个编码就称为地址。凡是放在内存中的程序和数据都有一个地址。n 当C程序中定义一个变量时,系统就分配一个带有唯一地址的存储单元来存储这个变量。例如,若有下面的变量定义:char a=A; int b=88; long c=89;系统经根据变量的类型分别为 a 、b、c分配1个、2个、4个

18、字节的存储单元,此时变量所占存储单元的第一个字节的地址就是变量的地址。n 程序对变量的读取操作(即变量的引用),实际上是对变量所在空间写入或取出数据。通过变量名直接引用变量,成为“直接引用” 方式,这种引用方式是由系统自动完成变量名与其存储地址之间的转换。n 此外,C语言中还有另一种称为“间接引用”的方式。他首先将变量的地址存放在一个变量(存放地址的变量称为指针)中,然后通过n 三、指针变量作为函数参数n 在C语言中,函数参数可以是指针类型。当指针变量作函数参数,其作用是将一个变量的地址传送到另一个函数中。此时形参从实参获得了变量的地址,即形参和实参指向同一个变量,当形参指向的变量发生变化时,

19、实参所知的变量也随之变化。n 10.3 指针与一维数组n 一、指向数组元素的指针变量n 1.定义与赋值n 这种定义方式与指向变量的指针的定义相同。例如:n int a5 , *p; /*指针变量可以p可以指向任意的整型变量 n p=&a0 ; 因此也 可以指向数组a的任意元素*/ n 表示 p指向数组的第一个元素a0 。因为数组名代表数组的地址,也 n 是第一个数组的地址。因此上面的赋值语句p=&a0; p=a;指向数组元素的值也可以在定义时赋初值。 n 2.引用n 如有以下的定义和赋值:n int a5, *p;n p=&a1;n 即指针变量p指向数组元素a1,则可以通过指针运算符“*”来对

20、数组元素进行引用。例如:n *p=10;n 表示对p所指向的数组元素a1赋值,上式等价于a1=10;n 引用一个数组元素可以有两种方法:n (1)下标法,如a i 。n (2)指针法,如*(p+i )。n 二、数组名作函数参数n 存放变量地址的指针变量来引用变量。n 一个变量的地址称为该变量的指针。用来存放一个变量地址的变量称为指针变量。当指针变量p的值为某变量的地址时,可以说指针变量p指向该变量n 10.2 指向变量的指针变量n 一、指针变量和其他变量一样要先定义在使用,定义形式为 :n 类型名类型名 *指针变量名;指针变量名;n 例如:int *p; float *q; char *t;n

21、 类型名表示指针变量所指向的变量的类型,而且只能指向这种类型的变量。指针变量也允许在定义是进行初始化。n 二、指针变量的引用n 指针变量的两个运算符:(1)&取地址运算符(2)*指针运算符n 例如:&a表示变量a的地址,*p表示指针变量p指向的变量。n 关于指针的引用有两点需要注意:关于指针的引用有两点需要注意:n (1)指针变量是用来存放地址的,不要给指针变量赋常数值。)指针变量是用来存放地址的,不要给指针变量赋常数值。n (2)指针变量没有指向确定地址前,不要对他所指的对象赋值。)指针变量没有指向确定地址前,不要对他所指的对象赋值。n 在函数调用时,是把实参数组的首地址传递给形参数组,这样

22、形参数组的元素发生变化时实参数组的元素也发生了变化。如果我们令一个指针变量指向数组的第一个元素,或者等于数组名,此时数组名和指针变量的含义相同,都表示数组的首地址。所以实参和形参使用数组名时可以用指针变量替换。n 以下列出实参和形参使用数组名或指针变量的四种情况:n 实参:数组名 数组名 指针变量 指针变量n 形参:数组名 指针变量 数组名 指针变量n 三、指向数组元素的指针变量作函数参数n 虽然数组名与指向数组首地址的指针变量都可以作为函数参数,但是由于指针变量不仅可以指向数组的首地址,也可以指向数组中任意一个元素,所以指向数组元素的指针变量作函数参数的作用范围远远大于数组名作函数参数。n

23、10.4指针与字符串n 一、指向字符串的指针变量n C语言中,字符串是通过一维字符数组来存储的。因此,可以使用指向字符数组的指针变量来实现字符串操作。n 由于字符串是按照字符数组的形式存储的,所以对字符串中字符的引用也可以用下标法或指针法。n 二、字符串作函数参数n 将字符串作函数参数传递,可以使用字符数组名或指向字符串的指针变量做参数。与上一节数组名作函数参数类似,实参和形参的对应情况也有四种。n 实参:数组名 数组名 指针变量 指针变量n 形参:数组名 指针变量 数组名 指针变量指针(二)n 11.1返回指针的函数返回指针的函数n 定义的一般形式为: n 类型名类型名 * 函数名函数名 (

24、参数表);(参数表);n 11.2指向函数的指针指向函数的指针n 一、定义的一般形式为: n 类型名类型名 (* 指针变量)();指针变量)();n 二、指向函数的指针的引用n C语言规定函数名就是函数的入口地址。所以当指向函数的指针等于函数名时,表示该指针变量指向函数。此时可以通过指向函数的指针变量调用该函数。即一般调用函数的形式是n 函数名(实参表函数名(实参表)n 改为指向函数的指针变量调用函数时,调用形式变为n (*指针变量名)(实参表)指针变量名)(实参表)n n 指向函数的指针变量在使用时要注意:由于这类指针变量等于一个函数的入口地址,所以它们做加减运算是没有意义的。n 11.3指

25、针数组n 指针数组的定义的一般形式:n 类型名类型名 *数组名数组名常量表达式常量表达式;n 指针数组的主要用于管理同种类型的指针,其中最常用于处理若干个字符串(如二维字符串)的操作。n 11.4 指针与多维数组n 不带任何下标的二维数组名表示二维数组的起始地址,对其进行加法操作时则表示作为其元素的一个一维数组(即二维数组一行)的起始地址。n 只带一维下标的二维数组名表示作为其元素的的一个一维数组(即二维数组一行)的起始地址,对其进行加法操作时表示该一维数组(即二维数组一行)的一个元素的地址。n 一一、指向二维数组元素的指针变量n 在C语言中指针即是地址,如果指针变量等于只带一维下标的二维数组

26、名,他的定义、赋值、引用与指向一维数组元素的指针变量形式相同,例如n int a23,*p;n p=a0; n 此时p指向一维数组a0的起始地址,即 p,a0,&a00相同对其进行加法操作时p+1等同于a0+1,都指向数组元素a01。所以*(p+1)等于元素a01的值。n 指向二维数组中一维数组的指针变量n C语言规定一种指针变量,如果该指针指向不带任何下标的二维数组名,指针变量指向作为二维数组元素的一个一维数组(即二维数组的一行),这样对指针变量进行加减操作则指针将在二维数组的行上移动。这种指针变量的定义形式如下:n 类型符 (*指针变量名) 指向的一维数组元素的个数n 那么对于一个2行3列

27、组成的二维数组a23,如果指针变量p指向这个二维数组中包含3个元素的一行一维数组则指针变量p的定义形式和赋值形式如下:n int a23,(*p) 3;n p=a;n 此时p指向二维数组a的起始地址。对其进行加法操作p+1等同于a+1,指向包含3个元素的一维数组a1。所以*(p+1)等于一维数组名a 1+1,所以 * ( *(p+1)+1)等于a11 。n 指向数组的指针变量在使用时,要注意与元素是指针类型的指针数组的区别。例如:n int (*q) 3 , *p3;n q是指向一个包含3个整形元素的一维数组的指针变量,p是一个由p0,p1,p2共3个指向整形数据的指针组成的一维数组。结构体、

28、共用体和枚举类型n 结构体类型结构体类型n 12.1n 一、结构体的定义形式:n struct 结构体n 类型名 1 成员名1;n 类型名 2 成员名2;n . .n 类型名n 成员名n;n ;n 其中struct是关键字,是结构体类型的标志。n 定义结构体类型的变量有三种方法:n 1.先定义结构体类型在定义变量。n 2.定义类型的同时定义变量。n 3.直接定义结构体类型变量,省略类型名。n 二、结构体变量初始化n 将结构体变量个成员的初值顺序地放在一对大括号中,并用逗号分隔,对结构体类型变量赋初值时,按每一个成员在结构体中的顺序一一对应赋值。n 三、结构体变量引用n 对结构体变量的引用可以分

29、为对结构体变量中成员的引用和对整个结构体的引用。一般对结构的变量的操作是以成员为单位进行的。n (1)对结构体变量中成员的引用n 引用的一般形式为: 结构体变量结构体变量 . 成员名成员名n “.”是成员运算符,他在所有运算符中优先级最高。n (2)对整个结构体变量的引用n 相同类型的结构体变量之间可以进行整体赋值。n 注意:结构体变量只允许整体赋值其它操作如输入、输出等必须通过引用结构体变量的成员进行相应的操作。n n 12.2结构体数组n 一、结构体数组定义n 定义结构体数组的方法和定义结构变量的方法一样,只是必须说明其为数组。定义结构体变量的三种方法都可以用来定义结构体数组。n 二、结构

30、体数组的初始化n 和一般数组一样结构体数组也可以进行初始化。n 数组每个元素的初值都放在一对大括号中,括号中依次排列元素个成员的初始值。n 三、结构体数组的引用n 对结构体数组的引用一般是对数组元素的成员进行引用。引用只要遵循对数组元素的引用规则和对结构体变量成员的引用规则即可。n#includen#includenstruct personnnchar name20;nint count;nleader3=li,0,zhang,0,wang,0;nvoid main()nnint i,j;nchar name20;nfor(j=0;j=5;j+)nnscanf(%sn,namej);nfor

31、(i=0;i3;i+)nnif(strcmp(name,)=0)nnleaderi.count+;nnnnfor(i=0;i3;i+)nprintf(%s:%dn,,leaderi.count);n指向结构体数组的指针n#includenstruct studentnnint num;nchar name20;nchar sex;nint age;n;nstruct student xinke3=01,吴衡吴衡,M,19,n 02,邱利鹤邱利鹤,M,18,03,曹晓曹晓,M,19;nvoid main()nnstruct student *p;n

32、p=xinke;nint i;nprintf(NUM NAME SEX AGEn);nfor(i=0;inum,p-name,p-sex,p-age);np+;nn结构体变量和指向结构体变量的指针作函数参数n#includen#includen#define FORMAT %dn%sn%fn%fn%fnnstruct studentnnint num;nchar name20;nfloat score3;n;nvoid main()nnvoid print(struct student stu);nstruct student xinke;nxinke.num=04;nstrcpy(xinke

33、.name,fuguoqing); 不能用不能用20=fuguoqing;nxinke.score0=88;nxinke.score1=89; 不能用不能用xinke3=88,89,95;nxinke.score2=95; nprint(xinke);nnvoid print(struct student stu)nnprintf( FORMAT,stu.num,,stu.score0,stu.score1,stu.score2);nn#includen#includen#define FORMAT %dn%sn%fn%fn%fnnstruct studen

34、tnnint num;nchar name20;nfloat score3;n xinke=04,fuguoqing,88,89,95;nvoid main()nnvoid print(struct student *stu);nstruct student *p;np=&xinke;nprint(p); 或则直接为或则直接为print(&xinke);nnvoid print(struct student *stu)nnprintf( FORMAT,(*stu).num,(*stu).name,(*stu).score0,(*stu).score1,(*stu).score2);nn 共用体

35、共用体n 12.3n 一、共用体类型及其变量的定义一、共用体类型及其变量的定义n union 共用体名n 类型名1 成员名1;n 类型名2 成员名2;n . .n 类型名n 成员名n;n ; 其中,union是关键字,是共用体的类型标志。 共用体类型变量的定义也有三种方法:n 1.先定义共用体类型,在定义变量。n 2.定义类型的同时定义变量。n n 3.直接定义共用体类型变量。n 二、共用体变量的引用n 共用体类型变量也必须先定义在使用。不能直接引用结构体变量本身,只能引用结构体变量成员。引用的一般形式为:n 共用体变量名 . 成员名n 共用体变量的每一个成员也可以像普通变量一样进行其类型允许的各种操作。但要注意:由于共用体类型采用的是覆盖技术,因此共用体变量中起作用的总是最后一次存放的成员变量的值。n 共用体变量可以作为结构体变量的成员,结构体变量也可以作为共用体变量的成员,并且共用体类型也可以定义数组。n 注意:不能对共用体变量进行初始化。不能将共用体变量作为函数参数和返回值n 枚举类型枚举类

温馨提示

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

评论

0/150

提交评论