结构体课件《C语言程序设计》_第1页
结构体课件《C语言程序设计》_第2页
结构体课件《C语言程序设计》_第3页
结构体课件《C语言程序设计》_第4页
结构体课件《C语言程序设计》_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计

2023翻转课堂实用教程10.1结构体引入结构体前面章节中学到的数组,用于存储相同类型的数据,如每位应届生的薪资。若保存每位应届生的个人信息,比如姓名、性别、年龄、毕业学校、毕业时间等,可以定义不同的变量,但体现不了他们同属一个人的信息的内在联系。结构体可用来存放一组不同类型的、具有内在联系的数据。姓名性别年龄毕业学校毕业时间123结构体类型的定义结构体变量的定义结构体变量的初始化和使用知识点结构体案例案例分析结构体相关练习题练习题10.1.1结构体知识点程序员自定义的构造数据类型,“模板”,包含多个属性,用变量来表示,每个变量称为结构体成员。struct,定义结构体类型的关键字,不可省略1、结构体类型的定义形式如下:struct结构体名{

数据类型名

变量1;//又称为结构体成员1

数据类型名

变量2;//又称为结构体成员2…};//此处的分号不可以省略结构体类型名为:struct结构体名举例1:定义一张桌子的结构体类型,桌子包括长、宽、高、价格、材质这5个属性。structdesk{ doublelength,width,height;//同类型的结构体成员可用逗号,隔开一起定义 doubleprice; charmaterial[6];//用字符串来保存材质,如木、铁等。};代表着实际应用中的桌子模板,5个结构体成员,分别表示长、宽、高、价格、材质这5个属性。1、结构体类型的定义形式如下:10.1.1结构体知识点举例2:定义一个表示三维坐标点的结构体类型,坐标点包含x,y,z三个坐标值。structpoint{intx,y,z;};typedefstructpointPoint;//给structpoint起个短一些的别名Point虽然x,y,z都是整形,可以用数组来存储,但用结构体来表示,更能体现x,y,z为同一个点的三个坐标,反应三者的内在联系1、结构体类型的定义形式如下:

10.1.1结构体知识点举例3:结构体类型的嵌套定义structsize{ doublelength; doublewidth; doubleheight;};typedefstructsizeSize;//为structsize起的别名Size,后面用Size代替structsizestructdesk{ SizemySize;//成员变量也为一个结构体类型 doubleprice; charmaterial[6];};1、结构体类型的定义形式如下:10.1.1结构体知识点10.1.1结构体知识点2、结构体变量的定义

:结构体类型是一种构造数据类型,定义好数据类型后,就可以定义该数据类型的变量了。三种结构体变量的定义方式:(1)分开定义(2)同时定义(3)无类型定义

10.1.1结构体知识点2、结构体变量的定义

:(1)分开定义指先定义结构体类型,再定义这种结构体类型的变量,一般形式如下:struct结构体名{ 数据类型名变量1;//又称为结构体成员1 数据类型名变量2;//又称为结构体成员2…};struct结构体名结构体变量名表;

10.1.1结构体知识点2、结构体变量的定义

:(1)分开定义例如:structdesk{doublelength,width,height;doubleprice;charmaterial[6];};

structdeskdesk1,desk2;

10.1.1结构体知识点2、结构体变量的定义

:(2)同时定义指在结构体类型的定义最后定义变量,一般形式如下:struct结构体名{ 数据类型名变量1;//又称为结构体成员1 数据类型名变量2;//又称为结构体成员2…}结构体变量名表;//多个变量名之间用逗号,隔开

10.1.1结构体知识点2、结构体变量的定义

:(2)同时定义例如:structdesk{doublelength,width,height;doubleprice;charmaterial[6];}desk1,desk2;

10.1.1结构体知识点2、结构体变量的定义

:(3)无类型定义是指采用同时定义的方式时,省略结构体类型名。struct{ 数据类型名变量1;//又称为结构体成员1 数据类型名变量2;//又称为结构体成员2…}结构体变量名表;//多个变量名之间用逗号,隔开

10.1.1结构体知识点2、结构体变量的定义

:(3)无类型定义例如:struct{doublelength,width,height;doubleprice;charmaterial[6];}desk1,desk2;

无类型名定义方式只适合于后续不再需要用该结构体类型定义新变量的情况。10.1.1结构体知识点2、结构体变量的定义

:结构体类型与结构体变量的区别:

DeskSizepricemateriallengthwidthheight10.61.20.6150塑料2表头/结构体类型条目/结构体变量系统不会为结构体类型分配存储空间,会为结构体变量分配内存空间。10.1.1结构体知识点2、结构体变量的定义

:举例:结构体变量占用内存大小#include<stdio.h>structdesk{ doublelength;//8个字节 doublewidth;//8个字节 doubleheight;//8个字节 doubleprice;//8个字节 charmaterial[6];//6个字节};intmain(){ structdeskdesk1; printf("sizeofdesk1is%d",sizeof(structdesk)); return0;}运行结果:在64位机器下运行:sizeofdesk1is40为了提高存取效率,编译器会自动进行内存对齐,在64位机器中,默认以8字节对齐。某个变量不足8个字节,同样分配8个字节。10.1.1结构体知识点3、结构体变量的初始化和使用

:(1)在定义结构体变量时整体赋值(2)在定义结构体变量后,逐个对单个成员进行赋值。10.1.1结构体知识点(1)定义时赋值struct结构体名结构体变量名={成员值表};或者struct结构体名结构体变量名=同类型结构体变量;举例:structdeskdesk1={2,0.75,0.75,1000,"木质"};structdeskdesk2=desk1;

3、结构体变量的初始化和使用

:10.1.1结构体知识点(2)定义后,结构体成员单独赋值获取结构体成员的一般形式: 结构体变量.成员名举例:structdeskdesk1;desk1.length=2.0;desk1.width=0.75;desk1.height=0.75;desk1.price=1000;strcpy(desk1.material,"木质");

3、结构体变量的初始化和使用

:.成员运算符10.1.2结构体案例分析#include<stdio.h>intmain(){ inti;

structcomplex{ doublereal;//复数实部 doubleimag;//复数虚部 }num; printf("请输入复数的实部和虚部,用空格隔开:\n"); scanf("%lf%lf",&num.real,&num.imag); printf("thecomplexnumis(%.2f+%.2fi)",num.real,num.imag); return0;}

案例10.1.1定义一个表示复数的结构体,输入一个复数,并将该复数输出出来。请输入复数的实部和虚部,用空格隔开:3.25.1↙thecomplexnumis(3.20+5.10i)运行结果10.1.2结构体案例分析要求:输入整数n,随后输入n个候选人信息,候选人信息包括:姓名、学号、班级、得票数,并输出得票数最多的学生会主席候选人信息。//姓名、学号、班级、得票数structcandidate{ charname[10];//姓名 intno;//学号 chargrade[20];//班级 intvotes;//得票数};typedefstructcandidateCandidata;

案例10.1.2学生会主席候选人信息统计,以及最高票候选人信息输出。

#include<stdio.h>//姓名、学号、班级、得票数structcandidate{ charname[10];//姓名 intno;//学号 chargrade[20];//班级 intvotes;//得票数};typedefstructcandidateCandidata;

intmain(){ Candidatamax,stu; inti,n;案例10.1.2程序代码

printf("请输入候选人的人数:\n"); scanf("%d",&n); printf("请输入候选人的信息:姓名、学号、班级和票数:\n"); for(i=0;i<n;i++){ if(i==0){ scanf("%s%d%s%d",,&stu.no,stu.grade,&stu.votes); max=stu;//先假设第一个学生的投票数最多 }else{ scanf("%s%d%s%d",,&stu.no,stu.grade,&stu.votes); if(stu.votes>max.votes)max=stu; } } printf("得票最多的候选人:\n"); printf("%s%d%s%d",,stu.no,stu.grade,stu.votes); return0;}10.1.2结构体案例分析请输入候选人的人数:3↙请输入候选人的信息:姓名、学号、班级和票数:Emily2023100023软件工程28↙Peter2022103422信息安全30↙Eric2022202922会计42↙得票最多的候选人:Eric2022202922会计42运行结果10.1.3结构体课堂练习题课堂练习题10.1.1:写出执行下面程序后的输出结果。#include<stdio.h>typedefstructdesk{ doublelength,width,height,price; charmaterial[6];}Desk;intmain(){ Deskdesk1={2,0.75,0.75,1000,"木质"},desk2=desk1; desk2.price=1250; strcpy(desk2.material,"铁质"); printf("theinfomationofdesk1is%.2f,%.2f,%.2f,%.2f,%s\n", desk1.length,desk1.width,desk1.height,de

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论