C语言程序设计其他数据类型.pptx
《C语言程序设计其他数据类型.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计其他数据类型.pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2定义枚举变量 enum 类型名 变量名1,变量名2,;enum color select,change,*cp;对枚举变量的定义还可采用缺省类型名的形式。enum pen,pencil,book,notebook learning;也可定义一个枚举类型的数组,例如:enum month January,February,March,April,May,June,July,Augest,September,October,November,December;enum month months12;第1页/共38页3枚举变量的取值 枚举变量的取值范围限定在对应的枚举符表中的元素。例如,selec
2、t和change只能被赋值为color中的五种颜色名的某一种:selectred;changeyellow;第2页/共38页C编译对枚举元素实际上是作为整常量处理的,所以枚举元素又称为枚举常量。当遇到枚举符表时,编译程序就把其中第一个元素赋值为0,以后依次把1,2,3赋值给第二个元素、第三个元素、第四个元素。selectred中,select被赋值0,并非将字符串“red”赋给select。应注意,枚举元素不是变量,不能对它们赋值,也不能用“&”运算符取其地址。第3页/共38页 可以把某个枚举元素规定为指定的整常数。enum color red,green,blue5,yellow,white
3、;编译程序对blue之前的枚举元素照常从0开始、递增赋予整常数,并对blue赋予指定值5,而blue之后的各枚举元素则在此基础上递增赋值。当变量取值范围限制在规定的整常数范围内的情况下,就可采用枚举类型。枚举变量的作用域与一般变量的作用域相同。第4页/共38页例9-2:这是一个儿童游戏程序。孩子们用不同的手势表示三种不同的对象,如伸开手掌象征“布”(cloth,用字符c表示),握成拳头象征“锤子”(hammer,用字符h表示),只伸出食指和中指象征“剪刀”(scissors,用字符s表示)。其胜负规则是“布包锤子,锤子砸剪刀,剪刀剪布”。如手势相同则不分胜负。第5页/共38页#include#
4、include enum games cloth,hammer,scissors,game,quit;enum games select();enum games mach();int won(enum games player,enum games machine);void result(int win,int lose,int tie);第6页/共38页void main()enum games player,machine;int win,lose,tie;winlosetie0;printf(nsnsnsnsns,c is for cloth,h is for hammer,s is
5、 for scissors,g is for result,another character is for quit);第7页/共38页 while(playerselect()!quit)switch(player)case cloth:case hammer:case scissors:machinemach();if(playermachine)tie;printf(na tie);第8页/共38页 else if(won(player,machine)win;printf(nyou won);else lose;printf(nI won);break;case game:resul
6、t(win,lose,tie);break;第9页/共38页 result(win,lose,tie);printf(nBYE!n);enum games select()char c;enum games player;printf(nInput a character:);while(cgetchar()|cn|ct);第10页/共38页switch(c)case c:playercloth;break;case h:playerhammer;break;case s:playerscissors;break;case g:playergame;break;default:playerqu
7、it;break;return(player);第11页/共38页enum games mach()static int i0;irand()3;return(i0)?cloth:(i1)?hammer:scissors);第12页/共38页int won(enum games player,enum games machine)int victory;if(playercloth)victorymachinehammer;else if(playerhammer)victorymachinescissors;else victorymachinecloth;return(victory);第
8、13页/共38页void result(int win,int lose,int tie)printf(nGAME STATUS);printf(n7dsn7dsn7dsn7ds,win,games won by you,lose,games won by me,tie,games tied,winlosetie,games played);第14页/共38页9.2 位 段9.2.1 字位标志法有些对象的特征不必用一个字节或多个字节来表示,只用一个或几个二进制位即可。#define ERROR 0100000 (八进制,下同)#define CTLRDY 0200#define IENABLE
9、 0100#define READ 04#define WRITE 02#define RESET 01第15页/共38页利用第3章介绍过的位运算符(如、&、|、等)可置上或清除相应的标志,进而判断磁盘机当前的工作状态。flags|CTLRDY|IENABLE;第16页/共38页9.2.2 位段的定义及其引用位段是结构或联合中的成员,它们所占存储空间的大小是以二进制位为单位(故称位段)、并且在定义时所占位数被明确指定。例如:struct status unsigned err:2;unsigned ready:1;unsigned ienable:1;int flag:4;第17页/共38页位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 其他 数据类型
限制150内