函数及变量的存储市公开课获奖课件_第1页
函数及变量的存储市公开课获奖课件_第2页
函数及变量的存储市公开课获奖课件_第3页
函数及变量的存储市公开课获奖课件_第4页
函数及变量的存储市公开课获奖课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 函 数第1页第1页目的描述 C 语言中函数掌握 C 语言中常见内置函数理解函数原型和函数返回值纯熟掌握自定义函数定义和调用理解变量作用域、生命期理解变量存储类型正确理解函数在C语言程序设计中作用和地位;理解函数、形参、实参、作用域、生存期概念;掌握各种函数定义、原型申明和调用办法;理解全局变量、局部变量、静态变量、静态函数作用域和生存期;掌握递归函数编写规则;掌握利用工程管理程序办法; 第2页第2页6.1.1 什么是模块化 模块化程序设计办法: 人们在求解某个复杂问题时,通常采用逐步分解、分而治之办法,也就是将一个大问题分解成若干个比较容易求解小问题,然后分别求解。程序员在设计一个复杂

2、应用程序时,往往也是把整个程序划分成若干个功效较为单一程序模块,然后分别予以实现,最后再把所有程序模块象搭积木同样装配起来,这种在程序设计中分而治之策略,被称为模块化程序设计办法。 6.1 概述第3页第3页maincabdefghijkl图6-1 C程序模块化C程序模块化第4页第4页6.1.2 什么是函数?在C语言中,模块就是一组逻辑相关(这也表达了软件工程中“内聚性”)语句集合或说是用于完毕特定任务程序代码单元。依据规模大小,C语言中模块有三种形式:语句块(即复合语句)函数文献。函数是C语言中最为惯用模块单元。因此通常说C程序是由函数构成;函数是C语言程序基本构成部分。第5页第5页void

3、main() : x=x*x*x; y=y*y*y; z=z*z*z; ans1=x+y+z; a=a*a*a; b=b*b*b; c=c*c*c; ans2=a+b+c; :重复多次同一计算类型void main() : ans1=cube(x,y,z); ans2=cube(a,b,c); :int cube(int a,b,c) int ans; ans=(a*a*a)+(b*b*b)+(c*c*c); return ans;函数主程序ans函数能够把相对独立某个功效抽象出来,使之成为程序中一个独立实体。能够在同一个程序或其它程序中多次重复使用为何使用函数?第6页第6页使程序变得更简短而

4、清楚 有助于程序维护能够提升程序开发效率 提升了代码重用性 函数机制长处第7页第7页6.2.1 函数分类 内置函数(库函数):由语言系统提供;用户不必定义,也不必在程序中作类型阐明;只需在程序前包括有该函数定义头文献; 自定义函数:用户在程序中依据需要而编写函数;从用户角度6.2 函数定义与使用第8页第8页内置函数头文献用途double sqrt(double x)math.h计算x平方根double pow(double x, double y)计算xy次幂double ceil(double x)求不小于x最小整数,并以double形式显示double floor(double x)求小于

5、x最大整数,并以double形式显示int toupper(int x)ctype.h假如x为小写字母,则返回相应大写字母int tolower(int x)假如x为大写字母,则返回相应小写字母int rand(void)stdlib.h产生一个随机数void exit(int retval)终止程序惯用库函数使用库函数普通办法:1、函数功效2、函数参数数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用包括文献第9页第9页 函数定义格式函数体合法标识符函数返回值类型函数类型 函数名(形参类型阐明表)阐明部分语句部分return 语句下列红色为函数6个元素函数头部第10页第10页

