首页 C语言程序设计教程(李敬兆)课件章 (7)

C语言程序设计教程(李敬兆)课件章 (7)

举报
开通vip

C语言程序设计教程(李敬兆)课件章 (7)第7章结构体、共用体与枚举7.1结构体类型7.2结构体变量7.3共用体类型7.4枚举类型7.5用户定义类型本章小结第7章结构体、共用体与枚举7.1结 构 体 类 型  结构体类型的定义形式为struct结构体名{type成员1; type成员2;type成员n;};第7章结构体、共用体与枚举  说明:  (1)结构体名需符合标识符的命名规则。  (2) type必须是基本类型或已经定义的数据类型。  (3)各成员项之间用“;”分隔。  (4)结构体类型与基本数据类型和数组类型不同。基本数据类型(字符型、整型和实型)...

C语言程序设计教程(李敬兆)课件章 (7)
第7章结构体、共用体与枚举7.1结构体类型7.2结构体变量7.3共用体类型7.4枚举类型7.5用户定义类型本章小结第7章结构体、共用体与枚举7.1结 构 体 类 型  结构体类型的定义形式为struct结构体名{type成员1; type成员2;type成员n;};第7章结构体、共用体与枚举  说明:  (1)结构体名需符合标识符的命名规则。  (2) type必须是基本类型或已经定义的数据类型。  (3)各成员项之间用“;”分隔。  (4)结构体类型与基本数据类型和数组类型不同。基本数据类型(字符型、整型和实型)由系统提供,我们可以直接使用基本类型标识符说明变量或数组。而要使用结构体类型的数据,必须经过两个步骤:先由关键字struct和用户定义的结构体名(合在一起叫“结构体类型名”)来说明类型,然后再由它们说明变量名。第7章结构体、共用体与枚举7.2结 构 体 变 量  完成结构体类型以及成员的组成和类型的构造后,提供了结构体数据的组织方法,并没有提供具体的数据内容。如果要使用结构体,必须由定义好的结构体类型来声明结构体变量,系统开辟相应的内存空间,才能使用结构体变量成员项的内容。第7章结构体、共用体与枚举7.2.1结构体变量的声明  结构体变量的声明方法有三种:  (1)先声明结构体类型,后声明结构体变量。  这种形式的使用方法是:   struct结构体名变量名列表;  例如,利用上文中定义好的student结构体类型声明结构体变量:   structstudentstu1,stu2;/*定义结构体变量stu1和stu2*/第7章结构体、共用体与枚举.  (2)声明结构体类型的同时声明结构体变量。这种形式的使用方法是:第7章结构体、共用体与枚举  (3)声明结构体的类型时不声明结构体类型名,直接声明结构体变量。  这种形式的使用方法是:第7章结构体、共用体与枚举  第(3)种方法与第(2)种方法的区别在于前者省去了结构体名,但此种方法定义的结构体类型在程序后面不可使用,这是因为没有完整的结构体类型名。  说明:  (1)一个结构体变量在内存中占据一片连续的存储单元,该存储单元的大小理论上由该结构体各成员的存储单元的大小相加而成。例如,理论上变量stu1占据的存储单元如图7-1所示。第7章结构体、共用体与枚举图7-1结构体存储单元图第7章结构体、共用体与枚举  (2)为了优化CPU访问内存效率,程序语言的编译器在做变量的存储分配时进行了内存优化处理,故VC环境中,变量stu1实际分配60字节存储单元。在定义一个结构体类型时,可以利用已定义的另一个结构体类型来定义其成员类型,这就形成结构体类型的嵌套定义。例如:structdate{intyear; intmonth; intday;};第7章结构体、共用体与枚举  利用此结构体类型定义下面的结构体类型的成员birthday就构成嵌套定义:第7章结构体、共用体与枚举  用上述嵌套的结构体类型定义的变量stu1所占内存字节数为68字节,其存储示意图如图7-2所示。图7-2嵌套的结构体类型存储单元示意图第7章结构体、共用体与枚举  (3)  sizeof()函数可以用来测试数据类型在内存中占据的字节数,测试结构体占用的字节数的方法是sizeof(struct结构体类型名)或者sizeof(结构体变量名)。如测试student类型的大小,方法为sizeof(structstudent)或sizeof(stu1),结果为60,见例7-1。第7章结构体、共用体与枚举  【例7-1】编写程序,测试student类型占用的内存空间。第7章结构体、共用体与枚举7.2.2结构体变量的初始化  在定义结构体变量的同时可以进行初始化,方式就是将结构体各成员的常量列表按照成员项的类型及顺序在{}中列出。例如:  structstudentstu1={201201,"LiNin",18,'M',"学院路252号"};  对于嵌套的结构体类型变量,初始化是对各个基本类型的成员赋初值。例如:  structstudent1stu11={2012001,"LinNin",{1995,12,5},'M',"学院路252号"};第7章结构体、共用体与枚举   【例7-2】输出结构体数据。  程序运行结果如图7-3所示。图7-3例7-2运行结果第7章结构体、共用体与枚举7.2.3结构体变量的引用  结构体变量的引用必须以成员项作为引用的基本单位,也即只能引用结构体变量的成员项而不能引用整个结构体变量(函数参数以及函数返回值除外)。结构体变量成员的引用方式是:    结构体变量名.成员名第7章结构体、共用体与枚举  说明:  (1)“.”叫“结构体成员运算符”,优先级较高。  (2)这样引用的结构体成员相当于一个普通变量,在程序中可以当作对应的变量或数组元素来使用。例如:  stu1.num/*结构体变量stu1的成员num,相当于一个长整型变量*/  stu1.name/*结构体变量stu2的成员name,相当于一个字符数组*/第7章结构体、共用体与枚举  (3)在结构体嵌套的情况下,访问的应是结构体的基本成员,因为只有基本成员直接存放数据,且数据是基本类型或数组类型,引用形式为  结构体变量名.结构体成员名.….结构体成员名.基本成员名例如:  stu11.birthday.year/*基本成员year,相当于一个整型变量*/第7章结构体、共用体与枚举  (4)若结构体成员是数组,这时引用数组元素。例如:   stu1.name[5];/*相当于一个char型变量*/  (5)同一类型的结构体变量可相互赋值。对于结构体变量内嵌的结构体类型成员,情况也相同。  (6)结构体变量一般不能整体参加表达式的运算或输入输出,需要通过结构体变量成员的引用来完成。第7章结构体、共用体与枚举7.2.4结构体数组  我们知道,数组是同类型变量的有序集合。结构体变量也可以构造成数组,成为结构体数组。每个结构体数组元素都是一个结构体变量,都含有结构体的各个成员项。结构体数组名代表结构体数组在内存中的首地址,每个数组元素在内存中的地址也是按照数组元素下标的顺序连续的。  从前面的例子我们可以看出,结构体变量stu1只能存储一个学生的信息,如果要存放多个学生的信息,就必须用到结构体数组。第7章结构体、共用体与枚举  1.结构体数组的声明  结构体数组与结构体变量定义形式相同,只需加上方括号和元素个数即可,因此也有三种方法。  (1)先声明结构体类型,然后再声明结构体数组,如:structstudent{}structstudentstu[30];  这是最常用的一种结构体数组的使用方式。第7章结构体、共用体与枚举  (2)声明结构体类型的同时声明结构体数组,如:structstudent{……}stu[50];  (3)不声明结构体类型,直接声明结构体数组,如:struct{……}stu[50];第7章结构体、共用体与枚举  2.结构体数组的初始化  结构体数组在声明时,可以对数组的部分或全部元素赋初值,即对数组元素的各个成员项初始化。上面三种定义结构体数组的方法中都可以进行初始化,如:第7章结构体、共用体与枚举  3.结构体数组的引用  与一般数组的引用一样,对结构体数组的引用就是引用结构体数组元素。由于结构体数组的一个元素即是一个结构体变量,所以在使用时还要结合前面介绍的结构体变量的引用。第7章结构体、共用体与枚举  【例7-4】已知15人(人数可以通过宏定义改变)参加选举,共3个候选人,候选人的基本信息定义在结构体类型当中,包括候选人的标识号id(整型),候选人的姓名name(字符型数组),得票数count(整型)。选举时投票,即输入3个人的标识号(id成员项,分别取1、2、3),统计每位候选人的得票数。程序运行的结果如图7-4所示。第7章结构体、共用体与枚举图7-4例7-4的运行结果第7章结构体、共用体与枚举  说明:  (1)对结构体数组赋值、输入和输出、各种运算均是对结构体数组元素的成员(相当于普通变量)进行的。结构体数组元素的成员引用方式为结构体数组名[下标].成员名  (2)若结构体数组元素的成员是数值数组,则只能引用其元素,如stu[i].score[j];当结构体数组元素的成员是字符数组时,可以直接引用,如程序7-4中的nominee[i].name。  (3)结构体数组元素可相互赋值。第7章结构体、共用体与枚举  【例7-5】有5个学生,每个学生的信息有学号、姓名和三门课的成绩,求每个学生的平均成绩并按平均成绩从大到小对所有学生的信息进行排序并输出。   分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 :在定义结构体类型时,可以设计一个存放平均成绩的成员。排序可以使用选择或冒泡排序法,交换位置时注意应将结构体数组元素整体交换。  程序运行的结果如图7-5所示。第7章结构体、共用体与枚举图7-5例7-5运行结果第7章结构体、共用体与枚举  【例7-6】有5个学生,每个学生的信息有学号、姓名和三门课的成绩,输出三门课的总平均分以及所有成绩中最高成绩所对应学生的全部信息。  【分析】三门课的总平均分可以定义一个数组,找出最高成绩时,应记录是哪个学生,才能输出该学生的全部信息。  程序运行的结果如图7-6所示。第7章结构体、共用体与枚举图7-6例7-6运行结果第7章结构体、共用体与枚举7.2.5结构体指针  结构体变量或数组是内存中的对象,因此可通过指针进行访问。指向结构体变量的指针称为结构体指针。结构体指针必须先说明,然后指向同类型的结构体变量,再通过指针引用所指对象的各个成员项。第7章结构体、共用体与枚举  1.结构体指针变量的声明  结构体指针变量声明的一般形式为   struct类型名*结构体指针变量名;例如:   structstudentstu,*p1,*p2,st[3];   p1=&stu;//p即指向结构体变量的指针变量,存放结构体变量的地址   p2=st;第7章结构体、共用体与枚举  说明:  (1)一维结构体数组的数组名代表该结构体数组的首地址。若将一维结构体数组名赋给指向结构体变量的指针变量,该指针变量将指向下标为0的元素,也即指向结构体数组的首地址。结构体指针变量可以在数组元素之间移动,其逻辑上加1,等于加上一个结构体类型所占的字节数。  (2)指向结构体变量的指针变量和指向一维结构体数组中使用的指针变量不能相互混淆,因为它们的基本类型不同。第7章结构体、共用体与枚举   2.通过指针引用结构体对象  声明结构体指针后,必须让结构体指针指向同类型的结构体变量或数组;然后才能通过指针引用所指对象的成员项。结构体指针主要用于对结构体数组的访问。  结构体指针访问所指向结构体变量或数组元素的成员有以下两种方法:   指针变量->结构体成员名   (*指针变量).结构体成员名第7章结构体、共用体与枚举  说明:  (1)两种方式等价,“->”与“.”优先级相同,具有最高的优先级。“->”运算符表示取结构体指针所指向的结构体变量的成员项。  (2)在第二种方式中,()不能省略,因为“.”的优先级比“*”高,省略了(),表达式的含义与语法不符。第7章结构体、共用体与枚举  【例7-7】利用结构体指针输出结构体数组的各成员。  程序运行结果如图7-7所示。图7-7例7-7的运行结果第7章结构体、共用体与枚举7.2.6结构体与函数  结构体变量的成员项、结构体变量和结构体指针都可以作为函数的参数。  1.结构体变量的成员做函数参数  由于结构体变量的成员存放基本类型数据,因此这种情况同普通变量作为函数参数一样,是值传递方式。要注意,实参与形参的数据类型应一致。第7章结构体、共用体与枚举  【例7-8】输入结构体数组中学生的学号和姓名。  程序运行结果如图7-8所示。图7-8例7-8运行结果第7章结构体、共用体与枚举  2.结构体变量作为函数参数  结构体变量作为函数的参数,可实现值传递,而不是地址传递!在函数调用的参数传递过程中,结构体变量的各个成员项都要一一值传递,传递的内容比较多,系统的开销大,效率低,因此此种方式较少使用。第7章结构体、共用体与枚举  【例7-9】输出学生的全部信息。  程序运行的结果如图7-9所示。图7-9例7-9运行结果第7章结构体、共用体与枚举  3.结构体指针或结构体数组名作为函数参数  结构体指针或结构体数组名作为函数参数与普通指针或数组名作为函数参数相似,实现地址传递。参数用法如下:  形参:结构体数组或结构体指针变量。  实参:结构体数组名或取得数组名首地址的结构体指针变量。第7章结构体、共用体与枚举  【例7-10】利用结构体指针作为函数参数输出全部学生的信息。  程序运行的结果如图7-9所示。第7章结构体、共用体与枚举7.2.7链表  系统分配内存空间的方式有两种:静态和动态。用声明语句定义的各种存储类型的变量或数组,均由系统分配存储单元,程序员无法在函数的执行部分干预存储单元的开辟和回收,这种方式叫静态存储方式。静态存储方式存在一定的局限,要么不满足需要,要么浪费内存空间。为了合理使用内存空间,允许程序员在函数执行部分的任何地方使用动态存储分配函数开辟或回收存储单元,这种方式叫动态内存分配。利用动态内存分配建立的链表是一种十分重要的数据结构。第7章结构体、共用体与枚举  1.链表的概念  1)结点  组成链表的基本存储单元叫结点。该存储单元存有若干数据和指针,由于存放了不同数据类型的数据,它的数据类型应该是结构体类型。在结点的结构体存储单元中,存放数据的域叫数据域,存放指针的域叫指针域。简单结点的形式为第7章结构体、共用体与枚举  其中的数据域和指针域都可以不止一个。当指针域不止一个时,将构成比较复杂的链表。本 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 只介绍有一个指针域的结点类型,例如:第7章结构体、共用体与枚举  2)链表  若有一些结点,每一个结点的指针域存放下一个结点的地址,即指向下一个结点,这样就首尾衔接形成一个链状结构,称为链表。用上面的结构体类型建立的有5个结点的链表如图7-10所示。图7-10链表示意图第7章结构体、共用体与枚举  经常使用如图7-11所示的具有头结点和尾结点的链表。头结点是指向链表中第一个包含有用数据的结点,本身不包含有用数据,用于对链表的访问。尾结点是不指向其他结点的结点,因此尾结点的指针域存放的地址为NULL(或0,或'\0')。图7-11带头结点的链表示意图第7章结构体、共用体与枚举  3)建立一个简单链表  【例7-11】以三个结构体变量为结点建立一个简单的链表并输出。  程序运行的结果如图7-12所示。图7-12例7-11运行结果第7章结构体、共用体与枚举  2.链表的基本操作  由包含一个指针域的结点组成的链表为单向链表。每个单向链表都有一个头指针变量(或头节点的指针成员)指向,对链表的访问总是从头指针开始。每个链表的最后一个结点不指向其他结点,因此它的指针成员值为NULL。这种链表只能从头到尾单向访问,所以叫“单向链表”。  单向链表的基本操作,主要包括以下几种:建立并初始化链表;遍历访问链表(包括查找结点、输出结点等);删除链表中的结点;在链表中插入结点。第7章结构体、共用体与枚举  1)建立单向链表  建立单向链表的步骤如下:  (1)建立头结点(或定义头指针变量)。  (2)读取数据。  (3)生成新结点。  (4)将数据存入结点的数据域中。  (5)将新结点连接到链表中(将新结点地址赋给上一个结点的指针域)。  (6)重复步骤(2)~(5),直到输入结束。第7章结构体、共用体与枚举  2)输出链表  输出链表即顺序访问链表中各结点的数据域。方法是:从头结点开始,不断地读取数据和下移指针变量,直到尾结点为止。  3)删除单向链表中的一个结点删除单向链表中一个结点的步骤如下(如图7-13所示):  (1)找到要删除结点的前驱结点。  (2)将要删除结点的后继结点的地址赋给要删除结点的前驱结点的指针域。  (3)将要删除结点的存储空间释放。第7章结构体、共用体与枚举图7-13删除单向链表的一个结点第7章结构体、共用体与枚举  【例7-14】编写函数,在单向链表中删除值为x的结点。第7章结构体、共用体与枚举  4)在单向链表的某结点前插入一个结点在单向链表的某结点前插入一个结点的步骤如下:  (1)开辟一个新结点并将数据存入该结点的数据域。  (2)找到插入点结点。  (3)将新结点插入到链表中。将新结点的地址赋给插入点上一个结点的指针域,并将插入点的地址存入新结点的指针域,如图7-14所示。第7章结构体、共用体与枚举图7-14在单向链表中插入一个结点第7章结构体、共用体与枚举  【例7-15】编写函数,在单向链表中值为x的结点前插入值为y的结点,若值为x的结点不存在,则插在表尾。  【分析】本例结合了查找和插入两种功能,可能遇到三种情况:  ①链表非空,值为x的结点存在,则插在值为x的结点之前;  ②链表非空,值为x的结点不存在,则插在表尾;  ③链表为空,也相当于值为x的结点不存在,则插在表尾。第7章结构体、共用体与枚举第7章结构体、共用体与枚举  【例7-16】单向链表的综合使用。  EX7-16.C程序的运行结果如图7-15和7-16所示。第7章结构体、共用体与枚举图7-15在链表已有数据3之前插入数据50第7章结构体、共用体与枚举图7-16在链表尾插入数据50第7章结构体、共用体与枚举  链表由头指针代表,要释放链表可以定义一个工作指针得到头指针,然后头指针和工作指针均不断下移,同时利用free()释放结点。  单向链表的各结点由动态存储分配函数分配存储单元,结点无变量名,靠指针访问,因此在使用时要注意不能形成死结点,即无指针指向的结点。  结构体和指针结合的应用领域很广,链表方面除了单向链表以外,还有环形链表、双向链表等;此外还用于队列、栈、树、图等数据结构。有关这些问题在“数据结构”课程中可以学习,在此不作赘述。第7章结构体、共用体与枚举7.3共 用 体 类 型7.3.1共用体类型定义  共用体类型定义如下:union共用体名{type成员1;…type成员n;};第7章结构体、共用体与枚举7.3.2共用体类型变量声明  共用体变量的定义与结构体类似,也有三种方法:定义类型时同时定义变量;定义类型后,用类型名定义变量;不给类型名,直接定义变量。  说明:  (1)共用体变量所占字节数为各成员所占字节数的最大值。  (2)共用体的成员共用同一段内存区,故共用变量与其各成员的地址相同,且同一时刻只有最后一次存入的成员值能正确读出。第7章结构体、共用体与枚举  (3)共用体与结构体相似之处:都由不同类型的数据项组成;都只能对分量进行操作和引用。但是共用体变量不能进行初始化,而结构体变量可以初始化;也不能将共用变量作为函数参数,以及使函数返回一个共用数据,但可以使用指向共用变量的指针。第7章结构体、共用体与枚举7.3.3共用体类型变量引用  共用体类型变量与结构体类型变量一样,只能逐个引用共用变量的成员。简单的共用体变量和共用体类型的指针变量引用成员的方法如下:共用体变量名.成员名使用共用体类型的指针(*共用体指针名).成员或共用体指针名–>成员名第7章结构体、共用体与枚举  【例7-17】共用体变量的引用示例。第7章结构体、共用体与枚举  共用体a占用内存4个字节,所以a.i=20048,在内存中存储的是0x00004E50,又因为大多数CPU的存储方式是低位存储法,在内存中是0x504E0000,所以s[0]中存放的是0x50对应的字符P,s[1]中存放的是0x4E对应的字符N。'2'对应的ASCII为0x32,'1'对应的ASCII为0x31,所以在内存中存放的是0x32310000,也即0x00003132,故a.i=12594。该示例的运行结果如图7-17所示。第7章结构体、共用体与枚举图7-17例7-17运行结果第7章结构体、共用体与枚举7.4枚举类型  枚举类型用于声明一组命名的常数。当一个变量有几种可能的取值时,可以将它定义为枚举类型。  1.枚举类型定义  枚举类型定义的形式为   enum枚举名{枚举元素名1,枚举元素名2,…,枚举元素名n};第7章结构体、共用体与枚举  说明:  (1)枚举类型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号“,”隔开。  (2)枚举名是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的。  (3)第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。  (4)可以人为设定枚举成员的值,对于没有指定值的元素,在前一个成员的基础上加1。  (5)类型定义以分号“;”结束。第7章结构体、共用体与枚举  2.枚举类型变量  既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。方法一:枚举类型的定义和变量的声明分开。  enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};enumDAYyesterday;方法二:类型定义与变量声明同时进行。  enum{saturday,sunday=0,monday,tuesday,wednesday,thursday,friday}workday;第7章结构体、共用体与枚举  3.枚举类型变量的应用  【例7-18】枚举类型变量的使用。第7章结构体、共用体与枚举  程序运行结果如图7-18所示。图7-18例7-18运行结果第7章结构体、共用体与枚举7.5用户定义类型  C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也即允许用户为数据类型取“别名”。用户可以通过typedef给已经存在的系统类型或用户构造的类型重新命名。常用的用户自定义类型主要有三种应用:用户定义基本类型、用户定义数组类型和用户定义构造类型。  第7章结构体、共用体与枚举  1.给基本类型取“别名”  给基本类型取“别名”定义的形式为   typedef类型名标识符;  说明:  “类型名”必须是系统提供的数据类型或用户已定义的数据类型,主要起到见词知义和简便的作用。例如:   typedefintINTEGER;第7章结构体、共用体与枚举给已有的类型“int”起了个别名“INTEGER”,这样以后就可以用INTEGER来代替int作整型变量的类型说明了。例如:INTEGERa,b;等价于:inta,b;再如:typedefstructstudentST;给已有的类型“structstu”起了个别名“ST”。注意类型structstdent应已经定义。第7章结构体、共用体与枚举  2.数组类型定义  数组类型定义的形式为typedef类型名数组名[n];例如:typedefcharSTR1[20];表示STR1是字符数组类型,数组长度为20。然后可以用STR1说明变量。例如:STR1s1,s2,s3;等价于:chars1[20],s2[20],s3[20];第7章结构体、共用体与枚举  3.结构类型定义  结构类型定义的形式为typedefstruct{成员项列表;}结构体类型名;第7章结构体、共用体与枚举  说明:  (1)定义新类型名的一般步骤如下:  ①先按定义结构体变量或数组的方法写出定义(如chara[10];)。  ②将定义的名字换成新类型名(如charSTR[10];)。  ③在前面加上typedef(如typedefcharSTR[10];)。  ④然后可以用新类型名定义变量(如STRc,d;c、d即是有10个元素的字符数组)。第7章结构体、共用体与枚举  (2)在定义新类型名时常用大写的标识符。这是为便于区别的习惯写法,并不必须。  (3)用typedef定义类型只是定义新的类型名而不是创造新的类型,如果没有已知的类型,是无法定义类型名的。  (4)定义新类型名与宏替换有本质区别。typedef是用标识符INTEGER代替类型“int”,而#define是用标识符INTEGER代替字符串“int”;typedef在编译时解释INTEGER,而#define是在编译之前预处理时将INTEGER替换成字符串“int”;typedef并不是做简单替换。第7章结构体、共用体与枚举本章小结  本章学习了C语言的构造类型,包括结构体、共用体、枚举和用户定义类型别名的方法。本章学习的重点是结构体类型,要掌握类型的定义、变量的说明和引用、数组和指针的使用,以及结合结构体和指针知识学习链表的概念及其操作等。共用体和枚举需要了解定义、和引用方法即可。对于用户自定义类型,要了解它的实质、定义方法和主要用途等。第7章结构体、共用体与枚举感谢第7章结构体、共用体与枚举谢谢,精品课件资料搜集第7章结构体、共用体与枚举
本文档为【C语言程序设计教程(李敬兆)课件章 (7)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
知识大咖
工程测量教师
格式:ppt
大小:1MB
软件:PowerPoint
页数:85
分类:
上传时间:2021-11-23
浏览量:0