




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构体TeacherteachingdesignCONTENTS
目录结构体的定义方式结构体变量的引用结构体数组案例分析仿真演练结构体的定义方式点PART01第一步:定义结构体类型的名称和成员构成第二步:用结构体类型名定义结构体变量定义结构体类型变量struct<结构体类型名>{
<类型标识符><成员名1>;
…
<类型标识符><成员名n>;};定义结构体变量的格式是:struct<结构体类型名><结构体变量表>;(一)先定义(构造)结构体类型,再定义结构体类型变量structstudent{
charname[10];
charno[8];
charsex;
intage;
floatscore;};structstudentstud1,stud2;例如格式举例structstudent{
charname[10];
charno[8];
charsex;
intage;
floatscore;}stud1,stud2;例如struct<结构体类型名>{<类型标识符><成员名1>;…<类型标识符><成员名n>;}<结构体变量表>;(二)在定义结构体类型的同时定义结构体变量struct{<类型标识符><成员名1>;
…<类型标识符><成员名n>;}<结构体变量表>;struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;例如(三)在定义结构体类型时,不设置结构体名,而是直接定义结构体变量说明:这种形式一般不使用。这种定义格式一定要用大括号把初始化表括起来,不同的成员初值用逗号隔开,且字符要加单引号定界,字符串要加双引号定界,数组加大括号定界。说明:staticstructstudent{charname[20];charsex;intage;floatscore;}stu1,stu2={“Wangwu”,’m’,20,88.5};(四)静态变量的结构体变量定义格式例如:structstudent{intnum,age;charname[20],sex,addr[30];structstudy{floatChinese,Math,Physics,English;}score;};例如:(五)嵌套定义,即在结构体类型定义中又有结构体类型的成员不要把结构体类型名和结构体变量名混淆起来(2)花括号外的分号不能省略,它标示结构体定义语句的终止(4)struct是关键字,作为定义结构体类型的标志,后面紧跟的是结构体类型名,由用户自行定义。(3)花括号内是结构体的成员说明表,也称为数据项,也称为成员或分量,用来说明该结构体有哪些成员及它们属于哪种数据类型,占多少个字节,按什么形式存储,但不会为其分配存储空间,只有在定义一个结构体变量时,才会为该变量分配内存空间。其中成员之间名称不能相同,但数据类型可以相同。(1)补充说明结构体变量的引用PART02动态存储的结构体变量,不能在定义时进行初始化,只能通过赋值语句,输入函数等形式分别对其中的成员赋值。<结构体变量名>.<成员名>成员的引用格式“.”是成员运算符,表示对结构体变量的哪个成员进行引用,成员运算符的优先级在所有运算中是最高的。结构体变量的引用
如:today.year=2012;如果成员本身又是一个结构体则必须逐级找到最低级的成员进行引用。
例如,today.time.second=15;单独引用结构体变量的成员1如:nextday=today;结构体变量作为一个整体引用2structclock{inthour,minute,second;};structdate{intyear,month,day;structclocktime;}today,nextday;引用举例stud2=stud1;要求具有相同的结构体数据类型。整体赋值把结构体变量stud1各成员的值分别赋值给结构体变量stud2的各成员成员分别赋值strcpy(,);stud2.score=stud1.score;成员赋值举例结构体变量的赋值注意:字符数组之间赋值不能使用赋值运算符,必须使用字符串赋值函数strcpy。scanf("%d,%s,%c,%d,%f,%s\n",&student1);错误示例1scanf("%s",);scanf("%f",&stud2.score);正确示例2如果使用scanf函数接收结构体变量的值,不能直接针对结构体变量接收输入,要将成员分开接收输
入结构体变量的输入和输出结构体变量的输出也是被分解到各成员的输出上,以正确的引用方式和对应的类型输出控制符对应即可。例:printf("%s\n",);输
出sizeof(stud1)的字节数为25,sizeof(stud2)的字节数也为25。struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;举例感知结构体变量存储空间的大小等于结构体类型各成员分量所占字节数之和存储空间计算结构体变量存储空间结构体数组PART03struct<结构体类型名><结构体数组名>[<长度>];定义格式要定义一个结构体数组,首先要定义一个结构体类型,然后再把数组定义为结构体类型。说明先定义结构体类型,再定义结构体数组格式一定义结构体类型的同时,定义结构体数组格式二结构体数组的定义structstudent{intnum;charname[20];charsex;
intage;floatscore;}stu[30];structstudentstud[10];格式一举例structstudent{intnum;charname[20];charsex;intage;floatscore;}stu[30];格式二举例结构体数组的定义先定义结构体类型再定义结构体数组定义结构体类型的同时,定义结构体数组structstudentstud[10];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3]={{101,”WGJ”,’M’,28,88.5,“CS”},{102,”DYH”,’F’,26,88.0,”CS”},{103,”DYC”,’M’,24,78.5,”CZ”}};结构体数组中每个元素的初始化列表都要用一对花括号括起来以示区分,花括号之间用逗号相隔结构体数组的初始化每个元素的初始化表中的数据类型要与对一个成员的类型一致<数组名>[<下标号>].<成员名>引用格式在引用数组元素时,每个元素就是一个结构体变量,要把元素的引用和结构体变量成员的引用结合起来举例感知结构体数组元素的引用stu[1].num=102;表示引用下标为1的元素的成员num。案例分析
交流提升PART04main(){structstu{
intnum;char*name;charsex;floatscore;}boy1,boy2;boy1.num=102;="Zhangping";printf("inputsexandscore\n");scanf("%c%f",&boy1.sex,&boy1.score);boy2=boy1;printf("Number=%d\nName=%s\n",boy2.num,);printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);}给结构变量赋值并输出其值。main(){
structobject{
charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}运行结果One1.7033.25Two2.9056.92Three0.3219.78分析以下结构体数组初始化程序运行后输出结果源程序结构体数组的初始化就是将结构体数组的每个元素初始化后用“{}”括起来即可main(){structobject{charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}One1.7033.25Two2.9056.92Three0.3219.78运行结果分析以下结构体数组初始化程序运行后输出结果源程序main(){inti,c=0;floatave,s=0;for(i=0;i<5;i++){s+=boy[i].score;if(boy[i].score<60)c+=1;}printf("s=%f\n",s);ave=s/5;printf("average=%f\ncount=%d\n",ave,c);}主函数structstu{intnum;char*name;charsex;floatscore;}boy[5]={{101,"Liping",'M',45},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chengling",'F',87},{105,"Wangming",'M',58},};定义结构体类型并初始化计算学生的平均成绩和不及格的人数仿真演练
体验探索PART05源程序选项A)20045537B)20041580C)20042580D)20041703答案B分析:主函数中定义并初始化了结构体数组,输出为数组中第一个元素的num和第二个数组元素的TotalScore分析以下程序的运行后的输出结果#include<string.h>structSTU{
intnum;
floatTotalScore;};main(){
structSTUs[2]={{20041,703},{20042,580}};
printf("%d%3.0f\n",s[0].num,s[1].TotalScore);}C答案structstu{inta;floatb;}stutype;说明语句stutype是定义的结构体类型变量名分析A)struct是结构体类型的关键字B)structstu是用户定义结构体类型C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名选项如下说明语句,则下面叙述不正确的是A)1B)2C)8D)11选项若有定义:structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是(
)题目分析结构体变量所占字节数√符合结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津市东丽区2025年初三联测促改英语试题含答案
- 江苏省南京信息工程大学附属小学2025年五年级数学第二学期期末检测模拟试题含答案
- 云南省红河市达标名校2024-2025学年初三第五次月考化学试题试卷化学试题含解析
- 江苏省苏州市高新区达标名校2025年初三下学期学习能力诊断生物试题含解析
- 浙江省宁波鄞州区重点中学2025年初三下学期第二次统测化学试题含解析
- 康平县2025届四年级数学第二学期期末经典模拟试题含解析
- 智慧农业开启农业生产新纪元
- 天然气运输合同2025年
- 住房公积金贷款合同书
- 铝墙面板采购合同样本
- 校园足球教育知识讲座
- 2022-2023学年湖南省长沙市重点中学高一下学期期中考试化学试卷
- 硼元素植物研究报告总结
- 中职英语 基础模块2 Unit 4 Volunteer Work
- 水上交通整治方案
- 医德医风工作考核总结通用五篇
- 提高PICC导管维护规范率成果汇报
- 公司安环部绩效考核实施管理方法
- 建筑施工现场安全培训课件
- 建筑施工升降机安装使用拆卸安全技术规程
- 资产评估常用数据与参数手册
评论
0/150
提交评论