6、参数:普通用于一个函数把数据传递给另一个函数(调用者和被调用者之间),实现函数之间通信。定义函数时候,函数参数是形式参数,是对一件详细事件也许需要数据假设。返回值: 即函数带回来值。而返回值类型是在定义函数时指定,即用“返回值类型”指定函数类型。1、假如类型标识符为void则表示不需要带回函数值;2、假如没有类型标识,则TC2.0默认返回值类型是int(在vc+ 6.0中则认为默认为void,视编译器不同而不同)。函数体:一对花括号里面内容(包括申明部分和语句部分)又被称为函数体,当函数体为空时候,该函数也被叫做空函数,就是说它什么也不做。第11页第11页例6-1 计算两个整数平均数函数。/*

7、 函数功效:就算平均数函数入口参数:整型x,存储第一个运算数 整型y,存储第二个运算数函数返回值:平均数*/int Average(int x , int y) int result; result=(x+y)/2; return result;第12页第12页 大多数情况下,调用者(主调函数)和被调用者(被调用函数)之间有数据传递关系,也就是说该函数有参数(能够称为有参函数,不然叫做无参函数)。在定义函数时函数名后面括号中参数称为“形式参数”(简称“形参”),在主调函数中调用一个函数时,函数名后面括号中参数(能够是一个“表示式”)称为“实际参数”(简称“实参”)。参数和参数传递方式6.2.3

8、 函数参数和返回值第13页第13页例6-2调用函数时数据(参数)传递。#include void main() int max(int x, int y); int a, b, c; scanf(%d, %d,&a, &b); c=max(a, b); printf(max is %d, c);int max(int x, int y) /*定义有参函数max*/ int z; z=xy?x:y; return(z); 运营情况下列:7,8Max is 8第14页第14页关于形参和实参阐明:在定义函数中指定形参,在函数尚未被调用时,它们并不占用内存中存储单元。只有在发生函数调用时,函数max中

9、形参才被分派内存单元。在调用结束后,形参所占内存单元也被释放。实参能够是常量、变量或表示式,比如:max(3,a+b);但要求它们有拟定值。在调用时将实参值赋给形参。参数和参数传递方式第15页第15页关于形参和实参阐明:在被定义函数中,必须指定形参类型。实参加形参类型应相同或赋值兼容。在C语言中,实参向形参数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同单元。参数和参数传递方式第16页第16页2222abxy图6-3 参数值传递221015abxy图6-4 实参值不变参数和参数传递方式第17页第17页int Check (int n

10、um) if (num % 5 = 0) return 1; else return 0;通常,希望通过函数调用使主调函数能得到一个拟定值,这就是函数返回值,也称函数值。C 语言中 return 语句用于向调用函数返回值,语法下列:return (); 函数返回值第18页第18页void swap(int x, int y) int z; z=x; x=y; y=z; printf(nx=%d,y=%d,x ,y);main( ) int a= 10,b=20; swap(a,b); printf(na=%d,b=%dn,a,b);程序输出结果:x=20,y=10a=10,b=20形式参数(形

11、参)实际参数(实参)【例】编一程序,将主函数中两个变量值传递给swap函数中两个形参,互换两个形参值。单向值传递第19页第19页c=max(a, b);(调用main函数)(max函数)int max(int x, int y) int z; z=xy?x:y; return(z);图6-2 函数调用函数返回值第20页第20页void main() : ans1=cube(2,5,7); ans2=cube(2,3,4); :int cube(int a,int b,int c) int ans; ans=(a*a*a)+(b*b*b)+(c*c*c); return ans;函数主程序ans

12、参数(实参)参数(形参)返回值第21页第21页(1)函数返回值是通过函数中return语句取得。阐明return语句将被调用函数中一个拟定值带回主调函数中去。 假如需要从被调用函数带回一个数值,则被调用函数中必须包括reutrn 语句。假如不需要则能够不要return语句。一个函数中能够有一个以上return语句,执行到哪一个 return语句,则哪个语句起作用。return语句后面括号也能够不要,如“return z;”和“return (z);”等价。return后面值能够是一个表示式。比如,例6.2中函数max能够改写下列: max(int x, int y) return (xy?x:

13、y); 第22页第22页(2)函数类型。既然函数有返回值,这个值当然应属于某一个拟定类型,应当在定义函数时指定函数值类型。 比如下面是3个函数首行: int max(float x, float y) /*函数值为整型*/ char letter(char c1, char c2) ) /*函数值为字符型*/ double min(int x, int y) )/*函数值为双精度型*/ 在C语言中,凡不加类型阐明函数,自动按整型处理。第23页第23页(3)在定义函数时指定函数类型普通应当和return语句中表示式类型一致。 例6.2中指定max函数值为整型,而变量z也被指定为整型,通过retu

