自学类容:枚举的应用
2016.09.17
为了装装逼,正值中秋放假之际,书带着哥来到了图书馆,看数据结构时,发现用的是C语言版,可是哥学C已经过去三年了,哥全忘了啊。
于是去外面买了一本谭老师的C程序设计。以题入手来看,就看了一下使用枚举类型。
所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举用enum开头。例如:
enum Weekday{sun,mon,tue,wed,thu,fri,sat};
一般形式为枚举名应遵循标识符的命名规则。
enum [枚举名] {枚举元素列表};
其中
例:
口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。
解题思路:球只能是5种颜色之一,而且要判断各球是否同色,可以用枚举类型变量处理。
设某次取出的3个球的颜色分别为i,j,k。根据题意,i,j,k分别是5种色球之一,并要求3球颜色各不相同,即:i!=j,i!=k,j!=k。可以用穷举法,即把每一种组合都试一下,看哪种符合条件,就输出i,j,k。
算法如下图1所示。
为了输出3个球的颜色,显然应经过三次循环,第一次输出i的颜色,第二次输出jd1颜色,第三次输出k的颜色。在三次循环中先后将i,j,k赋值给pri。然后根据pri的值输出颜色信息。
如图2
#include<stdio.h> int main(){ enum Color {red,yellow,blue,white,black};//声明枚举类型enum Color enum Color pri; //定义枚举变量i,j,k,pri int i,j,k,n,loop; n=0; for(i=red;i<=black;i++) //外循环使i的值从red变到black for(j=red;j<=black;j++) //中循环使j的值从red变到black if(Color(i)!=Color(j)) { for(k=red;k<=black;k++) if((Color(k)!=Color(i))&&(Color(k)!=Color(j))) { n=n+1; printf("%-4d",n);//输出当前是第几个符合条件的组合 for(loop=1;loop<=3;loop++){ switch(loop){ case 1:pri=Color(i);break; case 2:pri=Color(j);break; case 3:pri=Color(k);break; default:break; } switch(pri){ //根据球的颜色输出响应的文字 case red:printf("%-10s","red");break; case yellow:printf("%-10s","yellow");break; case blue:printf("%-10s","blue");break; case white:printf("%-10s","white");break; case black:printf("%-10s","black");break; default: break; } } printf("\n"); } } printf("\ntotal:%5d\n",n); return 0; }
值得注意的是:enum类型是不能执行i++,j++,k++的,所以先定义int i,j,k, 用 color强制转化成enum类型 (color)i, (color)j,(color)k。
运行结果:
相关推荐
用Win32 API枚举应用程序窗口和进程.doc 用Win32 API枚举应用程序窗口和进程.doc 用Win32 API枚举应用程序窗口和进程.doc 用Win32 API枚举应用程序窗口和进程.doc 用Win32 API枚举应用程序窗口和进程.doc
使用c语言中的枚举的小例子,使用用了一个main函数。
Java高新技术_java5的枚举的基本应用
包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。
自动化管理枚举接口,提供最简便的方法来枚举对象集合,枚举变体型数据.☆:_Exit (进行枚举的对象)。 当需要从枚举循环中退出时,请调用此函数,以释放枚举接口对象,避免句柄泄露.枚举完毕则不需要调用此函数,内部已经...
枚举的应用例题枚举的应用例题
枚举在android应用开发中的小列子,知识点有应用到手势的绘制监听函数
JAVA的枚举实例以及应用
1.VC++ 实现枚举所有可见应用窗口,并支持发送消息进行关闭、最大化或者最小化 2.支持跨进程发消息 3.源码
收藏了枚举和泛型的一些具体的应用实例,希望能给大家更多的帮助!
易语言枚举对象应用模块源码,枚举对象应用模块,Each,GetIndex,取对象枚举接口,枚举,重置,跳到,重新获取,Next,Skip,Reset,MultiByteToWideChar,动态调用子程序_API
WEB应用修改器,枚举应用文件和关键词
可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...
在这里和大家分享一个使用枚举法编写的C语言程序。
Spider——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。 Scanner[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。 Intruder——是一个定制的高度可配置...
可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...
可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...
Java枚举的应用, 具体代码
可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...
可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...