- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章共作体及其它数据类型
第11讲 共用体及其它数据类型; 11.1 共用体;1. 共用体类型定义;2. 定义共用体类型的变量 ;(2)定义类型时同时说明变量,例如:
union data
{ int i;
char ch;
float f;
}a,b,c;
(3)不定义类型名而直接定义变量,例如:
union
{ int i;
char ch;
float f;
}a,b,c;
;二. 共用体变量的引用方式;【例11-1】共用体变量引用。
#include stdio.h
void main()
{union{
char a;
int b;
long c;
}uu;
uu.a=’0x61’;
printf(”\n1:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c);
uu.b=0x7656;
printf(”\n2:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c);
uu.c=0
printf(”\n3:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c);
}
;三. 共用体变量的应用;分析:
(1)学生和教师都属于复杂数据,应该定义为结构体类型。
(2)如果将学生和教师分别存放在不同的表格(即结构体数组)中,可以定义两个不同类型的结构体数组。
(3)如果将学生和教师存放在同一表格(即结构体数组)中,可将“班级”和“职务”作为两个成员。但这样一来,对于学生,“职务”成员就闲置了,对于教师“班级”成员就闲置了,从而导致存储空间的浪费。最好的解决办法就是使“职务”和“班级”占据同一存储单元,对于教师,在该存储单元写入其“职务”,对于学生,在该存储单元写入“班级”。也就是说,定义一个共用体类型的变量。
;11.2 枚举类型; 显然,这种用数值代码来代表某一具体非数值数据的方法在程序设计中属于个别约定,虽可采用,但使用起来有诸多的不便:;一. 枚举类型的定义; 用户可根据需要在定义时直接指定某一枚举元素的编号,从而改变量系统默认的编号。例如:
enum week {sun=7,mon,tue=2,wed,thu,fri,sat};
则sun的序号为7,mon的序号为8, tue的序号为2, wed的序号为3, thu的序号为4,fri的序号为5,sat的序号为6。
;二. 枚举类型的应用 ;2.枚举变量的输入/输出 ;【例11-3】利用枚举类型表示一周中的每一天,要求输入今天是星期几,判断今天是是工作日还是休息日,并输出今天起直到星期五的工作安排。 ;#include stdio.h
void main()
{ enum days{sun,mon,tue,wed,thu,fri,sat}
today,weekday;
int day;
printf(”enter today(0~6):”);
scanf(”%d”,day);
switch(day) /*间接输入今天是星期几*/
{ case 0:today=sun;break;
case 1:today=mon;break;
case 2:today=tue;break;
case 3:today=wed;break;
case 4:today=thu;break;
case 5:today=fri;break;
case 6:today=sat;break;
}; if(today==sun ||today==sat)
{ printf(” today is rest\n”);return;}
else printf(”today is workday\n”);
for(weekday=today;weekday=fri;weekday++)
/*间接输出工作安排表*/
switch(weekday)
{case mon:printf(”mon-study computer\n”);break;
case tue:printf(”tue-study math\n ”);break;
case wed:printf(”tue-study english\n ”);break;
case thu:printf(”thu-study music\n ”);break;
case fri:printf(”fri-study chemistry\n ”);break;
}
} ;11.3 用typedef定义类型;在程序中,用户可
文档评论(0)