第6章 结构体.ppt
上传人:sy****28 上传时间:2024-09-10 格式:PPT 页数:21 大小:2.5MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

第6章 结构体.ppt

第6章结构体.ppt

预览

免费试读已结束,剩余 11 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章结构体6.1结构体类型结构体类型声明的语法格式为:例如:structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};这个结构体类型表示:point_type类型的变量将包含两个成员x、y,它们分别用于存储坐标点的两个坐标值。可以利用point_type类型声明下面这个结构体类型:structrectangle_type{structpoint_typelefttop;/*左上角的坐标*/structpoint_typerightbottom;/*右下角的坐标*/};为已经存在的数据类型起一个别名,其格式为:typedef原数据类型新数据类型名;typedefstructpoint_type{intx;inty;}POINT;在这里,POINT与structpoint_type完全等价6.2结构体变量的定义结构体变量的初始化struct<结构体类型名><变量名>={<成员值列表>};例:structpoint_typep={10,20};structdate_typed={2012,4,20};structrectangle_typerect={{10,10},{100,100}};结构体变量的引用<结构体变量名>.<成员名>结构体型变量的基本操作结构体型变量的输入scanf(“%d%d%”,&d.year,&d.month,&d.day);结构体型变量的输出printf(“%d%d%d”,d.year,d.month,d.day);结构体型变量的赋值d.year=2012;d.month=4;d.day=19;如果一个结构体型变量已经被赋值,并且希望将它的值赋给另外一个类型完全相同的结构体型变量,则可以采用整体赋值的方式。例1:通过键盘输入30名学生的基本信息(包括学号、姓名、出生日期、所属院系、所学专业),并显示输出。然后,再通过键盘输入一个月份和日期,查找并输出本年度在这个给定日期之后过生日的学生信息。问题分析为了表示一名学生的基本信息,应该声明一个包括学号、姓名、出生日期、所属院系、所学专业的结构体类型。“出生日期”需要用三个数据项才能够表示完整,而“日期”是一个独立的概念,也应该为之声明一个结构体类型。组织30名学生的信息。30名学生的基本信息属于同一个性质的数据,因此,应该利用一维数组将它们组织在一起。算法描述#include<stdio.h>#defineNUM30typedefstruct{/*日期结构*/intyear;intmonth;intday;}DATE;typedefstruct{/*学生信息结构*/intnum;charname[24];DATEbirthday;chardepartment[48];charmajor[32];}STUDENTINFO;voidinputInfo(STUDENTINFO[]);voidoutputInfo(STUDENTINFO[]);voidsearchInfo(STUDENTINFO[],DATE);main(){STUDENTINFOs[NUM];DATEdate;inputInfo(s);outputInfo(s);printf("\nEnteradate(month,day)");scanf("%d%d",&date.month,&date.day);searchInfo(s,date);}voidinputInfo(STUDENTINFOs[]){inti;printf("\nEnter%dstudent'sinfmation(name,birthday,department,major)\n",NUM);for(i=0;i<NUM;i++){s[i].num=i+1;scanf("%s",s[i].name);scanf("%d%d%d",&s[i].birthday.year,&s[i].birthday.month,&s[i].birthday.day);scanf("%s",s[i].department);scanf("%s",s[i].major);}}/*输出全部学生的信息*/voidoutputInfo(STUDENTINFOs[]){inti;printf("\nNumNameDirthdayDepartmentMajor\n");for(i=0;i<NUM;i++){printf("\n%4d%14s%4d/%2d/%2d%16s%16s",s[i].num,s[i].name,s[i].birthday.year,s[i].