资源描述:
《补充资料结构与自定义类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第九章结构与其他自定义类型29.1结构类型的认识回顾:使用数组的好处是可以用一个变量定义逻辑上相关的一批数据,使每个分量具有相同的名字、不同的下标,但有一个限制,即一个数组变量包含的所有成分元素必须为同一类型,例如:inta[3]。3学号姓名性别高考分数生源010031张三女567北京010032李四女539深圳010033王五男460上海……………思考:如果要存储若干学生的信息(如下表)使用数组可以吗?4定义结构类型student:structstudent{longnum;/*学号*/charname[6];/*姓名*/charsex;/*性别*/intscore;
2、/*高考分数*/char*place;/*生源*/};59.2结构类型的定义形式:struct结构名{成员表列;};structdate{intyear,month,day;};【例】定义代表日期信息、药品信息的结构类型。structdate{intyear;intmonth;intday;};6structmedicine{char*code;char*name;floatprice;char*place;structdatevalidity;};codenamepriceplacevalidityyearmonthday结构类型medicine:79.3结构变量9.3
3、.1结构变量1.结构变量的定义structstudent{longnum;charname[6];charsex;intscore;charplace[12];};(1)先定义结构类型,再引用该类型定义的变量structstudentxia,ding,li;8(2)定义结构类型的同时说明变量structstudent{longnum;charname[6];charsex;intscore;charplace[12];}xia,ding,li;92.结构变量的引用结构变量通常都以成员的形式加以引用,结构变量成员的标记形式为:成员运算符【例】设有如下说明:structdat
4、e{intyear,month,day;};结构变量名.成员名10以下语句序列是对药品结构变量drug1、drug2进行赋值、输入和输出运算:structmedicine{char*code;char*name;floatprice;char*place;structdatevalidity;}drug1,drug2;11drug1.name=“penicillin”;drug1.price=6.38;drug2.name=“vitamineC”;if(drug2.code==“99103x”)drug2.price=drug2.price-7.5;scanf(“%d%d
5、%d”,&drug1.validity.year,&drug1.validity.month,&drug1.validity.day);puts(drug1.name);puts(drug2.name);123.结构变量的初始化【例】结构变量在定义时被赋初值。structmedicine{char*code;char*name;floatprice;char*place;structdatevalidity;};structmedicinedrug1,drug2={“01-56p”,“vitamineC”,22.65,“Shanghai”,{2002,12,31}};13
6、9.3.2结构数组1.结构数组的定义形式:结构类型数组名[常量表达式]structdate{intyear,month,day;};structmedicine{char*code;char*name;floatprice;char*place;structdatevalidity;};structmedicinedrug[10];142.结构数组的引用结构数组是以下标变量的成员名形式加以引用的。其标记形式为:for(i=0;i7、成员名【例】#defineN100structstudent{char*name;longnum;intscore;}p[N];对数组p[N]赋初值的语句如下:153.结构数组的初始化与结构变量一样,结构数组也允许定义时被初始化。【例】structstudent{char*name;longnum;intscore;}p[]={{“Zhangsan”,1001,536},{“Lisi”,1002,494},{“Wangwu”,1003,501}};16经过初始化以后,p数组的存储结构和内容如下图所示:Zhangsan10015