14、rn语句把z值作为max函数值,由max带回主调函数。z类型与max函数类型是一致,是正确。假如函数值类型和return语句中表示式值不一致,则以函数类型为准。对数值型数据,能够自动进行类型转换。即函数类型决定返回值类型。(4)对于不带返回值函数,应当用“void”定义函数为“无类型”(或称“空类型”)。 这样,系统就确保不使函数带回任何值,即严禁在调用函数中使用被调用函数返回值。此时在函数体中不得出现return语句。第24页第24页例6-3 返回值类型与函数类型不同。#include void main() int max(int x, int y); float a, b int c;

15、scanf(%f, %f, &a, &b); c=max(a, b); printf(max is %d, c);int max(float x, float y) float z;/*z为实型变量*/ z=xy?x:y; return(z);运营情况下列:1.5,2.5Max is 2第25页第25页6.3.1 函数调用普通形式 函数调用普通形式为 函数名(实参表列);注意事项:(1)假如是调用无参函数,则“实参表列”能够没有,但是括号不能省略。(2)假如实参表列包括多个实参,则各个参数间用逗号隔开。 实参能够是常量、变量、表示式、函数等 6.3 函数调用 第26页第26页注意事项: (3)

16、 赋值对应关系: 实参1 - 形参1 实参2 - 形参2 实参n - 形参n (4)实参表求值次序(即实参赋值给形参次序) 因系统而定。TC、BC、VC均是自右向左,也就是说最右边实参最先赋值给最右边形参, 最左边实参最终赋值给最左边形参。但VC与TC、BC在详细赋值时稍有不同,注意它们之间区分。 第27页第27页例6-4 实参求值顺序。#include void main( ) int f(int a, int b); /*函数申明*/ int i=2, p; p=f(i, +i); /*函数调用*/ printf(%dn, p);int f(int a, int b) /*函数定义*/ i

