




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章自定义数据类型1)用户根据需要自己声明一些类型:数组2)用户可以自己声明的类型还有:结构体(structure)类型共用体(union)类型枚举(enumeration)类型类(class)类型3)称用户自定义类型,user-definedtype,UDT本章学习7.1结构体类型7.1.1概述1、什么是结构体将不同类型的数据组合成一个有机的整体,
C++语言提供了一种数据结构,称为结构体。例:
structStudent{ intnum;//学号
charname[20];//姓名
charsex;//性别
intage;//年龄};2、结构体类型声明方式
struct结构体类型名{成员表列};//注意分号不要遗漏其中:成员表列中放入各个成员的类型声明。
例:
structStudent{ intnum;//类型名成员名; charname[20]; charsex; intage;};3、名词1)结构体类型名例:structStudent{ intnum;//每个成员的声明语句
charname[20];};
结构体类型名:Student2)成员名如:num,name3)域表:成员表列4)一个域:结构体中的每一个成员(分量)。5)结构体类型可全局声明,也可局部声明。7.1.2结构体类型变量的定义方法及初始化1、定义结构体类型变量的方法说明:使用结构体时,不能使用结构体类型名,只能使用结构体变量。定义结构体变量有三种方法。方法1:先声明结构体类型,再定义变量。方法2:声明结构体类型的同时,定义变量。方法3:直接定义结构体类型变量。方法1:先声明结构体类型,再定义变量。(最可取)例:先声明结构体类型
structStudent//24B{ intnum; charname[20];};
再定义变量
Studentstudent1,student2;
系统根据变量定义,分配内存空间。
结构体变量名
结构体类型名方法2:声明的同时定义变量
struct结构体类型名{ 成员表列}结构体变量名表列;例:
structStudent{ intnum; charname[20];}student1,s2,s3;方法3:直接定义变量(不可取)
struct{
成员表列}结构体变量名表列;例:
struct{ intnum; charname[20];}student1,s2,s3;其它说明:不要误认为但凡结构体类型都有相同的结构。例:structStudent//24B{ intnum; charname[20];};structStudent1//8B{ intnum; intage;};2)类型与变量不同①使用变量,不能使用类型。②编译时,仅对变量分配内存。例:
structDate{ intyear; intmonth; intday;}date1,date2;使用date1,date2//2*12B3)成员的引用相当普通的变量(.成员运算符)例:
structS{ intnum; charname[20];}s1,s2;使用:
s1.num=20;strcpy(,"LiMing");s2.num=21;strcpy(,"ZhangHua");4)成员也可是结构体变量例:structDate{ intmonth; intday; intyear;};structStudent{ intnum; charname[20]; charsex; intage; Datebirthday;charaddr[30];}student1,student2;student1,student2内存分配分别为:4B+20B+1B+4B+3*4B+30B5)成员名和变量名相同,但不是一回事。例:
structStudent{ intnum; charname[20];}s1,s2;intnum;1)引用方式不同2)内存空间不同
s1.num=20;num=20;2、结构体变量的初始化定义时指定初始值例1:structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}student1={10001,"ZhangXin",'M',19,90.5,"Shanghai"};例2:structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];};Studentstudent2={10002,"WangLi",'F',20,98,"Beijing"};
1、可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。例:student1=student2;2、可以引用一个结构体变量中的一个成员的值。引用结构体变量中成员的一般方式为:结构体变量名.成员名(.高级,自左向右,因此看成一个整体)例:student1.num=10010;
(一个整体)7.1.3结构体变量的引用(使用)3、如果成员本身也是一个结构体类型,那么要用假设干个成员运算符,一级一级地找到最低一级的成员。例:student1.num4、不能将一个结构体变量作为一个整体进行输入和输出。例:cout<<student1;//错误只能对结构体变量中的各个成员分别进行输入和输出。例:
cin>>student1.num;cout>>student1.num;5、对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算种类)。例:student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;注:由于"."运算符的优先级高,因此student1.age++相当于(student1.age)++。++是对student1.age进行自加运算,而不是先对age进行自加运算。(单独的age是无意义的)6、可以引用结构体变量成员的地址,也可以引用结构体变量的地址。例:
cout<<&student1;cout<<&student1.age;
&student1:结构体变量的地址&student1.age:结构体变量成员的地址例7.1引用结构体变量中的成员。#include<iostream>usingnamespacestd;structDate{ intmonth; intday; intyear;};structStudent{ intnum; charname[20]; charsex; Datebirthday; floatscore;}student1,student2={10002,"WangLi",'f',5,23,1982,89.5};
intmain(){ student1=student2; cout<<student1.num<<endl; cout<<<<endl; cout<<student1.sex<<endl; cout<<student1.birthday.month<<'/' <<student1.birthday.day<<'/' <<student1.birthday.year<<endl; cout<<student1.score<<endl; return0;}运行结果如下:10002WangLif5/23/198289.5定义结构体数组的目的:
(一个结构体变量只能存一组数据。如:一个学生的档案,一个日期。)定义结构体数组,可有多个元素,就可存放多个学生的档案,多个日期。7.1.4结构体数组1、定义结构体数组三种方式:方式1:
structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];};Studentstu[3];方式2:structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}stu[3];方式3:struct{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}stu[3];2、结构体数组的初始化方式:定义数组={初值表列};例:structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}stu[3]={{10101,"LiLin",'M',18,87.5,"103BeijingRoad"},{10102,"ZhangFun",'M',19,99,"130ShanghaiRoad"},{10104,"WangMin",'F',20,78.5,"1010,ZhongshanRoad"}};数组各元素在内存中连续存放。定义数组stu时,也可以不指定元素个数。即写成以下形式:
structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}stu[]={{10101,"LiLin",'M',18,87.5,"103BeijingRoad"},{10102,"ZhangFun",'M',19,99,"130ShanghaiRoad"},{10104,"WangMin",'F',20,78.5,"1010,ZhongshanRoad"}};3、结构体数组应用举例例7.2对候选人得票的统计程序。(用字符数组)全局结构体类型声明:structPerson{ charname[20]; intcount;};定义结构体变量并初始化:Personleader[3]={"Li",0,"Zhang",0,"Fun",0};统计得票:
for(i=0;i<10;i++){ cin>>leader_name;
for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;}
输出得票:for(i=0;i<3;i++){ cout<<leader[i].name<<":" <<leader[i].count<<endl;}运行:Zhang↙
Li↙Fun↙Li↙Zhang↙Li↙Zhang↙Li↙Fun↙Wang↙Li:4Zhang:3Fun:2修改程序:(用字符串变量)全局结构体类型声明:
structPerson{
stringname;
intcount;};定义结构体变量,但不能初始化:Personleader[3];for(i=0;i<3;i++){ cin>>leader[i].name;
leader[i].count=0;}
stringleader_name;统计得票:
for(i=0;i<10;i++){ cin>>leader_name; for(j=0;j<3;j++) if(leader_name==leader[j].name) leader[j].count++;}输出得票:for(i=0;i<3;i++){ cout<<leader[i].name<<":" <<leader[i].count<<endl;}小结1、声明结构体类型
structA1{ inta; charb;};2、定义结构体变量(三种方式)
A1c;3、引用(使用)结构体变量成员
c.a=10;c.b='a';cin>>c.a>>c.b;cout<<c.a<<c.b;4、结构体变量初始化
A1c1={20,'b'};5、特例使用:c=c1;小结6、结构体数组1)声明类型
structA1{ inta; charb;};2)声明结构体数组(三种方式)
A1a[20];3)引用(使用)结构体数组元素的成员
a[i].a=10;a[i].b='a';cin>>a[i].a>>a[i].b;4)结构体数组初始化A1a[2]={10,'a',11,'b'};1、通过指向结构体变量的指针引用结构体变量中的成员1)指向结构体变量指针变量的定义前提:需声明结构体类型例:structStudent{ longnum; charname[20];};定义:结构体类型名*变量名;例:Student*p;7.1.5指向结构体变量的指针2)赋初值
Studentstudent1;Student*p;p=&student1;(指向确定)3)引用成员
student1.num=98001(*p).num=98001注意:括号不能省略。4)指向运算符->
(*p).num=98001可改写为
p->num=98001优先级高级结合性自左向右
p->num(可看成一个整体)p->num++++p->num5)结构体成员的三种表示方法直接访问:
student1.num
间接访问:(*p).nump->num(少写两个字符,更直观)例7.3指向结构体变量的指针的应用。结构体类型局部声明:structStudent{ intnum; stringname; charsex; floatscore;};结构体变量声明:Studentstu;指向结构体变量的指针变量定义和初始化:Student*p=&stu;输出成员值:(三种方式)cout<<stu.num<<""<<<<""<<stu.sex<<""<<stu.score<<endl;cout<<(*p).num<<""<<(*p).name<<""<<(*p).sex<<""<<(*p).score<<endl;cout<<p->num<<""<<p->name<<""<<p->sex<<""<<p->score<<endl;2、用结构体变量和指向结构体变量的指针构成链表链表是一种常见的重要的数据结构。图7.8表示最简单的一种链表(单向链表)的结构。图7.8链表有一个"头指针"变量,图中以head表示,它存放一个地址。该地址指向第一个元素。链表中的每一个元素称为"结点"。每个结点都应包括两个局部:一是用户需要用的实际数据,二是下一个结点的地址。1)链表---根据需要开辟内存单向链表:1)头指针head:
存放链表的首地址2)结点:链表中每一个元素
part1:用户的实际数据
part2:下一结点的首地址3)表尾:最后一个结点
part1:用户的实际数据
part2:存放空地址
(NULL)2)3人链表a)31001,89.5b)31003,90c)31007,85
Student*next;
Student*head;例:structStudent{ longnum; floatscore;};1)2人链表a)31001,89.5b)31003,90。链表结点的结构体类型:
structStudent{longnum;floatscore;Student*next;};链表的表头:
Student*head;
Part1
Part2NULL例7.4建立简单链表,它由3个学生数据的结点组成。输出各结点中的数据。(静态链表)#defineNULL0//注意此行#include<iostream>structStudent{ longnum; floatscore; Student*next;};(全局结构体类型声明)intmain(){ Studenta,b,c,*head,*p;
a.num=31001;a.score=89.5; b.num=31003;b.score=90; c.num=31007;c.score=85;
head=&a; a.next=&b; b.next=&c; c.next=NULL; p=head; do { cout<<p->num<<""<<p->score<<endl; p=p->next; }while(p!=NULL); return0;}将一个结构体变量中的数据传递给另一个函数,有以下3种方法:用结构体变量名作参数。一般较少用这种方法。(传值调用,单向,不共占内存)(2)用指向结构体变量的指针作实参,将结构体变量的地址传给形参。(传值调用)〔常用〕要求:函数体内改变指向变量值(3)用结构体变量的引用(别名)作函数参数。(传址调用)共占内存(最可取)7.1.6结构体类型数据作为函数参数例7.5有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们的值输出。用结构体变量作函数参数(传值调用)(传值调用,单向,不共占内存)函数声明:voidprint(Student);函数调用:print(stu);函数定义:voidprint(Studentstu){ cout<<stu.num……;//成员运算符}实参stu和形参stu各占内存。传递的是整个结构体成员值。改变形参,结果不返回。2)用指向结构体变量的指针作形参(传值调用)函数声明:voidprint(Student*);函数调用:print(&stu);
或Student*pt;pt=&stu;print(pt);//不共占内存函数定义://要求:改变指向变量的值,结果返回。voidprint(Student*p){ cout<<p->num……;//指向运算符}形参p指向实参stu。传递的是结构体变量stu首地址。3)用结构体变量的引用(别名)作函数参数(传址调用)函数声明:voidprint(Student&);函数调用:print(stu);函数定义:改变引用成员的值,结果返回。voidprint(Student&stud){ cout<<stud.num……;//成员运算符}形参stud是实参stu的别名,共占内存。传递的是结构体的首地址。在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。C++提供了较简便而功能较强的运算符new和delete。注意:new和delete是运算符。(优先级和结合性)new:动态分配内存空间delete:撤销(释放)内存空间*7.1.7动态分配和撤销内存的运算符new和delete1、new运算符使用的一般格式为:new类型[(初值)](该中括号表示可选项)例1:newint;作用:开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)。注意:1)用new分配数组空间时不能指定初值。2)如果由于内存缺乏等原因而无法正常分配空间,那么new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。例2:newint(100);作用:开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址。
(注意:没有赋给变量,下面的例子也是如此)例3:newchar[10];作用:开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址。
例4:
newint[5][4];作用:开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址。例5:
float*p=newfloat(3.14159);作用:开辟一个存放单精度数的空间,并指定该实数的初值为3.14159,将返回的该空间的地址赋给指针变量p。2、delete运算符使用的一般格式为delete[]指针变量1)前提:必须有指针变量指向new开辟的内存空间,才可用delete释放。例:newint;开辟了,却不能释放。2)注意:此处中括号为释放动态数组空间需要的。例1:float*p=newfloat(3.14159);
deletep;作用:释放上面用new开辟的存放单精度数的空间。例2:char*pt=newchar[10];delete[]pt;
作用:在指针变量前面加一对方括号,表示是对数组空间的释放操作。例7.6开辟空间以存放一个结构体变量。全局声明结构体类型:structStudent{ stringname; intnum; charsex;};定义结构体类型指针变量:Student*p;//第一步,定义指针开辟动态内存:p=newStudent;//第二步,指向确定操作数据:p->name="WangFun";cout<<p->name;//第三步,使用指向成员释放内存:deletep;
修改例7.4开辟空间以存放一个动态链表〔下学期学习〕〔考试不考〕#include<iostream>usingnamespacestd;#defineNULL0structStudent{ intnum; doublescore; Student*next;};voidmain(){ Student*head,*p,*p1; p1=newStudent; p1->num=31001;p1->score=89.5; head=p1; p=p1; p1=newStudent; p1->num=31003;p1->score=90; p->next=p1; p=p1; p1=newStudent; p1->num=31005;p1->score=85; p->next=p1; p1->next=NULL; p=head; while(p!=NULL) { cout<<p->num<<""<<p->score<<endl; p=p->next; } }小结1、结构体指针1)声明类型//前提
structA1{ inta; charb;};2)声明结构体变量和指针变量//第一步
A1a,*p;3)指针变量赋值,指向确定//第二步
p=&a;4)使用指向变量的成员:p->a=10;p->b='C';//第三步问:a.a对还是错?小结2、静态链表〔非动态内存〕1)链表结点类型声明structA1{ inta; charb; A1*next;};A1*head;2)声明链表结点变量A1a,b;3)a,b构成链
head=&a;a.next=&b;b.next=NULL;4)链输出(结点循环)
A1*p;p=head;while(p!=NULL){cout<<p->a<<p->b<<endl;p=p->next;}小结3、结构体作函参1)形参:结构体变量定义〔函数体内使用成员运算符.〕实参:结构体变量(已经有值〕所有成员传值,不共占内存,结果不能返回。2)形参:结构体指针定义(函数内使用->运算符)实参:&结构体变量(结构体首地址)(已经有值〕传值,不共占内存,有要求:函数体内改变指向变量值改变的是实参成员,结果能返回。3)形参:结构体别名(引用)定义(函数内使用别名和成员运算符.)实参:结构体变量(已经有值〕传址,共占内存。改变实参内存空间,结果能返回。小结4、new和delete1)int*p;p=newint;cin>>*p;cout<<*p;deletep;float*p;p=newfloat(1.2);cout<<*p;deletep;char*p;p=newchar[10];p=“abcd〞;或者cin>>p;delete[]p;小结:〔重要〕5、开辟释放结构体动态内存1〕结构体类型:structStudent{ stringname; intnum; charsex;};2〕定义结构体类型指针变量:Student*p;//第一步,定义指针3〕开辟动态内存:p=newStudent;//第二步,指向确定4〕操作数据:p->name="WangFun";cout<<p->name;//第三步,使用指向成员5〕释放内存:deletep;问:p内存何时释放?小结:〔重要〕6、开辟释放链表结点动态内存1〕链表结点类型:structStudent{ stringname; intnum; Student*next;};2〕定义结构体类型指针变量:Student*head;//第一步,定义指针3〕开辟动态内存:head=newStudent;//第二步,指向确定4〕操作数据: head->name="WangFun";cout<<head->name;//第三步,使用指向成员5〕释放内存:deletehead;namenumnexthead问:head内存何时释放?小结变量第一次赋值的方法:1〕初始化〔声明局部〕inta1=3;inta2[]={1,2};charc1='a';charc2[]="ab";char*c3="ab";stringstr="ab";int*p=&a;2〕赋值语句赋初值〔执行局部〕正确:a1=4;a2[0]=1;a2[1]=2;错误:a2[]={1,2};正确:c1='a';c2[0]='a';c2[1]='b';strcpy(c2,"ab"); c3="ab"; 错误:c2[]="ab";c2="ab";正确:str="ab";p=&a;3〕cin输入〔执行局部〕小结错误的情况1〕初始化〔声明局部〕structStudent {stringname; intnum; }s={"Li",1001};//错误2〕赋值语句赋初值〔执行局部〕charc2[80];c2="ab";c2[]="ab";c2[80]="ab";//错误正确:strcpy(c2,"ab");3〕cin输入〔执行局部〕char*c;cin>>c;//错误纠错:structStudent {stringname; intnum; }; ="Li";//或者cin s.num=1001;//或者cin正确:charc1[80],*c; c=c1;cin>>c;练习:1、以下正确的单向链表结点的类型定义是:______。A〕structStudent{stringname;intnum;};B〕structStudent{stringname;intnum;int*next;};答案:DC〕structStudent{stringname;intnum;Studentnext;};D〕structStudent{stringname;intnum;Student*next;};练习:2、以下程序运行结果。#include<iostream>#include<string>usingnamespacestd;structStudent{intnum;stringname;};voidmain(){ voidfun1(Student); Studentstu; stu.num=1001; ="Li"; fun1(stu); cout<<stu.num <<<<endl;}voidfun1(Studentstu){ stu.num=1002; ="Wang";}运行结果:1001Li练习:3、以下程序运行结果。#include<iostream>#include<cstring>usingnamespacestd;structStudent{intnum;charname[80];};voidmain(){ voidfun1(Student*); Studentstu; stu.num=1001;
strcpy(,"Li"); fun1(&stu); cout<<stu.num<<<<endl;}voidfun1(Student*stu){
stu->num=1002;
strcpy(stu->name,"Wang");}运行结果:1002Wang练习:4、以下程序运行结果。#include<iostream>#include<cstring>usingnamespacestd;structStudent{intnum;charname[80];};voidmain(){ voidfun1(Student&); Studentstu; stu.num=1001; strcpy(,"Li"); fun1(stu); cout<<stu.num<<<<endl;}voidfun1(Student&stu){
stu.num=1002; strcpy(,"Wang");}运行结果:1002Wang练习:5、结构体类型定义如下: structStudent{stringname;intnum;};以下正确的开辟释放结构体动态内存的是:______。A〕newStudent;deleteStudent;B〕Student*p;newStudent;deletep;答案:DC〕Student*p;p=newStudent;delete[]p;D〕Student*p;p=newStudent;deletep;1、有时需要使几种不同类型的变量存放到同一段内存单元中。例:可把一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中。7.2共用体
7.2.1共用体的概念2、这种使几个不同的变量共占同一段内存的结构,称为共用体(union)类型的结构(或联合类型)。3、声明共用体类型的一般形式为:union共用体类型名{ 成员表列};例:uniondata{inti;charch;doubled;};4、定义共用体变量的一般形式为:共用体类型名共用体变量名;
dataa,b,c;(另外两种方式)uniondata{inti;charch;doubled;}a,b,c;
(有共用体类型名)union{inti;charch;doubled;}a,b,c;(无共用体类型名)5、共用体变量所占的内存长度等于最长的成员的长度。例:uniondata{inti;charch;doubled;}a,b,c;
(共用体变量a:8B)structdata{inti;charch;doubled;}a,b,c;(结构体变量a:13B)1、不能引用共用体变量,而只能引用共用体变量中的成员。例:正确引用
a.ia.cha.fcout<<a.i;2、不能只引用共用体变量。例:错误引用
cout<<a;7.2.2对共用体变量的访问方式1)使用共用体变量的目的:是希望用同一个内存段存放几种不同类型的数据。注意:在每一瞬时只能存放其中一种,而不是同时存放几种。2)能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。3)共用体变量的地址和它的各成员的地址都是同一地址。4)不能对共用体变量名赋值;不能企图引用共用体变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。7.2.3共用体类型数据的特点例7.7设有假设干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、性别、职业、年级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现要求把它们放在同一表格中,见图7.13。图7.13全局结构体类型和变量声明:
其中一成员为共用体类型和变量的声明;struct{ intnum; charname[10]; charsex; charjob; unionP { intgrade; charposition[10]; }category;}person[2];也可以这样声明:(好的声明)先声明共同体类型,再全局声明结构体类型和变量。unionP{ intgrade; charposition[10];};structData{ intnum; charname[10]; charsex; charjob; Pcategory;};Dataperson[2];if(person[i].job=='s')cin>>person[i].category.grade;elseif(person[i].job=='t')cin>>person[i].category.position;——————————if(person[i].job=='s')cout<<person[i].num<<setw(6)<<person[i].name<<""<<person[i].sex<<""<<person[i].job<<setw(10)<<person[i].category.grade<<endl;elsecout<<person[i].num<<setw(6)<<person[i].name<<""<<person[i].sex<<""<<person[i].job<<setw(10)<<person[i].category.position<<endl;小结:1、共同体类型和变量及使用成员1)声明共同体类型,共同体成员共占内存unionA1{ inta; charb;};//问:cout<<sizeof(A1);2〕定义共同体变量(三种方式)A1c;3)只能引用(使用)共同体变量的某一个成员c.a=10;cin>>c.a;cout<<c.a;或c.b='a';cin>>c.b;cout<<c.b;1、如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。2、所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。7.3枚举类型〔不考〕3、声明枚举类型的一般形式为:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁模板施工合同范本
- 劳务施工合同范例
- 儿童上学房租合同范例
- 农村资源租赁合同范例
- 卖衣服劳务合同范例
- 供销提成合同范例
- 反腐败合同范例
- 专业厂房装修施工合同范例
- 厨师技术入股权合同范例
- 原材料借用合同范例
- GB/T 772-2005高压绝缘子瓷件技术条件
- 2023年苏州卫生职业技术学院高职单招(语文)试题库含答案解析
- 拘留所教育课件02
- 中国音乐史课件
- 11471劳动争议处理(第4章)
- 小学语文人教三年级下册 赵州桥-
- 基因治疗课件最新版
- 幼儿园社会领域自我意识活动教案(3篇)
- 识别和获取法律法规管理制度
- 2022年老年人健康管理工作总结
- 《碳纤维片材加固混凝土结构技术规程》(2022年版)
评论
0/150
提交评论