




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数组的基本概念一维数组二维数组字符数组数组的应用举例 第七章 数 组1一、概述C数据类型: 基本类(简单类)字符型/整型/实型 构造类(组合类)数组/结构体/共用体对于变量 基本类型单个出现的变量,每个变量可以代表一个确定的数据(变量值),且具有一定属性。如 int x,y;但变量间不存在确定的相互关系。2数组的概念引入用基本数据类型可以解决所有问题吗?例如:对某班学生的成绩按由高到底的次序进行排序。 3 名? 30 名?3数组:一种常用的构造型数据类型。 由具有固定数目 相同类型 的元素按一定顺序排列。 数组的基本概念特点:1、数组元素的个数是确定,不可改变,元素值可变2、数组元素的类型必
2、须相同,不允许混合。41、一维数组的定义和使用可以是常量 和 符号常量,且必须为正值,表示数组元素的个数。不能包含变量。数组名的构成方法与一般变量名相同。例如: int a10数组的数据类型定义 类型说明符 数组名 常量表达式 ;10个元素: a0、a1、a2.a9整型数组 a特别申明:不可对数组的大小作动态定义5判断错误: 正确: int n=5; #define N 5 int an; int aN;正确: int a10, b54; char name8, ch23; float x8*2+1, table234; #define NUM 40; int aNUM, bNUM+2;67.
3、1.2 一维数组元素的引用1、先定义,后使用。3、只能逐个引用数组元素,而不能一次引用整个数组可以是整型常量或整型表达式2、引用方式: 数组名 下标 。 例:int a9; char c4; float f10;a0=1; c3=b; f5=1.23a8=a5+a7-a2*34、引用数组元素要注意下标不要出界(编译程序不检查是否“出界”)7示例引用示例: a23 a2-12*3-1 ax (x为整型表达式) 错误: a2,3比较:错误 正确 int n; int a5; scanf(“%d”,&n); for (i=0;i5;i+) int an; printf(“%dn”,ai);定义时不可
4、用变量作下标 引用时可以用整型变量及表达式 作下标8三、数组的存储结构根据数组的数据类型,为每一元素安排相同长度的存储单元根据数组的存储属性,确定将其安排在内存动态、静态存储区或寄存器区a0a1a92字节name0name1name71字节4字节x0 x1x72字节1字节4字节2字节1字节4字节 int a10 char name8 static float x8 动态存储区 静态存储区 说明:数组元素在内存中顺次存放,它们的地址是连续的。数组名字是一个常量,存放数组第一个元素的内存地址。9定义时赋值一维数组的初始化 1、对数组的全部元素赋初值。 int a3=3,6,9; a0=3; a1=
5、6; a2=9; 2、对数组的部分元素赋初值。 int a4=3,6,9 ; a0=3; a1=6; a2=9; a3=0; 3、对全部数组元素赋初值时,可以不指定数组长度。但若提供 初值的个数与定义的数组长度不一样,则数组长度不能省略。 int a=3,6,9; int a3; a0=3; a1=6; a2=9; 对数组的元素赋初值。方式:赋值语句、输入语句a0=12;scanf(“ %d ”,&a1);注意:不能给数组整体赋初值数组名不可被赋值。10通常数组的输入与输出输入:int i,a10;for(i=0;i10;i+) scanf(“%d”,&ai);输出:for(i=0;i10;i
6、+) printf(“%d”,ai);11main( ) static int a10=1,3,4,8,5,7,12,9,5,23; int i,total=0; printf(“Total of array element values is % dn”, total);执行结果 Total of array element values is 777.1.4 一维数组程序应用举例for (i=0;i=10-1;i+) total+=ai;例 计算数组元素之和12例: 输入10个数据,求和并求最大值。 main( ) int m; float a10,total=0.0 , max=0.0;
7、 for (m=0; m10 m+) /*输入数据*/ scanf(“%f”,&am); printf(“n”);for (i=0; imax) max=ai; /*求最大值*/ printf(“Total of array element values is %3.2f, %7.3fn”,total,max);13例 7.2 用数组计算Fibonacci数列的前20项 (p133) main( ) int i=0; int f20=1,1; /*仅对f 0,f 1赋确定值,其他元素自动赋0*/ for (i=2; i20; i+) /*求值*/ f i =f i-2+f i-1;i=2 f
8、2=f 0+f 1i=3 f 3=f 1+f 2i=4 f 4=f 2+f 3 for (i=0; i20; i+) /*输出 */ if (i%5=0) printf(“n”); /*每行输出5个数据*/ printf(“%12d”,f i); 14用数组计算Fibonacci数列的前20项程序执行结果 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 15第 2 遍 a0a1 ,a1a2 an-3an-2 最终an-2为次大数冒泡法(起泡法/气泡法)有n个杂乱无序的数,要求将这n个数从小到大(或从大到小)排
9、序后输出。相邻两元素比较 aiai+1第 1 遍 a0a1比较, a1存放大的数。 a1a2比较, a2存放大的数。 a2a3 ,a3a4 an-2an-1比较, 最终an-1为最大数 比较n-1次比较n-2次 结论: n 个数排序, 要进行 n-1 遍循环这种排序方法之所以叫“冒泡法”,是因为在排序过程中,较小的数象气泡一样逐渐往前冒(向上冒),大的数逐渐向后沉,最终完成排序。16起泡排序对具有n个元素的序列按升序进行起泡排序的步骤:首先将第一个元素与第二个元素进行比较,若为逆序,则将两元素交换。然后比较第二、第三个元素,依次类推,直到第n-1和第n个元素进行了比较和交换。此过程称为第一趟起
10、泡排序。经过第一趟,最大的元素便被交换到第n个位置。对前n-1个元素进行第二趟起泡排序,将其中最大元素交换到第n-1个位置。如此继续,直到某一趟排序未发生任何交换时,排序完毕。对n个元素的序列,起泡排序最多需要进行n-1趟。17起泡排序举例:对整数序列 8 5 2 4 3 按升序排序8524352438243582345823458初始状态第一趟结果第二趟结果第三趟结果第四趟结果小的逐渐上升每趟沉下一个最大的18流程图如下将n个数存入数组a中从第1行到第n-1行从第1个到第n-i个前后两个两两比较大者调到后位输出排序后的数组a19程序如下: #define N 10 main() int i,
11、 j, t, aN+1; for (i=1; i=N; i+) scanf(%d,&ai); for (i=1; i=N-1; i+) for (j=1; j aj+1) t = aj; aj = aj+1; aj+1 = t; for (i=1; i=N; i+) printf( %d ,ai);20定义 类型说明符 数组名 常量表达式 常量表达式 ;a0a00 a01 a02 a03a1a10 a11 a12 a13a2a20 a21 a22 a23a列行2、二维数组的定义和使用例 float a34; a 为 3 行,4列有12个元素的数组。 可理解为: float a04,a14,a2
12、4;3个元素每1元素包含4个子元素一维数组21引用 数组名 下标 下标 float a34,b35; 例 : b12=a23/3; 下标不要越界int M=a2422多维数组第一维下标变化最慢,最右边的下标变化最快 定义 float a234; 存储顺序 a000 a001 a002 a003 a010 a013 a020 a023 a100 a103 a110 a113 a120 a123 按行存放,地址是连续的。 例: float a34; 数组的存储顺序为: a 二维数组存储顺序a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23存放数组第一个元
13、素的内存地址231、对数组的全部元素赋初值分行赋初值; static int stud32=1,2,3,4,5,6;存储时的排列顺序 static int stud32=1,2,3,4,5,6;省略第一维长度的说明对全部元素赋初值 static int stud 2=1,2,3,4,5,6;语句执行后:stud00=1, stud01=2,stud10=3, stud11=4, stud20=5, stud21=6,1 23 45 67.23 二维数组的初始化242、对数组的部分元素赋初值省略某些元素 int stud 32=1,2,3,4;省略第一维长度的说明(应分行赋初值) int stu
14、d 2=1,0,2,3,;1 02 34 01 02 30 0语句执行后: stud00=1, stud01=0, stud10=2, stud11=3, stud20=4, stud21=0,语句执行后: stud00=1, stud01=0, stud10=2, stud11=3, stud20=0, stud21=0,25例7.2.4 (p138) 将一个二维数组行和列元素互换,存到另一个二维数组中a =1 2 34 5 6b =1 42 53 6a00 b00, a01 b10, a02 b20 规律: aij bji 26 main() 程序 int a23=1,2,3,4,5,6;
15、 int b32,i,j; for(i=0;i=1;i+) for(j=0;j=2;j+) bji=aij; /*行、列互换*/ prints(“array a:n”);for(i=0;i=1;i+) /* 按行、列打印a 数组*/ for(j=0;j=2;j+) printf(“%5d”,aij); printf(“n”);printf(“array b:n”);for(i=0;i=2;i+) for(j=0;j=1;j+) /* 按行、列打印b数组*/ printf(“%5d”,bij); printf(“n”);27运行结果: array a: 1 2 3 4 5 6 array b:
16、1 4 2 5 3 628应用举例-6题目:从一个三行四列的整型二维数组中查找第一个出现的负数。分析算法要点用两层嵌套的 for 循环来遍历数组元素,判断是否为负数。当找到第一个负数时就应该退出循环,为此,应定义一个标记变量,用于标记找到与否的状态,并将此标记加入循环控制条件中,以控制循环在适当时候退出。29main() int i,j,found,num34; printf(Enter 12 integers:n); for(i=0;i3;i+) for(j=0;j4;j+)scanf(%d,&numij); found=0; for(i=0;i3 & !found;i+) for(j=0;
17、j4 & !found;j+)if(numij0) found=1; if(!found) printf(not foundn); else printf(minus number num%d%d:%dn, i-1,j-1,numi-1j-1);30运行结果:Enter 12 integers:3 5 56 1 45 -6 43 -1 1 4 -8 15minus number num11:-631【完善程序】下列程序的功能是显示如下图形: 1 0 0 0 0 2 1 0 0 0 3 2 1 0 0 4 3 2 1 0 5 4 3 2 1【分析】这类题的元素值排列很有规律,所以一般要从分析行数
18、i、列数j与元素值的关系着手。分析上图可知,当i=j时,元素值随行数i增加而增加,随列数j增加而减小,这样就很容易得出其元素值与i,j的关系是i+1-j。main()int a55,i,j; clrscr(); for (i=0;i5;i+) for (j=0;j5;j+) if ( 【6】 ) aij=0; else aij=【7】; printf(%3d,aij); printf(n); a55分析:a00 a01 a02 a03 a04a10 a11 a12 a13 a14a20 a21 a22 a23 a24a30 a31 a32 a33 a34a40 a41 a42 a43 a44答
19、案:【6】ij 【7】i+1-j32【字符数组】存放字符(每个数组元素存放一个字符) 1、字符数组的定义 如: char a10; int a10; char a23;字符数组各个元素分别存放一个字符的数组。字符串 “” (字符串常量)以“0”结尾【注意】字符数组与字符串的区别:字符串存放在字符数组中,但字符数组与字符串可以不等长;字符串以“0”结尾。即:C语言中无字符串变量,但可用一个字符数组存放字符串;反之,存放在字符数组中的并非都是字符串。7.3、字符数组33【0】 0是指ASCII代码为0的字符。它既不是一个普通的可显示字符,也不是一个具有操作功能的字符,而是一个“空操作”字符。它不进
20、行任何操作,在字符数组中仅作字符串结束标记使用。0可以用赋值方法赋给一个字符变量或字符型数组中的某个元素,如c8= 0。运算时,按0(NULL)看待。如:#include Main() printf(“%d,%d,%d,%d”,NULL,-100,0,100); 结果:0,-100,0,-100347.3.2、字符数组的初始化单字符方式 char a10=A, B, C, D; char b23= A, B, C, D, E,F;【注意】如果初值个数小于数组长度,则多余的数组元素自动为空字符(0)字符串方式 char a5=“ABCD”; char c =”ABCD”; char a25=A,
21、B,C,0,x,y,0; char a25=“ABC”,”XY”;二维数组可以认为由若干个一维数组组成。【例一】比较以下字符数组长度是否相同: char a =”ABCD”; char b = “ABCD”; char c =A,B,C,D; (5) (5) (4)35例 7.6 (p131) 输出一个字符串main() char c10=I, ,a,m, ,a,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n);运行结果: I am a boy36例 7.7 (p131) 输出一个钻石图形 main() static char dia
22、mond 5=,*, ,*,*,*,*,*,*,*; int i,j; for (i=0;i5;i+) for(j=0;j5;j+); printf(%c,diamondij); printf(n); * * * * * * *运行结果:37先建立存储空间(先定义一个字符数组),再输入其元素值。如果 char a10;除了直接在定义时初始化,定义后赋值的方法有: 法1: 逐个元素赋值 a0=A,a1=X; 法2: 循环+scanf(“%c”, &); /*用格式符%c逐个字符输入/输出*/ for (i=0;i10;i+) scanf(“%c”,&ai); 法3: scanf(“%s”, 字符
23、数组名); (用于从键盘接收一个不带空格的字符串scanf(“%s”,a); /*数组名代表该字符数组(字符串)的首地址,不可加&号*/【注意】此法可自动在所输入的字符串末尾加上0。但输入的字符串中不能有空格(C语言规定scanf用%s时,以空格或回车符作为字符串的间隔符。所以,上例中,如果从键盘输入“Computer”然后回车,则数组a存放的是”Computer0”。如果输入“Turbo C“,数组a中实际只存放”Turbo0”。7.3.5-A、字符数组的输入38法4:gets(字符数组名); (用于从键盘接收 一个任意字符串) gets(a)执行时,将一直读取用户从键盘输入的所有字符,直到
24、遇到回车符(n)为止。成功:返回数组a首地址,否则返回NULL。gets(a)亦会自动在字符串末尾加上0(代替n)。【注意】如果输入的字符长度(含0)超过字符数组定义的长度,将会引起出错。39 【例】 main() char name20; printf(“Whats your name?”); gets(name); printf(“Hi,%s,nice to meet you!n”,name); 运行程序时,从键盘输入:XXX (XXX为考生姓名) 结 果:Hi,XXX ,nice to meet you!(XXX为考生姓名)【例】main()char a10; clrscr(); get
25、s(a); printf(%sn,a+2); 运行程序时,从键盘输入:abc defg结果:c defg407.3.5-B、字符数组的输出法1:逐个元素输出: 循环+printf(“%c”,);法2:字符串输出: printf(“%s”,字符数组名);法3:字符串输出: puts(字符数组名);将一个以NULL(0)结尾的字符串输出到屏幕上,并自动换行。41【注意】 1、 常用si 作循环条件,当循环(i递增)到字符串结束处(0)便自动结束循环。 2、 典型结构:如果s是字符串,则下列结构可以将s中不符合条件的字符删去。int i, j; for (i=0,j=0; stri; i+) if
26、(条件) strj+ = stri; strj = 0;42例如: 程序中有下列语句: char str15,str25,str35; scanf(%s%s%s,str1,str2,str3); 运行时输入数据: How are you?内存中变量状态如下: str1: H o w 0 0 str2: a r e 0 0 str3: y o u ? 043若改为: char str13; scanf(%s,str); 运行时输入数据: How are you?内存中变量 str 内容如下: str: H o w 0 0 0 0 0 0 00 0 044【例】下列程序段的运行结果是: 结果:(a
27、b) char a5=a,b, 0,d,0;printf(“%s”,a); 说明:%s的作用是输出一个字符串,直到遇到0为止。注意:在二维数组中,双下标引用某行某列的某个元素 单下标引用某行的字符串45【例】分析以下程序的运行结果:main()char word310;int i;for (i=0;i3;i+) scanf(%s,wordi);printf(%s,word1);123450abcdef0ABCDEFG0运行时,输入:12345abcdef ABCDEFG结果:abcdef【注】wordi第i+1行word元素首地址(二维数组用单下标表示某行的字符串)。 46 (#include
28、)puts 输出字符串 gets 输入字符串 (#include) strcat 字符串连接 strcpy 字符串复制 strcmp 字符串比较 strlen 字符串长度 strlwr 将字符串中的大写字符转换为小写字符 strupr 将字符串中的小写字符转换为大写字符7.3.6字符串处理函数47gets( )和puts( )strcpy( ) 字符串考贝函数(包含在string.h中,下同)形式: strcpy(目的字符数组,源字符串);作用: 将源字符串考贝到目的字符数组中,直到遇到源 字符串的终止符0为止。 函数返回值:目的字符数组的地址。注意:目的字符数组要定义得足够大。若要将一个字符
29、串常量或从某一首地址开始的字符串复制给别的数组,只能用本函数或指针。48【例一】main( ) char a =“abcde”; char b10; b = “abcde”; b = a; /*编译出错*/【讨论】编译出错原因何在?a,b都是两个数组定义时分配的内存存储单元首地址,是个常量,不能改变(不能赋值)。49#include “string.h”main( ) char s10,sp =“HELLO”; strcpy(s,sp); s0=h; s6=!; puts(s);结果:hELLO 【例二】以下程序的输出结果是 。【讨论】结果为什么不是:hELLO! 如果让s5=!,结果又会如何
30、?(结果:hELLO后面跟了一堆乱码)如果是拷贝字符串的一部分,可用函数strncpy(目的字符数组,源字符串,拷贝字符数)50【例三】以下程序的输出结果是 。#include “string.h”main( ) char s =“This is a source string.”, b20; strncpy(b,s,16); b16 = 0; printf(“%sn”,b);结果:This is a source51strcat( ) 字符串连接函数 形式:strcat(目的字符数组,源字符串); 作用:将源字符串连接到目的字符数组后面。 函数返回值:目的字符数组的地址。注意:目的字符数组要
31、定义得足够大。 【例四】以下程序的输出结果是 。 #include string.hmain()char a =abcde; char b =12345; strcat(b,a); printf(%s,%sn,a,b);结果:abcde,12345abcde【讨论】程序执行完后出错(数组b长度定义不够,将数组b的长度定义11,则出错消失)52【例五】以下程序的输出结果是 。#include string.hmain() char a80=“AB”,b80=”LMNP”; int i=0; strcat(a,b); while (ai+!=0) bi=ai; puts(b);结果:LBLMNP
32、(注意bi=ai是从i=1开始)53strcmp( ) 字符串比较函数 形式:strcmp(字符串1,字符串2); 作用:对两个字符串从各自第一个字符开始进行逐一比较,直到对应字符不相同或到达串尾为止 函数返回值:确定了比较结果 小于0 字符串1小于字符串2 等于0 字符串1等于字符串2 大于0 字符串1大于字符串254【例六】运行以下程序时,从键盘输入:BOOKCUTGAMEPAGE(表示回车),则运行结果是什么?#include “string.h”main()int i; char str10,temp10=”Control”; for ( i=0; i4; i+) gets(str);
33、 if(strcmp(temp,str)0i=2 Control CUT 0i=3 Control GAME 0 GAMEi=4 GAME PAGE %sn,str1); 随着j+的移动,str2的串结束标志“0”也被赋到str1中,此时循环结束。59运行结果:Enter string No.1: abcdefghEnter string No.2: IJKLMNOPQRSstring No.1-abcdefghIJKLMNOPQRS60应用举例-3(参考习题7.5)题目:把输入的字符串逆序排列,并显示。分析:数据结构: 输入的字符串用字符数组存放。算法要点: 逆序排列用交换算法,求出字符串最
34、后一个字符的下标,然后将第一个字符和最后一个字符交换,第二个和倒数第二个交换,61#include “stdio.h”#include “string.h”main() char str80; int c,i,j; printf(Enter a string:n); scanf(%s,str); for(i=0, j=strlen(str)-1; ij ; i+, j- ) c=str i ; str i =str j ; str j =c; printf(nReversed string:n%sn,str);62运行结果:Enter a string: abcdefghReversed st
35、ring: hgfedcba63应用举例-4 (参考习题7.10)题目:从键盘输入字符,以 ctrl+z 结束,统计输入的数字 09、空白符和其它字符的个数。分析:数据结构1、定义一个具有 10 个元素的整型数组来存放数字 09 的个数。2、定义两个整型变量来存放空白符和其它字符的 个数。 算法要点1、计数用的数组和变量要初始化为0。2、用循环结构处理字符读入,内嵌分支结构处理 计数。 64#includemain( ) int c, i, nwhite, nother, ndigit10; nwhite=nother=0; for(i=0;i=0&c=9) +ndigit c-0 ; els
36、e if (c= | c=n | c=t) +nwhite; else +nother; for(i=0; i10; i+) printf(digit %d:%dn, i, ndigiti); printf(white space:%dn, nwhite); printf(other character:%dn, nother);注: c为int型,所以它为输入字符的ASIC码65运行结果:The use of the double colon in front ofthe variable name, in lines 11, 13, and16, instructs the system
37、that we areinterested in using the global variablenamed index. digit 1:4 digit 2:0 digit 3:1 digit 4:0 digit 5:0 digit 6:1 digit 7:0 digit 8:0 digit 9:0 white space:34 other character:13266应用举例-题目:把输入的字符串逆序排列,并显示。分析:数据结构:输入的字符串用字符数组存放。算法要点:逆序排列用交换算法,求出字符串最后一个字符的下标,然后将第一个和最后一个交换,第二个和倒数第二个交换,.。67main(
38、) char str80; int c, i, j; printf(Enter a string:n); scanf(%s,str); for(i=0,j=strlen(str)-1; ij; i+,j-) c = stri; stri = strj; strj = c; printf(nReversed string:n%sn,str);68运行结果:Enter a string:abcdefghReversed string:hgfedcba69应用举例-4题目:从键盘输入字符,以 ctrl+z 结束,统计输入的数字 09、空白符和其它字符的个数。分析:数据结构:定义一个具有 10 个元素
39、的整型数组来存放数字 09 的个数。定义两个整型变量来存放空白符和其它字符的个数。算法要点:计数用的数组和变量要初始化为0。用循环结构处理字符读入,内嵌分支结构处理计数。70#includemain() int c, i, nwhite, nother, ndigit10; nwhite=nother=0; for(i=0; i=0 & c=9) +ndigitc-0; else if(c= |c=n|c=t) +nwhite; else +nother; for(i=0;i=a&ai=z)? ai-a+A:ai; while(ai+!=0); printf(Copyed string:n%s
40、n,b);74运行结果:Enter a string:ProgrammerCopyed string:PROGRAMMER75要求:1) 输入学生人数,按学号从小到大循序依次输入学生成绩. 2)统计每个学生课程的总成绩和平均分. 3)统计每门课程全班的总成绩和平均成绩.编写统计某班英语、数学、程序设计语言3门课程的成绩。分析:数据结构 定义二维数组 score50 5 score i 0 , score i 1, score i 2 分别存放三门课的成绩 score i 3 个人总分, score i 4 个人平均成绩 定义一维数组 total3 全班各科总分 avg 3 全班各科平均分应用举
41、例-676输入学生人数, 按学号从小到大循序依次输入学生成绩 printf(input students number:); scanf(%d,&n); printf(input scoren); for (i=0;in;i+) printf(“%d student ”,i+1); /*输入*/ scanf(%d%d%d,&scorei0, &scorei1,&scorei2); 772)统计每个学生课程的总成绩和平均分. for (i=0;in;i+) scorei3=0; for (j=0;j3;j+)/*每个学生课程的总成绩*/ scorei3+=scoreij; scorei4=sco
42、rei3/3; /*平均分*/ printf(n English Math Program Total Averagen); for (i=0;in;i+) printf(%5d,i+1); for (j=0;j5;j+) printf(%9d,scoreij); printf(n); 783)统计每门课程全班的总成绩和平均成绩. for (j=0;j3;j+) totalj=0; for (i=0,in;i+) totalj+=scoreij; /*全班的总成绩*/ avgj=totalj/n; /* 平均成绩*/ printf(total:); for (i=0;i3;i+) printf(%7d,totali); printf(navg: ); for (i=0;i3;i+) printf(%7d ,avgi); printf(n);79找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。分析:算法要点 1、输入二维数组 2、利用一维循环,比较,找出某行中的最大值 并记下列值 3、利用一维循环,比较,判断行的最大值为列中的最小值 重复2、3操作 4、输出应用举例-780 1、输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025别墅土建合同:高品质别墅景观绿化工程
- 2025版汽车维修保养连锁经营合作协议
- 2025版燃油行业人才培养及交流合同
- 2025版水电安装与设备更换合同
- 2025年度厂房出售及配套设施购置合同示范文本
- 2025年度展览中心场地租赁合同终止及展览合作协议
- 2025年度环境监测技术服务合同范本
- 2025版智慧城市建设用水泵采购及安装合同
- 2025年度汽车零部件供应链合作协议书
- 2025年房地产销售大数据分析服务购销合同
- 工程项目全过程造价管理课件
- 物业保安各岗位培训
- 小学二年级下安全课件
- 《安全管理体系》课件
- 树立正确的人生价值观课件
- 《国际商务单证》课件
- 防腐保温工程监理实施细则
- 园林绿化工知识考试题库及答案
- 法律事务所信息安全管理制度
- 论高校思政教育宏大叙事的有效性建构
- 塔吊拆卸安全专项施工方案
评论
0/150
提交评论