17、nt c; if(ab) c=1; else if(a=b) c=0; else c= -1; return (c);问:在Turbo C 2.0和Turbo C+ 3.0系统上运营结果?原型申明 i为实参 a、b为形参 第28页第28页若按自左至右顺序求实参值,则函数调用相称于f(2,3),程序运营应得结果为“-1”。 若按自右至左顺序求实参值,则它相称于f(3,3),程序运营结果为“0”。分析: 假如本意是按自左而右顺序求实参值,即f(2,3)调用,可改写成: j=i; k=+i; p=f(j, k); 假如本意是自右而左求实参值,即f(3,3)调用,可改写成: j=+i; p=f(j,

18、j);是否有办法让参数拟定?第29页第29页1.函数语句 把函数调用作为一个语句。这时不要求函数带来返回值,只要求函数完毕一定操作。比如: printstar ( ); printf (“Hello,World!n”);2.函数表示式 函数出现在一个表示式中,这种表示式称为函数表示式。这是要求函数带回一个拟定值以拟定参与表示式运算。比如: C=2*max(a, b); 函数max是表示式一部分,它值乘2再赋给c。6.3.2 函数调用方式 按函数在程序中出现位置分,可有3种函数调用方式:第30页第30页3.函数参数 函数调用作为一个函数实参。比如: M=max(a, max(b, c); 其中m

19、ax(b,c)是一次函数调用,它值作为max另一次调用实参。M值是a、b、c三者中最大者。比如: printf(“%d”, max(a, b); 也是把max(a, b)作为printf函数一个函数。 函数调用作为函数参数,实质上也是函数表示式形式调用一个,由于函数参数本来就要求是表示式形式。第31页第31页6.3.3 对被调用函数申明和函数原型#include float count (int, int);void main() . . . . . .float count(int x,int y) . . .函数原型阐明在形式上与函数头部类似,最后加一个分号。原型阐明中参数表里参数名能够不

20、写(只写参数类型)。第32页第32页问题描述:依据用户选择求不同形状面积。函数调用示例#includevoid AreaOfRect();void AreaOfTriangle();void AreaOfRound();void main() int select; do printf( 0、退出n 1、长方形n 2、三角形n 3、圆形n);printf(请选择功效:);scanf(%d,&select);if(select = 0) break;switch(select) case 1 : AreaOfRect(); break; /长方形 case 2 : AreaOfTriangle(

21、); break; /三角形 case 3 : AreaOfRound(); break; /圆形 default : printf(输入有误,请在 04 之间选择。n); while(1);void AreaOfRect() int x,y; printf(请输入长方形长:); scanf(%d,&x); printf(请输入长方形宽:); scanf(%d,&y); printf(面积为:%dn,(x * y); void AreaOfTriangle() int x,y; printf(请输入三角形底:); scanf(%d,&x); printf(请输入三角形高:); scanf(%d

22、,&y); printf(面积为:%dn,(x * y)/2); void AreaOfRound() int r; printf(请输入圆形半径:); scanf(%d,&r); printf(面积为:%dn,3.14*r*r); 函数原型第33页第33页 在一个函数中调用另一个函数(即被调用函数)需要具备条件下列:首先被调用函数必须是已经存在函数(库函数或自定义函数)。假如使用库函数,还应当在文本开头用#include命令将调用相关库函数时所需用到信息(这些信息是一些常量和函数原型)“包括”到本文献中来,不然函数将不能正常地得到调用。比如,前面经惯用到过: #include 3. 假如使用

23、用户自定义函数,则假如该函数被定义位置在调用它函数(即主调函数)后面(在同一文献中),应当在主调函数中对被调函数作申明。假如被调用函数定义出现在主调函数之前,能够不必加以申明。第34页第34页对于函数位置: 对于非int函数,调用单位位置要在被调用单位在下面,不然编译产生错误。处理办法是:在调用单位加上被调用函数声(说)明。void f() main( ) f ( ); void f( ) main( ) f (); void f( ) main( )void f( ); f (); 第35页第35页 例6-5 编制子函数实现求两个单精度实数和,main函数调用该函数时候要先申明。/*6_5.

24、c*/#include void main() float add(float x, float y); /*对被调用函数add申明*/ float a, b, c; scanf(%f, %f, &a ,&b); c=add(a, b); printf(sum is %fn, c);float add(float x, float y) /*函数首部*/ float z; /*函数体*/ z=x+y; return (z);运营情况下列:3.6,6.5sum is 10.100000float add(float, float);第36页第36页总而言之,函数原型普通形式有两种:(1)函数类型

25、 函数名(参数类型1 ,参数类型2,参数类型n);(2)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,参数类型n 参数名n);第37页第37页应该注意到函数原型与函数定义是不同。函数定义是指对函数功效确实立,包含指定函数名、函数值类型、形参及其类型、函数体等,它是一个完整、独立函数单位。函数申明作用则是把函数名字、函数类型以及形参类型、个数和次序通知编译系统,方便在调用该函数时系统按此进行对照检验(比如,函数名是否正确,实参加形参类型和个数是否一致等)。第38页第38页6.3.4 嵌套调用 在C语言中,函数定义是平行,不允许进行函数嵌套定义,即在一个函数体中不允许定义另一个函数

26、。而函数之间调用能够是任意,即允许在一个函数体内再调用其它函数,在函数体中再调用其它函数称为函数嵌套调用。 第39页第39页void reverse() : :#includevoid main():palindrome();:void palindrome() : reverse(); :从一个函数调用另一个函数称为函数嵌套调用 比如:C要求:函数定义不可嵌套,但能够嵌套调用函数第40页第40页例6-6函数嵌套调用。main() aia();aia() ber();ber() cal();cal() .图6-5 函数嵌套调用89246135710 函数main调用了aia,aia调用了ber

27、, ber又调用了cal。其调用过程和返回过程如图所表示。void aia(), ber(), cal();main() printf(Im in main.n); aia();void aia() printf(Now Im in aia.n); ber();void ber() printf(Now Im in ber.n); cal();void cal() printf(Now Im in cal.); 第41页第41页 一个函数直接或间接地调用函数本身,这种调用称为递归调用,前者称为直接递归,后者称为间接递归。递归调用函数称为递归函数。 由于递归非常符合人们思维习惯,并且许多数学函数

28、及许多算法或数据结构都是递归定义,因此,递归调用颇具实用价值。6.3.4 函数递归调用 第42页第42页/* 此函数用于计算 n 阶乘 */int factorial(int n) int a; if (n = 1) return 1; else a = n * factorial(n-1); return a; 在一个函数体内调用本身称为函数递归调用 第43页第43页例6-7利用函数递归调用来求n阶乘。#include long fact(); /*申明被调用函数返回值为长整型*/main() /*主函数*/ int h,i; printf(请输入任一正整数:n); scanf(%d, &h

29、); for(i=0; i=h; +i) printf(%d!=%ldn, i , fact(i);long fact(int n) /*求阶乘函数*/ long int res; if(n=0) res=1; else res=n*fact(n-1); /*递归调用*/ return(res);请输入任一正整数: 60!等于11!等于12!等于23!等于64!等于245!等于1206!等于720程序执行后显示:第44页第44页6.3.6 程序设计举例(使用函数编写程序)例6-8 输出5之内数字金字塔。例6-9 输入精度e,使用格里高利公式求近似值,准确到最后一项绝对值小于e。要求定义和调用函

30、数funpi(e)求近似值。例6-10 采用递归方式实现二分查找。二分查找算法是对有序数列进行查找操作一个有效操作。事实上,这种查找办法是一个递归过程。第45页第45页结构体变量作为函数参数 140页例5-3 将键盘输入相关学生档案信息用函数list实现。#include struct STUD char name20; long num; int age; char sex; float score; ;void list(struct STUD stud) printf(%-20s%-10ld%-4d%-4c%-6.2fn,,stud.num,stud.age,stud.

31、sex,stud.score); void main( ) struct STUD stud3; int i; for(i=0;i3;i+) printf(Input all information about the No.%d student:n,i+1); getchar(); gets(); scanf(%ld,%d,%c,%f,&studi.num,&studi.age,&studi.sex,&studi.score);printf(n%-20s%-10s%-4s%-4s%-6sn,Name,Num,Age,Sex,Scores); for(i=0;i y ? x

32、 : y; return (z);void f2 ( ) printf (%dn, z );局部变量 变量x、y、z作用域引用错误!第53页第53页 阐明 (1) 主函数main( )中定义变量也是局部变量,它只能在主函数中使用,其它函数不能使用。同时,主函数中也不能使用其它函数中定义局部变量。 int f3 (int x);void main ( ) int a = 2, b; b = a + y ; printf (%dn, b); int f3 ( int x ) int y; y = a + 5; return ( y );局部变量 变量a、b作用域变量x、y作用域局部变量 错误!错误

33、!第54页第54页 阐明 (2) 形参变量属于被调用函数局部变量;实参变量则属于全局变量或调用函数局部变量。 (3) 允许在不同函数中使用相同变量名,它们代表不同对象,分派不同单元,互不干扰,也不会发生混同。 #include void subf ( );void main ( ) int a, b; a=3, b=4; printf (main: a = %d, b = %dn, a, b); subf ( ); printf (main: a = %d, b = %dn, a, b);void subf ( ) int a, b; a = 6, b = 7; printf(subf: a

34、= %d, b = %dn,a,b);运营结果:main: a = 3, b = 4subf: a = 6, b = 7main: a = 3, b = 4变量名相同 第55页第55页 阐明 (4) 在复合语句中定义变量也是局部变量,其作用域只在复合语句范围内。其生存期是从复合语句被执行时刻到复合语句执行完毕时刻。 #include void main ( ) int a = 2, b = 4; int k, b; k = a + 5; b = a * 5; printf (k = %dn, k); printf (b = %dn, b); printf (b = %dn, b); a = k

