"); //-->
知识点:转自sdcn论坛,具体出处忘记了,感谢原来总结的这个兄弟。
枚举常量是枚举类型中的值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。枚举类型的定义格式为:
enum <枚举类型名> {<枚举表>};
它是一条枚举类型定义语句,该语句以enum保留字开始,接着为枚举类型名,它是用户命名的一个标识符,以后就直接使用它表示该类型,枚举类型名后为该类型的定义体,它是由一对花括号和其中的枚举表所组成,枚举表为一组用逗号分开的由用户命名的符号常量,每个符号常量又称为枚举常量或枚举值。如:
(1) enum color{red, yellow, blue};
(2) enum day{Sun, Mon, Tues, Wed, Thur, Fri, Sat};
第一条语句定义了一个枚举类型color,用来表示颜色,它包含三个枚举值red,yellow和blue,分别代表红色、黄色和兰色。
第二条语句定义了一个枚举类型day,用来表示日期,它包含7个枚举值,分别表示星期日、星期一至星期六。
一种枚举类型被定义后,可以象整型等预定义类型一样使用在允许出现数据类型的任何地方。如可以利用它定义变量。
(1) enum color c1, c2,c3;
(2) enum day today, workday;
(3) c1=red;
(4) workday="Wed";
第一条语句开始的保留字enum和类型标识符colou表示上述定义的枚举类型color,其中enum可以省略不写,后面的三个标识符c1,c2和c3表示该类型的三个变量,每一个变量用来表示该枚举表中列出的任一个值。
第二条语句开始的两个成分(成分之间的空格除外)表示上述定义的枚举类型day,同样enum可以省略不写,后面的两个标识符today和workday表示该类型的两个变量,每一个变量用来表示该枚举表中列出的七个值中的任一个值。
第三条语句把枚举值red赋给变量c1,第四条语句把枚举值Wed赋给变量workday。
在一个枚举类型的枚举表中列出的每一个枚举常量都对应着一个整数值,该整数值可以由系统自动确认,也可以由用户指定。若用户在枚举表中一个枚举常量后加上赋值号和一个整型常量,则就表示枚举常量被赋予了这个整型常量的值。如:
enum day{Sun=7, Mon="0", Tues, Wed, Thur, Fri, Sat};
用户指定了Sun的值为7,Mon的值为0。
若用户没有给一个枚举常量赋初值,则系统给它赋予的值是它前一项枚举常量的值加1,若它本身就是首项,则被自动赋予整数0。如对于上述定义的color类型,red,yellow和blue的值分别为0,1和2;对于刚被修改定义的day类型,各枚举常量的值依次为7,0,1,2,3,4,5,6。
由于各枚举常量的值是一个整数,所以可把它同一般整数一样看待,参与整数的各种运算。又由于它本身是一个符号常量,所以当作为输出数据项时,输出的是它的整数值,而不是它的标识符,这一点同输出其他类型的符号常量是一致的。
题目:口袋中有红、黄、蓝、白、黑五种弱干个,每次从口袋中取出三个不同的球,问有多少总不同的方法.
这个题目中,原来的解法采用的是5*4*3的算法,但是这个算法是错的,应该是采用组合类型的,那个老师疏忽掉了,所以稍微改进后的程序如下
#include <iostream.h>
void main()
{
enum color{red,yellow,blue,white,black};
enum color p;
int sum="0",channel,i,j,k;
for (i=red;i<=black;i++)
for(j=i+1;j<=black;j++)
if(i!=j)
{for(k=j+1;k<=black;k++)
if((i!=k)&&(j!=k))
{ sum++;
cout<<sum;
for(channel=0;channel<=2;channel++)
{ switch(channel)
{ case 0: p=(enum color)i;break;//强制转换回到enum color 类型
case 1: p=(enum color)j;break;
case 2: p=(enum color)k;break;
default: break;
}
switch(p)
{case red: cout<<" red"; break;
case yellow: cout<<" yellow"; break;
case blue: cout<<" blue"; break;
case white: cout<<" white"; break;
case black: cout<<" black"; break;
default:break;
}
}
cout<<endl;
}
}
cout<<"****************************************";
cout<<endl;
cout<<endl;
cout<<"The final group is up to"<<sum;
cout<<endl;
cout<<endl;
cout<<"****************************************";
cout<<endl;
}
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
大嘴业话:Intel 部门调整 揭开“英阿大战”序幕
P87LPC764 单片机的低功耗设计之二
米尔闪耀德国纽伦堡Embedded World 2025,展现嵌入式技术无限可能
过压或欠压动作电路
Microchip PIC24F Android 附件开发平台
OPPO Find X8S或将搭载联发科最强芯片
Vicor更高密度 - 电源在更小的空间容纳更多功能
外企工作护身秘笈
ST×米尔STM32MP25x高阶实战培训会
浮地非隔离半桥栅极驱动器
英飞凌在Embedded World 2025上展示支持高品质设计的创新MCU解决方案
将 DC/DC 转换器改造为高性能的全功能电池充电器
AI浪潮下,群晖如何为芯片产业筑牢数据保险库
P87LPC764 单片机的低功耗设计之一
ST推出简单灵活高效的1A降压转换器,为智能电表、家电和工业电源转换器提供低压电源
如何进行职业生涯规划
被数学老师解出的英语试题
OPmobility部署西门子Xcelerator产品生命周期管理软件
P87C591单片机编程时序
一款空调主板电路
P87LPC764单片机功能演示板使用说明
P87LPC768 利用空载时间发生器驱动半全桥的脉宽调PW
两相电机驱动器电路
伺服电机系统电路
瑞萨交流日进行中,米尔演讲-RZ/T2H高性能模组赋能工业产品创新
DELO发布了一款不含IBOA(丙烯酸异冰片酯)的医用级粘合剂
与人相处的基本技巧
永磁式换向器电机的工作原理及电路
输出电压调节
职业生涯自我规划五步法