




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目七
结构体和共用体-------------------------------------------主讲人:**《C语言程序设计》项目描述
习近平总书记在党的二十大报告中指出:“当代中国青年生逢其时,施展才干的舞台无比广阔,实现梦想的前景无比光明”,殷切寄语广大青年“立志做有理想、敢担当、能吃苦、肯奋斗的新时代好青年”。这是党的领袖对青年一代发出的伟大号召,为新时代中国青年成长成才指明了方向。
在学生的学籍信息中,每个学生都有如下属性:学号、姓名、性别、出生日期、入学成绩等,这些属性的数据类型不同,它们从不同方面描述了同一个学生,因此可以将这种描述看作一个整体。
针对当前情况,若将这些属性分别定义成互相独立的简单变量,难以反映它们之间的内在联系,也会使变量变得复杂,同时,由于数据类型不完全相同,也就无法使用数组来完成数据存储,那么像这种不同数据类型的批量数据我们该如何处理呢?
C语言允许用户根据实际需要,将已有的数据类型构造成自己需要的数据类型,并定义出相应的变量,这就是结构体和共用体。项目目标了解结构体和共用体的概念,能够正确定义结构体类型和共用体类型。掌握结构体变量和共用体变量的定义、引用和初始化的方法。理解sizeof的使用方法,能够通过typedef关键字重命名数据类型。任务一设计学籍信息表
——定义结构体类型任务描述
如果我们把某学生的学籍信息看作一个整体,例如学生姓名“王小明”,学号“20222339001”,性别“男”,出生日期“20030921”,入学成绩“310”,这些数据项的数据类型不完全相同,前四个为字符串型,最后一个为整型,所以无法将它们直接作为一维数组进行处理。
C语言允许用户把若干不同类型的数据组合成一个有机的整体,构成一种新的数据类型,称为结构体。在呈现某个学生的信息之前,我们需要先定义结构体类型来表明要从哪些方面描述该学生的信息,这就是定义结构体类型。学籍信息表学号姓名性别出生日期入学成绩20222339001王小明男2003092131020222339002宋一阳女2003040540020222339003李华男20040606378…………………………20222339030郑鑫女20031005455单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体类型
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同也可以不同,结构体中这些内容被称为成员或数据项。定义结构体类型的一般形式为:struct结构体名{
成员表列;};定义结构体的关键字,不能省略遵循标识符命名规则类型标识符1数据项1;类型标识符2数据项2;类型标识符3数据项3;...
分号不能省略,因为这是一条完整的语句(
具体数据项的定义方法与普通变量一致
)单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体类型结构体名student结构体内成员structstudent{
charno[20];
charname[8];
charsex[4];
charbirthday[10];intgrade;};可以被放在主函数main前面,也可以放在使用它的其他函数之前。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体类型3、一个汉字占两个字节,所以以性别只有“男”和“女”为例,建议定义charsex[6],而不能用sex[4]。注意事项1、像“学号”“手机号”“邮政编码”等数据,看似是整型数据,但是由于它们一般不参与数学运算,且位数固定、不发生改变,因此建议采用字符串类型。2、若结构体中的数据项为字符数组,其数组长度至少应该比实际存放的字符个数多一个,使得结构体中有存放字符串结束符’\0’的地方。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:结构体类型的嵌套在同一程序里,结构体类型并非只能定义或使用一种,用户可以同时设计若干结构体,其内的成员不仅可以是基本数据类型或者数组,也可以是另一个结构体类型,即结构体类型可以嵌套使用。structdate{
int
year,month,day;};structstudent{
charno[20];
charname[8];
charsex[4];structdatebirthday;//charbirthday[10];intgrade;};单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施根据表所示的学籍信息表结构体框架,找出下面程序代码中存在的5处错误,并简述错误原因。structstudent{ intno[20]; structstudentname[8]; charsex[4]; structdatebirthday; intgrade;};structdate{ intyear,month,day;};单击此处添加名称CLICKTOADDCAPTIONTEXT任务拓展党的二十大报告将“建成健康中国”作为到2035年我国发展的总体目标之一,并指出,人民健康是民族昌盛和国家强盛的重要标志,把保障人民健康放在优先发展的战略位置,完善人民健康促进政策。假设要建立在校学生的健康档案表,请根据基础查体内容(身高、体重、血型等),设计学生健康档案表的结构体架构,完成健康档案(health)结构体类型的创建。任务二添加学生信息的前期准备
——定义结构体变量任务描述
结构体类型的声明只是告诉编译器该如何表示数据,没有对象实体,它就没有在计算机中占据空间。用户要使用结构体,就需要创建结构体变量。定义好的结构体类型就像预设好的行为管理规范,基于它定义出来的结构体变量都需要遵守这个规范,学生作为学校中的一份子,就是学校这个结构体中的一个变量,只有严格遵守学校的管理规范和管理规定,才是一个合格的变量、一个合格的在校生。由结构体类型定义的变量称为结构体变量。表中的每一行数据都可以用单独的变量存储,存储数据的行变量就被理解为结构体变量。表中有几行数据,定义变量的时候就要定义几个结构体变量。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体变量的方法一般形式如下:struct结构体名{
成员表列;};struct结构体名变量名列表;(1)先定义类型,再定义变量structstudent
stu1,stu2;structstudent{
charno[20];……intgrade;};作为一个整体,不能省略,缺一不可示例1:单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体变量的方法一般形式如下:struct结构体名{
成员表列;}变量名列表;structstudent{
charno[20];……intgrade;}stu1,stu2;结构体变量名分号不能丢!示例2:(2)定义类型的同时定义变量单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体变量的方法一般形式如下:struct{
成员表列;}变量名列表;struct{
int
year,month,day;}birthday,workday;注意:常用于某种结构体类型只使用一次的场合。不能用来在后面程序中声明此结构体类型的变量,实际编程使用较少。→无结构体类型名示例3:(3)直接定义变量单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:结构体变量的注意事项(1)使用方法二和方法三定义结构体变量时,代码可以直接放在要使用的函数前或函数内。
(2)在编译时,系统对结构体类型不分配空间,只对结构体变量分配空间,使之能够使用内存,因此系统只能对结构体变量进行引用、赋值或运算。
(3)结构体类型中的成员名可以与程序中的普通变量名相同,但二者不代表同一对象。
(4)结构体变量中的成员可以单独使用,它的作用与地位相当于普通变量。
单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:typedef关键字
为了增强可读性,使程序更加简洁,C语言提供了一种关键字typedef,它的作用就是为某个类型另起一个名字。如: typedefintINT;
就是将int数据类型重新命名为INT,在接下来的定义变量中,INT和int的地位相等,即:
INTx;//使用新类型名定义变量
inty;//使用原类型名定义变量都是合法的定义语句。
注意,typedef关键字仅为现有数据类型起一个昵称,方便后续使用,其本身并不产生新的数据类型。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:typedef关键字在C语言中,typedef关键字主要是用来给结构体类型进行重命名,一般形式是:
typedef原数据类型名新类型名;注意:
(1)原数据类型必须是现有存在的(已经被定义的)的类型
(2)为了区分,新类型名建议使用原类型名的大写字母形式
(3)重命名后,原类型名和新类型名均可以用来定义结构体变量单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:typedef关键字
C语言也允许用户使用宏定义#define来简化结构体类型的命名。一般形式为:
#define新类型名原类型名注意:
#defineSTUDENTstructstudent//宏定义末尾没有分号STUDENTstu1,stu2;//语句后面要有分号
由于使用宏定义来重命名结构体类型的情况相对较少,所以只做简单了解即可。单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施(1)使用定义结构体变量的三种不同方法,完成学籍信息表结构体中结构体变量stu1和stu2的创建。
(2)使用typedef关键字将学籍信息结构体重命名为STUDENT,并用它定义结构体变量stu3和stu4。单击此处添加名称CLICKTOADDCAPTIONTEXT任务拓展为了建立在校学生的健康档案表,我们已经在任务一完成了health结构体的创建,请将当前结构体进一步重命名为HEALTH,并完成结构体变量h_stu1和h_stu2的创建。任务三添加并处理单条学籍信息
——结构体变量的引用和初始化任务描述
在正确定义结构体变量以后,系统会为其分配内存,如果要使用结构体变量的值,首先需要对结构体变量进行初始化,这就要求对变量内的每个成员进行赋值。
初始化结构体变量的目的就是为了能够使用结构体变量的成员,结构体变量的每个成员都可以看做一个独立的变量,称为成员变量,它们可以进行该成员所属数据类型允许的一切运算。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:结构体变量的初始化初始化的一般形式是:
结构体变量名={成员1的值,成员2的值,……};有两种方法:
(1)在定义结构体变量的时候进行初始化 structdate { intyear,month,day; };
structdatebirthday={2022,10,1};//不能遗漏类型名而单独对birthday赋值
(2)在定义结构体类型和结构体变量的同时进行初始化 structdate { intyear,month,day; }birthday={2022,10,1};单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:结构体变量的初始化注意事项:(1)只定义结构体类型时不能对其内的成员进行初始化,因为类型不是程序运行时的实体,系统不为他们分配内存空间,因此,对其初始化没有意义。(2)只能对主函数中的或外部存储类别和静态存储类别的结构体变量赋初值。(3)因为数据在结构体内是连续存放的,所以进行初始化的时候,不能跨越前面的成员而只给后面的成员赋值。即,无法使用“structdatebirthday={10};”单独为月份赋值。(4)同类型的结构体变量之间可以相互赋值。
结构体变量1=结构体变量2;单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:访问结构体变量结构体变量中的各个成员都可以通过句点运算符(.)来访问和引用。一般形式:<结构体变量名>.<结构体成员变量>下面是对结构体变量stu2的正确引用:
structstudentstu2; gets();//gets字符串输入函数 strcpy(stu2.no,"20222339002");//strcpy字符串复制函数 stu2.grade=400;//直接赋值 scanf("%s,%s",stu2.sex,stu2.birthday);//scanf格式化输入函数单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:访问结构体变量例7-1输出结构体变量中的各个成员main(){structstudentstu2;gets();
//gets字符串输入函数strcpy(stu2.no,"20222339002");
//strcpy字符串复制函数stu2.grade=400;
//直接赋值scanf("%s%s",stu2.sex,stu2.birthday);
//scanf格式化输入函数printf("\n%s,%s,%s,%s,%d",stu2.no,,stu2.sex,stu2.birthday,stu2.grade);}
运行结果单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:结构体变量的嵌套引用如果成员本身是其他结构体类型,则要用句点运算符一级级地找到最低层的成员。也就是说,我们只能对最低层的成员变量进行赋值、存取或运算。引用的一般形式是:
结构体变量名.结构体成员变量.结构体成员的子变量单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:结构体变量的嵌套引用例7-2结构体变量的逐级访问main(){ structstudentstu3; scanf("%d,%d,%d",&stu3.birthday.year,&stu3.birthday.month,&stu3.birthday.day); printf("李华的出生日期是:%d年%d月%d日",stu3.birthday.year,stu3.birthday.month,stu3.birthday.day);
}运行结果:单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-4:sizeof求字节数运算符求字节数的运算符:sizeof单目运算符,具有右结合性功能是求指定类型数据或变量在内存中需占用的内存数一般形式:sizeof(类型标识符)或
sizeof(变量名)
有了结构体变量后,系统会为其分配内存空间,一般情况下,系统分配给结构体变量的内存等于它的各成员所需内存变量的总和。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-4:sizeof求字节数运算符例7-3结构体变量求字节数#include<stdio.h>structdate{ intyear,month,day;}workday;main(){ printf("整型数据占用内存为:%d个字节\n\n",sizeof(int)); printf("workday结构体变量内的成员分别占用的内存为:"); printf("%d,%d,%d\n\n",sizeof(workday.year),sizeof(workday.month),sizeof(workday.day)); printf("实际workday结构体变量占用的内存为:%d\n",sizeof(workday));}单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施
在已定义结构体structstudent的前提下,要求直接对学生stu1和stu2的学籍信息进行初始化,stu3的学籍信息由键盘输入,最后把三个学生的姓名及入学成绩输出显示出来。补充完成程序中的代码,并上机编译程序。单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施#include<stdio.h>main(){ structstudentstu1={"20222329001","王小明","男",{2003,9,21},310}; ___________stu2={"20222329002","宋一阳","女",___________,400};
structstudentstu3={"20222329003"};
printf("请输入李华的姓名、性别及出生日期(年/月/日):\n"); gets(___________);//输入李华的姓名
scanf("______%d/%d/%d",stu3.sex,___________,___________,&stu3.birthday.day); _________________//通过直接赋值法初始化李华的成绩
printf("\n姓名入学成绩\n"); printf("%s%d\n",,stu1.grade); printf("%s%d\n",,stu2.grade); printf("%s%d\n",___________________________);}单击此处添加名称CLICKTOADDCAPTIONTEXT任务拓展
某选修课的成绩表如表所示。要求通过键盘输入三名学生的成绩(平时表现、章节测评、期末考试),计算并输出学生的学号、姓名及最终成绩。任务四处理多条学籍信息
——结构体数组任务描述
在前面的学生学籍信息表中,每个学生的信息都需要用一个student类型的结构体变量来表示,若要描述30个学生信息,就需要使用30个这样的变量,这样的设定会使程序员的记忆量增多,不利于后续数据的处理。数组用于存放同一种类型的数据,当我们把student类型的结构体变量汇总到数组中来表示一个班级的学生信息时,就构成了结构体数组。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体数组和定义结构体变量一样,结构体数组的定义也分三种方式:(1)先定义结构体类型,再定义结构体数组struct结构体类型名数组名[数组长度];(2)定义结构体类型的同时定义结构体数组struct结构体类型名{/*省略*/}数组名[数组长度];(3)以无名结构体类型直接定义结构体数组struct{/*省略*/}数组名[数组长度];第三种方式无法单独定义具有相同结构体类型的结构体数组。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义结构体数组
以structstudentstuArr[3]为例,structstudent为数组元素的数据类型,stuArr为定义的数组名,[3]为安排了3个当前类型所需要的内存单元。注意,定义后的stuArr是一个拥有3个元素的数组,其内每个元素都是structstudent类型,即stuArr[0]、stuArr[1]、stuArr[2],它们都是单独成立的,等价于结构体变量。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:结构体数组的初始化结构体初始化有两种方式:(1)先定义结构体类型,再在定义结构体数组的同时进行初始化(2)定义结构体类型和结构体数组的同时进行初始化结构体数组初始化的过程也是为每个元素进行赋值,所有成员可以依次放在一对花括号中,一般形式是:
数组名[数组长度]={成员1,成员2,成员3,……};现在初始化的一般形式是:
结构体类型
数组名[数组长度]={{成员1,成员2,成员3},//第0个元素的成员们 {成员1,成员2,成员3},//第1个元素的成员们 ……};单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:访问结构体数组的成员
结构体数组中的每个元素都是一个变量,它们包含着各自的所有成员项,因此结构体数组访问数据的方式与结构体变量一致,都是使用句点运算符来进行,一般格式是:结构体数据元素.成员名例如:stuArr[0].name;//表示第0个元素的name成员stuArr[1].no[10];//表示第1个元素的no成员的第10个字符stuArr[2].birthday.year;//表示第2个元素下birthday成员下的year成员单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:访问结构体数组的成员例7-4访问结构体数组的成员#include<stdio.h>main(){ structstudentstuArr[3]={{"20222329001","王小明","男",{2003,9,21},310}, {"20222329002","宋一阳","女",{2003,4,5},400}, {"20222329003","李华","男",{2004,6,6},378}}; printf("第1个学生的姓名是:"); puts(stuArr[0].name);//表示第0个元素的name成员,即"王小明" printf("\n第2个学生的学号最后一位数是:"); putchar(stuArr[1].no[10]);//no字符数组的范围是0-10,当前就是第11个数字 printf("\n\n第3个学生的出生年份是:"); printf("%d",stuArr[2].birthday.year);//表示第2个元素下birthday成员下的year成员}运行结果:单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施
在已定义结构体structstudent的前提下,继续根据图7-8学籍信息表中所示内容,定义结构体数组stuArr[3]并初始化,通过for循环结构完成出生日期和入学成绩的输入,最终将表中学生姓名及出生日期对应输出显示。根据要求,补充完成程序中的代码,并上机编译程序。单击此处添加名称CLICKTOADDCAPTIONTEXT任务实施{structstudentstuArr[3]={{"20222329001","王小明","男"},{"20222329002","宋一阳","女"}, ___________________________};
//结构体数组初始化inti;printf("请输入学生的出生日期(年/月/日)和入学成绩:\n");for(i=0;i<3;i++)scanf("%d/%d/%d%d",&stuArr[i].birthday.year,&stuArr[i].birthday.month,_____________________,_____________________);printf("\n---------------------学籍信息表---------------------\n");for(i=0;i<3;i++)printf("姓名:%s,出生日期:%d/%d/%d\n",__________________,__________________,stuArr[i].birthday.month,stuArr[i].birthday.day);}单击此处添加名称CLICKTOADDCAPTIONTEXT任务拓展
以结构体数组的形式完成选修课成绩表中学号、姓名和成绩来源三项内容的初始化,计算最终成绩后,以循环的形式输出姓名及最终成绩。任务五体育测试成绩表
——共用体任务描述
党的二十大报告提出:“广泛开展全民健身活动,加强青少年体育工作,促进群众体育和竞技体育全面发展,加快建设体育强国。”学习贯彻党的二十大精神,学校深刻理解建设体育强国的丰富内涵,为督促学生参与体育锻炼、增强自身体质,学校对学籍信息表中的学生进行了体育测试,男生测试立定跳远,女生测试仰卧起坐。
体育测试的成绩根据性别的不同,被分为了两类,立定跳远的成绩用float浮点型表示,仰卧起坐的成绩用int整型表示,它们数据类型不同,却共同占用了“成绩”的存储空间,这就要用到另一种和结构体十分相近的语法,即共用体,它也是由用户自定义使用的构造类型。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-1:定义共用体类型一般形式为:union共用体名
{
成员表列;
};
union是定义共用体类型的关键字,不能省略。共用体名遵循标识符命名规则。{}中的成员表列与结构体类型的成员说明一致,可以由基本数据类型定义的成员,也可以是结构体或其他共用体类型定义的成员单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:定义共用体变量(1)先定义类型,后定义变量格式:union共用体名{
成员表列;};//定义共用体类型union共用体名变量名列表;//定义共用体变量
“union共用体名”是作为一个整体来表示自定义的结构体类型,这两部分缺一不可。共用体也可以像结构体一样,使用typedef关键字声明新的共用体类型名来代替原有的类型名,例如“typedefunionstuSTU”,在后续使用中就可以直接使用“STU”作为共用体类型来定义共用体变量了,“STUcj;”就是定义了一个共用体变量cj。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:定义共用体变量(2)类型和变量同时定义格式:union共用体名{
成员表列;}变量名列表;//多个变量用逗号隔开单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:定义共用体变量(3)直接定义变量格式:union//没有共用体类型名{
成员表列;}变量名列表;注意:由于没有定义该共用体类型的名字,后续不能再使用该方法来定义其他共用体变量。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:定义共用体变量例7-5共用体变量的内存长度#include<stdio.h>unionstu//共用体类型名可以随便起{chara[8];//定义一个占8个字节的字符串shortb;intc;}s;main(){printf("共用体变量的字节数是:%d",sizeof(s));}单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-2:定义共用体变量
注意:共用体的大小一定是所有成员的数据类型的整数倍,如果不是的,需要补足。当前若修改字符串长度为10,即“chara[10];”,执行程序后,共用体占字节数为12。因为int占4个字节,10不是int的整数倍,所以需要补2个字节。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:共用体变量的引用和初始化
一般形式为:共用体变量名.成员名。
共用体在任意一个时刻,只有一个成员有意义,改变共用体中的一个成员,就会改变整个共用体,因此共用体变量不能进行整体引用。单击此处添加名称CLICKTOADDCAPTIONTEXT知识点-3:共用体变量的引用和初始化例7-6共用体变量的引用#include<stdio.h>typedefunionstu{ charx; inty;}STU;main(){ STUs1,s2; s1.x='C'; s1.y=65;
printf("共用体变量的地址是:");
printf("&s1=%x,&s1.x=%x,&s1.y=%x\n",&s1,&s1.x,&s1.y); printf("共用体变量s1成员的值为:"); printf("s1.x=%cs1.y=%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空采购合同范本
- 工装加工制作合同范本
- 投资30万合同范本
- 股东协议合同范本照片
- 厨柜销售合同范本
- 散酒销售提成合同范本
- 公司个人借贷合同范例
- 全款房产交易合同范例
- 买卖砂机合同范例
- 企业之间采购合同范例
- 1889-13-15-食堂承包协议工地食堂承包协议书
- T-NYA 007-2023 多味草本足浴包技术规范
- 课题开题报告:教育家精神在当代教育实践中的传承与创新研究
- 防洪防涝知识培训课件
- 高等职业学校办学能力评价的策略及实施方案
- 水上安全教育课件
- 《技术分析之均线》课件
- PE特种设备焊工理论复习题库(带解析)
- 2025年度全款文化演出门票购买合同4篇
- 临床基于高级健康评估的高血压Ⅲ级合并脑梗死患者康复个案护理
- 2025高考物理二轮专题复习-增分指导一 数学方法在物理中的应用【课件】
评论
0/150
提交评论