35、 + 2;main中局部变量 复合语句中局部变量 mian中变量a、b作用域 复合语句中变量k、b作用域输出k = 7 输出b = 10 输出b = 4 错误!第56页第56页6.6.2 全局变量作用域和生存期 定义 在函数外部作定义阐明变量,也称为外部变量 。它不属于哪一个函数,而属于一个源程序文献。 作用域 从定义变量位置开始到本源文献结束,及有extern阐明其它源文献。 生存期 与程序相同。即从程序开始执行到程序终止这段时间内,全局变量都有效。 #include #include int sign ( );/计算数n平方根float sqr ( ) if ( n 0 ) return

36、(sqrt(n); else return (-1);float n = 0;void main ( ) int s; float t; scanf (%f, &n); s = sign ( ); /取符号 t = sqr ( ); /取平方根 printf (s = %d t = %f , s, t);/取数n符号int sign ( ) int r = 0; if (n 0) r = 1; if (n 0) r = -1; return ( r );定义全局变量,并赋初值局部变量全局变量n作用域 局部变量s、t作用域局部变量局部变量r作用域错误!第57页第57页 阐明 (1) 应尽也许少使

37、用全局变量。 全局变量在程序所有执行过程中始终占用存储单元 减少了函数独立性、通用性、可靠性及可移植性 减少程序清楚性,容易犯错 (2) 若外部变量与局部变量同名,则外部变量被屏蔽。要引用全局变量,则必须在变量名前家上两个冒号“:” #include int a = 10; /全局变量void main ( ) int a = 100; /局部变量(与全局变量同名) printf (local a = %dn, a); printf (global a = %dn, :a);运营结果:local a = 100global a = 10注意:局部变量与全局变量同名极易造成程序员犯逻辑错误。第5

38、8页第58页#include int a=3,b=5;max(int a,int b)int c;c=ab?a:b;return(c);main()int a=8;printf(%dn,max(a,b);运营结果?第59页第59页 阐明 (3) 全局变量定义必须在所有函数之外,且只能定义一次,并可赋初始值。全局变量定义普通形式为: extern 类型阐明符 全局变量名1 = 初始值1, , 全局变量名n = 初始值n;可缺省!char ch = Y; void main ( ) char ch; void func ( ) 定义全局变量ch错误!ch只能定义一次例:int a = 2, b =

39、 4; extern int a = 2, b = 4; 第60页第60页 阐明 (4) 对全局变量进行阐明,可扩展全局变量作用域。全局变量阐明普通形式为: extern 类型阐明符 全局变量名1, ,全局变量名n;不可缺省!不可赋初值!void gx ( ), gy ( );void main ( ) extern int x, y; printf (1: x = %dty = %dn, x, y); y = 246; gx ( ); gy ( );extern int x, y;void gx ( ) x = 135; printf (2: x = %dty = %dn, x, y);in

40、t x = 0, y = 0;void gy ( ) printf (3: x=%dty=%dn, x, y);全局变量定义未阐明前作用域全局变量阐明阐明后作用域全局变量阐明阐明后作用域运营结果: 1: x = 0 y = 0 2: x = 135 y = 246 3: x = 135 y = 246第61页第61页 阐明 (5) 全局变量定义与全局变量阐明区别 extern int a; void func1 ( ) /引用变量aextern int a = 2; void func2 ( ) /引用变量a谁是定义?谁是阐明?全局变量定义(由于赋了初值)全局变量阐明 注意:两者中有且只能有一

41、个对变量a赋初始值,不能都对变量a赋初始值或都不赋值,不然编译错! 第62页第62页6.7 变量生命期-变量存储类型 概述变量属性 数据类型:变量所持有数据性质(操作属性)。要求了它们取值范围和可参与运算 。 存储类型: 要求了变量占用内存空间方式,也称为存储方式。 存储类型:存储器、静态存储区、动态存储区 auto-自动型 register-存储器型 static -静态型 extern-外部型动态存储区静态存储区存储类型阐明符 数据类型阐明符 变量名1,变量名2,变量名n;变量定义完整形式应为: 第63页第63页1、动态变量(auto型变量)auto 数据类型阐明符 变量名1,变量名2,变量名n; 定义格式 阐明 存储类型阐明符auto能够省略。 动态变量只能在函数内或复合语句中定义,它属于局部变量(动态局部变量)。 void func ( ) int i, j, k; 等价于 auto int i, j, k;auto int k; void func ( ) 错误!动态变量不可定义在函数外 第64页第64页2、静态变量(static型变量) 静态变量类型阐明符是static。 静态变量属于静态存储类型。 静态局部变量 在局部变

温馨提示

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

评论

0/150

提交评论