版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、11.1 概述概述11.2 定义结构体类型变量的方法定义结构体类型变量的方法11.3 结构体变量的引用结构体变量的引用11.4 结构体变量的初始化结构体变量的初始化11.5 结构体数组结构体数组11.6 指向结构体类型数据的指针指向结构体类型数据的指针11.7 用指针处理链表用指针处理链表11.8 共用体共用体11.9 枚举类型枚举类型11.10 用用typedef定义类型定义类型第十一章第十一章 结构体与共用体结构体与共用体11.1 概述概述 数据的基本类型:整、实、字符。数据的基本类型:整、实、字符。 数组是构造类型:每个元素为同一类型数组是构造类型:每个元素为同一类型 有些问题仅用基本类
2、型和数组来描述是无法实现的,需要将不有些问题仅用基本类型和数组来描述是无法实现的,需要将不同类型的数据组合成一个有机的整体。同类型的数据组合成一个有机的整体。 如学生情况:如学生情况: numnamesexagescoreaddr整整字符串字符串字符字符整整实实字符串字符串11001Zhang xinm1996. 5Shang hai12001Wang lif2098. 5Bei jing这些数据类型虽不相同,但它们却是有机的整体,若将它们分这些数据类型虽不相同,但它们却是有机的整体,若将它们分别定义,则难以反映它们之间的内在联系。别定义,则难以反映它们之间的内在联系。 在在C语言中,结构体是
3、用户声明的一种数据类型,一经声明,语言中,结构体是用户声明的一种数据类型,一经声明,就可用此类型定义相关的变量。就可用此类型定义相关的变量。 如上述问题可声明如下数据类型:如上述问题可声明如下数据类型: struct student int num; char name20;char sex; int age; float score; char addr30; ;作为类型名,它就和其它基本类型一样,用它来定义变量的类作为类型名,它就和其它基本类型一样,用它来定义变量的类型。型。struct是声明结构体类型时所必是声明结构体类型时所必须使用的关键字,向编译系统声须使用的关键字,向编译系统声明这
4、是个结构体类型,其中包含明这是个结构体类型,其中包含若干数据项,这个类型名的全称若干数据项,这个类型名的全称是:是: struct student 声明一个结构体类型的一般形式:声明一个结构体类型的一般形式: struct 结构体名结构体名 成员表列成员表列 ; 结构体名又称结构体标志。结构体名又称结构体标志。 这是用户自定义的类型,一经声明,就可以和其它基类型一样这是用户自定义的类型,一经声明,就可以和其它基类型一样用来定义此种类型的变量了。用来定义此种类型的变量了。11.2定义结构体类型变量的方法定义结构体类型变量的方法 有三种:有三种: 1、先声明结构体类型,再定义变量名、先声明结构体类
5、型,再定义变量名 声明声明 结构体类型不分配存储单元,用该类型定义变量时,分配结构体类型不分配存储单元,用该类型定义变量时,分配存储单元。存储单元。 struct student int num; char name20;char sex; int age; float score; char addr30; ;则则s1,s2这两个结构体变量各占这两个结构体变量各占59个字节的存储空间。个字节的存储空间。struct student s1,s2 ;2.在声明类型的同时定义变量在声明类型的同时定义变量 一般形式:一般形式: struct 结构体名结构体名 成员表列成员表列 变量名表列;变量名表列
6、; 例如:例如: struct student int num; char name20;char sex; int age; float score; char addr30; s1,s2,s3;3.直接定义结构体类型变量直接定义结构体类型变量 一般形式:一般形式: struct 成员表列成员表列 变量名表列;变量名表列; 例如:例如: struct int num; char name20;char sex; int age; float score; char addr30; s1,s2,s3;s1,s2,s3尽管没有结构名,但每个尽管没有结构名,但每个结构体变量结构体变量s1,s2,s
7、3都具有如定义都具有如定义的各成员。的各成员。 4、结构体类型的几点说明、结构体类型的几点说明 (1)、类型与变量意义不同,变量可以赋值、存取、存储等运算、类型与变量意义不同,变量可以赋值、存取、存储等运算,而类型不能运算,不分配存储空间。,而类型不能运算,不分配存储空间。 (2)、结构体变量的使用遵循先声明结构体类型,再用该类型定、结构体变量的使用遵循先声明结构体类型,再用该类型定义变量或组数;然后使用这些变量或数组。义变量或组数;然后使用这些变量或数组。 (3)、结构体变量中的成员可单独使用,方法如普通变量;、结构体变量中的成员可单独使用,方法如普通变量; (4)、成员名和程序中的变量名可
8、相同,它们之间互不影响;、成员名和程序中的变量名可相同,它们之间互不影响; (5)、结构体变量中的成员还可以是结构体变量、结构体变量中的成员还可以是结构体变量 11.3 结构体变量的引用结构体变量的引用 结构体变量被定义后方可使用;结构体变量被定义后方可使用; 1、引用方法:、引用方法: 结构体变量名结构体变量名.成员名成员名 其中:其中:. 为成员分量运算符,其优先级为为成员分量运算符,其优先级为1,如,如:s1.num; 2、结构体变量不能进行整体输入输出、结构体变量不能进行整体输入输出 编译虽无错,但结果有误,如:编译虽无错,但结果有误,如: scanf(“%d%s”,&s1);
9、 printf(“%d,%sn”,s1); 3、成员又可以是结构体类型、成员又可以是结构体类型 运算时运算符一级一级找到最低一级成员,运算只能对最低一运算时运算符一级一级找到最低一级成员,运算只能对最低一级成员进行,如级成员进行,如: struct date int month; int day; int year; ; struct student int num; char name20;char sex; int age; struct date birthday; float score; char addr30; s1,s2,s3;s1.num=11002; s2.birthday.
10、month=8; s3.birthday.year=1983; s1.score=s2.score+s3.score;11.4 结构体变量的初始化结构体变量的初始化 结构体变量可以在定义时指定初始值结构体变量可以在定义时指定初始值 main( ) struct student long int num; char name20; char sex; char addr20 ; a=112001, “LiLi”, M , “123 Beijing Road” ; printf(“No.:%ld nname:%snsex:%cnaddress:%sn”, a.num,,a.sex,a.
11、addr); 11.5 结构体数组结构体数组 11.5.1结构体数组的定义形式结构体数组的定义形式 形式一:形式一: struct 结构体类型名结构体类型名 成员表列成员表列 ; struct 结构体类型名结构体类型名 数组名表列数组名表列; 形式二:形式二: struct 结构体类型名结构体类型名 成员表列成员表列 数组名表列数组名表列; 形式三:形式三: struct 成员表列成员表列 数组名表列;数组名表列;11.5.2、结构体数组的初始化、结构体数组的初始化 如如 定义一维数组存放三个学生的有关信息定义一维数组存放三个学生的有关信息 main( ) int i; struct stud
12、ent long num; char name20;char sex;int age; float score; char add30; stu3=11200111, “LiLin”, M,18,87.5, “123 Beijing Road”, 112002112, “Zhang Fun”, M,19,99, “130 Shang Hai Road”, 11200313, “Wang Min”, F,20,78.5, “1010 Zhong Shan Road”; 也可以先定义结构类型,再定义数组时初始化,如:也可以先定义结构类型,再定义数组时初始化,如:struct student int
13、 num; struct student stu=,; 11.5.3 结构体数组应用举例结构体数组应用举例 例对侯选人得票的统计程序。统计三个候选人的得票情况例对侯选人得票的统计程序。统计三个候选人的得票情况 struct person char name20; int count; leader3=“li”,0, “zhang”, 0, “fun”,0; main() int i,j; char leader_name20; for(i=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name,leade
14、)=0) leaderj.count+; for(i=0; inum, p-name,p-sex,p-score); 结构体变量的指针就是该结构体变量所占内存块的起始地址,还结构体变量的指针就是该结构体变量所占内存块的起始地址,还可以用指针变量指向结构体内的成员,对结构体成员的操作可可以用指针变量指向结构体内的成员,对结构体成员的操作可归结为:归结为: 结构体变量结构体变量. 成员名成员名 (*p).成员名成员名 p-成员名成员名 &(*p).成员名成员名(取结构体成员地址取结构体成员地址) -:指向运算符,优先级指向运算符,优先级1级,级, P-num:得到得到p指向结
15、构体成员指向结构体成员num的值的值 P-num+:得到得到p指向结构体成员指向结构体成员num,用完后使用完后使num值增值增1 +p-num:得到得到p指向结构体成员指向结构体成员num,使之先增使之先增1再使用。再使用。11.6.2 指向结构体数组的指针指向结构体数组的指针 结构体数组及其元素可用指针变量来指向结构体数组及其元素可用指针变量来指向 数组首地址赋给指向数组首地址赋给指向结构体类型的指针变量时,当指针变量增结构体类型的指针变量时,当指针变量增1时,指向下一个时,指向下一个数组元素。数组元素。指向结构体数组指针的应用指向结构体数组指针的应用 struct student lon
16、g num; char name12; char sex; int age; struct student stu4=11200121, “LiLin”, m,18, 11200222, “zhangFun”, m,19, 11200323, “WangMin”, f,20 11200424, “zhaodan”, f,19; main() struct student *p; printf(“ No Name sex agen”); for(p=stu;pnum, p-name, p-sex, p-age); 11.6.3 用结构体变量和指向结构体的指针作函数参数用结构体变量和指向结构体的指
17、针作函数参数 将一个结构体变量的值传递给另一函数将一个结构体变量的值传递给另一函数 方法有方法有3种:种: (1)、结构体变量的成员作实参结构体变量的成员作实参传递给函数,是单向的值传递,传递给函数,是单向的值传递, 注意形、实的类型要一致。注意形、实的类型要一致。 (2)结构体变量作实参,结构体变量作实参,将结构体变量所占的内存单元的内容全将结构体变量所占的内存单元的内容全部顺序传递给形参,要求形参与实参同类型。函数调用是单部顺序传递给形参,要求形参与实参同类型。函数调用是单值传递,且形参占用内存单元,若形参的值被改变,不会返值传递,且形参占用内存单元,若形参的值被改变,不会返回主调函数。回
18、主调函数。 (3)指向结构体变量的指针作实参指向结构体变量的指针作实参,传递的是结构体变量的地址,传递的是结构体变量的地址。结构体变量结构体变量stu有学号、姓名和三门课成绩,在有学号、姓名和三门课成绩,在main函数中赋值函数中赋值,在,在print函数中打印输出(用结构体变量作参数)。函数中打印输出(用结构体变量作参数)。 #define FORMAT “%ldn%sn%fn%fn%fn”struct student long num;char name20; float score3; ; main() void print(struct student); struct student
19、 stu; stu.num=112001; strcpy(, “LiLi”); stu.score0=67.5; stu.score1=89; stu.score2=78.6; print(stu); void print(struct student stu) printf(FORMAT,stu.num,,stu.score0,stu.score1, stu.score2); printf(“n”); 结构体变量结构体变量 stu有学号,姓名和三门课成绩,用指向结构体变量有学号,姓名和三门课成绩,用指向结构体变量的指针作实参。的指针作实参。 #define F
20、ORMAT “%ldn%sn%fn%fn%fn”struct student long num; char name20; float score3; stu=112002,”LiLi”,67.5,89,78.6; main( ) void print(struct student *); print(&stu); void print(struct student *p) printf(FORMAT ,p-num,p-name, p-score0,p-score1,p-score2); printf(“n”); 11.7 用指针处理链表用指针处理链表 11.7.1 链表概述链表概述
21、数组:静态分配存储单元,容易造成内存浪费。数组:静态分配存储单元,容易造成内存浪费。 链表:是重要的数据结构,它根据需要,动态分配内存单元。链表:是重要的数据结构,它根据需要,动态分配内存单元。 特征:头指针变量,存放链表首地址,链表中每个元素称结点,特征:头指针变量,存放链表首地址,链表中每个元素称结点, 其内容:其内容: 1、数据部分:可有若干项(整、实、字符、结构体类型等)、数据部分:可有若干项(整、实、字符、结构体类型等) 2、指针变量:下一结点的地址,最后一个结点的地址部分为、指针变量:下一结点的地址,最后一个结点的地址部分为NULL。 head1249135614751021A 1
22、356B 1475C 1021D Null 1249链表各结点的特点:链表各结点的特点: 1.在内存中可以不连续,访问某结点应找上一结点提供的地址在内存中可以不连续,访问某结点应找上一结点提供的地址,每一结点有一指针变量存放下一结点的地址。,每一结点有一指针变量存放下一结点的地址。 2.链表的每个结点实际上是一个结构体变量,它有若干成员组链表的每个结点实际上是一个结构体变量,它有若干成员组成,包括的内容有两部分:成,包括的内容有两部分: (1)数据部分:整、实、字符、结构体等类型。)数据部分:整、实、字符、结构体等类型。 (2)指针变量:通常具有指向自身结构体类型的指针变量,此)指针变量:通常
23、具有指向自身结构体类型的指针变量,此指针变量用来存放下一结点的地址,以便一环扣一环而形成指针变量用来存放下一结点的地址,以便一环扣一环而形成链表。链表。 如:如:struct student int num; float score; struct student *next; ; 其中:其中:next 是成员名,又是指针类型,它指向是成员名,又是指针类型,它指向struct student数数据类型,据类型, 8910189. 589103908910785NULLnumscorenext11.7.2 简单链表简单链表例例test11_2:建立简单链表,它由:建立简单链表,它由3个学生数据的
24、结点组成。输个学生数据的结点组成。输出各结点中的数据。出各结点中的数据。 #define NULL 0 struct student long num; float score; struct student *next; ; main( ) struct student a,b,c,*head,*p; a.num=112001;a.score=89.5;b.num=112002;b.score=90; c.num=112003;c.score=85; head=&a;a.next=&b;b.next=&c; c.next=NULL; p=head; do printf
25、(“%ld %5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); 11200189. 51120029011200385NULLnumscorenextabc每个结点都属于每个结点都属于struct student类型,它的类型,它的next成员存放下一个结成员存放下一个结点的地址,这样一环扣一环,将各结节紧密的扣在一起,最后点的地址,这样一环扣一环,将各结节紧密的扣在一起,最后一次循环,将一次循环,将p=p-next是将是将c结点的地址赋给结点的地址赋给p,这时,这时p指向指向c结结点,然后将点,然后将c结点的结点的num,score输出,之后将
26、输出,之后将p=p-next实际上是实际上是将将c结点的结点的next内容,即内容,即NULL赋给赋给p 再进行判断,再进行判断,P!=NULL条条件不成立,循环结束。件不成立,循环结束。 本例所有结点是在程序中定义的,不是临时开辟的,用完也不能本例所有结点是在程序中定义的,不是临时开辟的,用完也不能释放,这种链表称释放,这种链表称“静态链表静态链表”。11.7.3 处理动态链表所需的函数处理动态链表所需的函数 为处理动态链表,为处理动态链表,C提供了开辟和释放存储单元的函数:提供了开辟和释放存储单元的函数: 1、malloc函数函数 函数原型:函数原型:void *malloc(unsign
27、ed int size); 在动态区分配长度为在动态区分配长度为size的连续空间,函数返回值是一个指向分配的连续空间,函数返回值是一个指向分配域起始地址的指针,如内存空间不足,返回空指针域起始地址的指针,如内存空间不足,返回空指针NULL。 (此处:此处:void为无确定类型为无确定类型) 2、calloc函数函数 函数原型:函数原型:void *calloc(unsigned n,unsigned size); 在内存动态区分配在内存动态区分配n个长度为个长度为size的连续空间,函数返回指向分配的连续空间,函数返回指向分配域起始地址的指针,若分域起始地址的指针,若分 配不成功,返回配不成
28、功,返回NULL值。值。3、free函数函数 函数原型:函数原型:void free(void *p); 功能:释放由功能:释放由p指向的内存区,使这部分内存区能被其它变量使指向的内存区,使这部分内存区能被其它变量使用。用。P是指向由是指向由calloc或或malloc分配的存储区域。分配的存储区域。 free函数无返回值。函数无返回值。 注:旧版本提供的注:旧版本提供的malloc和和calloc函数得到的是指向字符型数据的函数得到的是指向字符型数据的指针。指针。 ANSI C提供的提供的malloc和和calloc函数规定为函数规定为void *类型,这并不是说类型,这并不是说该函数调用后
29、无返回值,而是返回一个结点的地址,该地址的该函数调用后无返回值,而是返回一个结点的地址,该地址的类型为类型为void(无类型或类型不确定)无类型或类型不确定),即一段存储区的首址,其具即一段存储区的首址,其具体类型无法确定,只有使用时根据各个域值数据再确定。体类型无法确定,只有使用时根据各个域值数据再确定。10.7.4 建立链表建立链表 建立动态链表:是指在程序执行过程中从无到有地建立起一个链建立动态链表:是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。后相链的关系。 例例Test1
30、1-3.c 建立单向动态链表的函数,每个结点有学号、成绩建立单向动态链表的函数,每个结点有学号、成绩和指向下一结点的指针。和指向下一结点的指针。#include “stdio.h”#include “stdlib.h”#define NULL 0 #define LEN sizeof (struct student) struct student long num; float score; struct student *next; ; int n; struct student *creat(void) struct student *head; struct student *p1, *
31、p2; char s120; n=0; p1=p2=(struct student *)malloc(LEN); scanf(“%ld”,&p1-num); gets(s1); p1-score=atof(s1); head=NULL; while(p1 -num !=0) n=n+1; if(n=1)head=p1; else p2-next=p1; p2=p1; p1=(struct student *)malloc (LEN); scanf(“%ld”,&p1-num); gets(s1); p1-score=atof(s1); p2-next=NULL; return(
32、head); 11200189. 51120029011200385NULLnumscorenexthead11.7.5 输出链表输出链表 将链表中各结点数据依次输出的方法是:将链表中各结点数据依次输出的方法是: 首先要有链表首地址,即首先要有链表首地址,即 head的值,然后设一指针变量的值,然后设一指针变量P,先指,先指向第一个结点,输出向第一个结点,输出P所指向的结点,然后使所指向的结点,然后使P后移一个结点再输后移一个结点再输出,直到链表的尾结点。出,直到链表的尾结点。P=head,使使p指向第一个结点指向第一个结点 P指向的不是尾结点指向的不是尾结点 真真 假假输出输出p所指向的结点
33、所指向的结点p=p-next当当p指的不是表尾指的不是表尾headNULLPP例例 输出链表的函数输出链表的函数 void print( struct student *head) struct student *p; printf(“n Now, these %d records are :n”, n); p=head; if(head) !=NULL) do printf(“%ld, %5.2fn”, p-num, p-score); p=p-next; while(p !=NULL); 11200189. 51120029011200385NULLnumscorenexthead11.7
34、.6 对链表的删除操作对链表的删除操作 把该结点从链表中分离,并未真正从内存中删除。把该结点从链表中分离,并未真正从内存中删除。 例例 删除动态链表中指定的结点删除动态链表中指定的结点 p1是要删除的结点是要删除的结点 是是 否否 链表是一个空表链表是一个空表 真真 假假输出输出 “空空 表表”p1=head 当当num p1 - num 以及以及p1 所指的结点不是表尾结点所指的结点不是表尾结点p2=p1 (p2后移一个位置)后移一个位置) p1 = p1 - next (p1后移一个位置)后移一个位置)输出输出“找不找不 到到”的信息的信息 P1所指是头结点所指是头结点 是是 否否head
35、=p1-next (删除头结点)删除头结点)p2-next=p1-next (删除一个结点)删除一个结点)删除结点的函数删除结点的函数 struct student *del(struct student *head,long num)struct student *p1,*p2; if(head = = NULL) printf(“n list null ! n”); goto end; p1=head; while(num !=p1 -num & p1 -next != NULL) p2=p1; p1=p1-next; if(num = p1 -num) if(p1 = = hea
36、d) head=p1 -next; else p2 - next = p1-next; free(p1); printf(“delete: %dn”,num); n=n-1; else printf(“%ld not been found ! n”,num); end: return(head); 11200189. 51120029011200385numscorenexthead11200485NULLp2p1p1-next11.7.7 对链表的插入操作对链表的插入操作 将一个结点插入到按学号顺序排列的链表中将一个结点插入到按学号顺序排列的链表中 算法:算法:p1=head, p0=stu
37、d 原来的链表是空表原来的链表是空表 是是 否否当当p0 - num p1 - num 以及以及p1所指的不是表尾结点所指的不是表尾结点 p2=p1 p1=p1-next p0 - num p1 - num 真真 假假 P0指向头结点指向头结点 是是 否否head=p0 P0-next=p1 (插到表头之前插到表头之前)p2-next=p0 P0-next=p1 (插到表中间插到表中间)p1-next=p0 P0-next=NULL (插到表尾之后插到表尾之后)将将p0所所 指的结指的结 点作为点作为 唯一结唯一结 点点 n=n+1struct student *insert(struct s
38、tudent *head, struct student *stud)struct student *p0, *p1, *p2; p1=head; p0=stud; if(head = = NULL) head=p0; p0-next=NULL; else while(p0-num p1 -num) & (p1 -next != NULL) p2=p1; p1=p1-next; if(p0 - num num) if(head = p1) head=p0; p0 - next =p1; else p2 -next=p0; p0 -next = p1; else p1 -next=p0;
39、 p0 -next=NULL; n=n+1; return(head); 11200189. 51120029011200485numscorenexthead11200585NULLp2p111200385p010.7.8 对链表的综合操作对链表的综合操作 T11-main.c 链表操作综合程序链表操作综合程序 #include “stdlib.h”#include “stdio.h”#define LEN sizeof (struct student) struct student long num; float score; struct student *next; ; int n=0
40、; #include “T11-8.c” /*建立链表的函数建立链表的函数*/ #include “T11-9.c” /*输出链表的函数输出链表的函数*/ #include “T11-10.c” /*删除链表的函数删除链表的函数*/ #include “T11-11.c” /*插入链表的函数插入链表的函数*/main( ) struct student *head, *stu; long del_num; char s220; printf(“input records: n”); head=creat(); print(head); printf(“n input delete number
41、:”); scanf(“%ld”, &del_num); while(del_num !=0) head=del(head,del_num); print(head); printf(“input the delete number:”); scanf(“%ld”, &del_num); printf(“n input the inserted record:”); stu=(struct student *) malloc(LEN); scanf(“%ld”,&stu-num); gets(s2); stu-score=atof(s2); while(stu-num
42、!=0) head=insert(head,stu); print(head); printf(“input the inserted record:”); stu=(struct student *)malloc(LEN); scanf(“%ld”, &stu -num); gets(s2); stu-score=atof(s2); 11.8 共用体共用体 11.8.1 共用体的概念共用体的概念 共用体:使用覆盖技术,使几个不同的变量共占用一段内存的结共用体:使用覆盖技术,使几个不同的变量共占用一段内存的结构。构。定义共用体类型变量的一般形式为:定义共用体类型变量的一般形式为: un
43、ion 共用体名共用体名成员列表成员列表 变量列表;变量列表;如:如: union data 或或union data 或或union int i; int i; int i; char ch; char ch; char ch; float f; float f; float f; a,b,c; a,b,c; union data a,b,c;11.8.2 共用体变量的引用方式共用体变量的引用方式 共用体变量定义后,只能引用共用体变量中的成员,不能引用共共用体变量定义后,只能引用共用体变量中的成员,不能引用共用体变量。如:用体变量。如: a.i (引用共用体变量中的整型变量(引用共用体变量中
44、的整型变量i) a.ch (引用共用体变量中的字符变量(引用共用体变量中的字符变量ch) a.f (引用共用体变量中的实型变量(引用共用体变量中的实型变量f)11.8.3 共用体类型数据的特点共用体类型数据的特点 (1)同一个内存段可以用来存放几种不同类型的成员,但在每一瞬同一个内存段可以用来存放几种不同类型的成员,但在每一瞬间只能存放其中一种。间只能存放其中一种。(2)共用体变量中起作用的成员是最后一次存放的成员。如:共用体变量中起作用的成员是最后一次存放的成员。如: a.i=1; a.c=a; a.f=1.5;(3)共用体变量的地址和它的成员变量的地址都是同一地址。如:共用体变量的地址和它的成员变量的地址都是同一地址。如: &a、&a.i、&a.c、&a.f都是同一地址值都是同一地址值(4)不能对共用体变量名赋值,也不能引用变量名来得到一个值,不能对共用体变量名赋值,也不能引用变量名来得到一个值,又不能在定义共用体变量时对它初始化。如:又不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年预防接种理论知识竞赛考试题库(完整版)
- 26年新定版四年级上册语文写字表生字课课贴-空白版
- 中医资格试题及答案03
- 【AI赋能课件】23. 《司马光》
- C类证易错试题及答案分析
- 2026广东韶关市消防救援支队政府专职消防员招聘75人(第三批次)考试备考题库及答案详解
- 2026广西平果金通投资集团有限公司公开招聘4人笔试备考题库及答案详解
- 2026年8月西南医科大学附属医院招聘工作人员考试备考试题及答案详解
- 2026永州市公安局招聘警务辅助人员65人笔试备考题库及答案详解
- 2026首都医科大学附属北京地坛医院第三批招聘22人笔试备考试题及答案详解
- 2026年下半年中小学教师资格考试综合素质(中学)笔试真题及答案
- IEC TR 62595-1-62025 显示器照明装置 第1-6部分用于背光装置的量子点薄膜和量子点扩散板标准立项发展报告
- 2026太仓市城市发展集团有限公司第一批公开招聘6人考试参考题库及答案详解
- 天津市河东区2025-2026学年九年级上学期12月月考英语试题(含答案)
- 2026年秋季开学小学收心归位习惯养成教育课件
- 2026年山东将军开元纸业有限公司招聘(13人)笔试模拟试题及答案详解
- DEK印刷机-操作-编程-保养
- 2026陕西水务发展集团综合能源管理有限公司招聘笔试模拟试题及答案详解
- 国有企业董事会决策事项清单管理制度
- 2026年安徽(高考)化学考试试卷真题(含答案)
- 泡菜制作实验
评论
0/150
提交评论