`

枚举的应用

    博客分类:
  • C
 
阅读更多

自学类容:枚举的应用

 

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。

运行结果:



 

  • 大小: 4.4 KB
  • 大小: 4.1 KB
  • 大小: 37.9 KB
  • 大小: 5.4 KB
分享到:
评论

相关推荐

    用Win32 API枚举应用程序窗口和进程.doc

    本文主要介绍了如何使用Win32 API来枚举应用程序的顶层窗口以及系统中的进程。 首先,枚举桌面顶层窗口通常通过`EnumWindows()`函数来实现。这个函数接收两个参数,一个是回调函数的指针,另一个是用户定义的LPARAM...

    c语言中的枚举应用

    这使得我们可以更灵活地控制每个枚举成员的值,这对于某些应用场景特别有用,比如当需要使用二进制位来表示多个状态时。 ### 枚举类型的应用示例 在给定的部分代码中,我们看到了一个使用枚举的例子: ```c ...

    Java高新技术_java5的枚举的基本应用

    Java高新技术——Java 5的枚举(Enum)基本应用 在Java编程语言中,枚举是一种特殊的类,用于定义一组预定义的常量。自从Java 5引入枚举类型以来,它已经成为处理固定集合常量的首选方式,因为它提供了比传统整数...

    enum枚举类的应用

    包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。

    解决问题的策略(枚举).ppt

    首先,用18根1米长的栅栏围成一个长方形花圃的问题是一个典型的枚举应用。我们可以通过列举所有可能的长和宽的组合来找出所有不同的围法。因为周长固定为18米,所以长加宽之和为9米。我们可以设置长为x,宽则为9-x,...

    枚举类型应用小Demo

    枚举类型(Enum)在Java编程语言中是一种强大的工具,特别是在Android应用开发中,它可以用于定义一组固定的常量集合,提供了类型安全和易于使用的特性。在这个"枚举类型应用小Demo"中,我们将探讨如何利用枚举来...

    枚举和泛型的应用举例

    枚举在多处有应用,例如在表示状态、方向、星期等场景。枚举的常量可以在程序中直接使用,避免了硬编码字符串,提高了代码的可维护性。 接下来,我们讨论泛型。泛型是Java SE 5.0引入的新特性,它允许在定义类、...

    枚举对象应用易语言模块源码

    自动化管理枚举接口,提供最简便的方法来枚举对象集合,枚举变体型数据.☆:_Exit (进行枚举的对象)。 当需要从枚举循环中退出时,请调用此函数,以释放枚举接口对象,避免句柄泄露.枚举完毕则不需要调用此函数,内部已经...

    第十讲枚举法(课后练习).pdf

    1. 长方形的周长问题是典型的枚举应用。题目要求长和宽都是整数,周长为22厘米。可以通过遍历所有可能的整数对(长,宽),计算面积并找出最大值。例如,长可以是从1到10的整数,宽则从1到11(因为当长为1时,宽最大...

    枚举的应用例题

    枚举在很多编程场景下都有广泛的应用,例如在处理有限状态机、定义颜色、星期等具有固定数量且不可变的值时。下面我们将深入探讨枚举的原理、使用方法以及相关的应用实例。 1. 枚举的基本概念: 枚举是一种特殊的类...

    java枚举类的属性、方法和构造方法应用实战

    Java 枚举类的属性、方法和构造方法应用实战 Java 枚举类是一种特殊的类,它拥有自己的属性、方法和构造方法。本文将详细介绍 Java 枚举类的属性、方法和构造方法应用实战,结合实例形式分析了 Java 枚举类的定义、...

    VC++ 实现枚举所有可见应用窗口,并支持发送消息进行关闭、最大化或者最小化

    在VC++编程环境中,开发人员经常需要处理与操作系统交互的任务,比如枚举系统中的所有可见应用窗口,并且能够对这些窗口执行操作,如关闭、最大化或最小化。这个任务涉及到了多个关键知识点,包括Windows API的使用...

    JAVA的枚举实例以及应用

    JAVA的枚举实例以及应用

    JAVA高级编程中Enum枚举

    在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,...通过学习提供的资源,开发者将能更好地掌握枚举在各种场景下的应用,并提升编程技能。

    C语言枚举的简单应用

    ### C语言枚举的简单应用 #### 概述 本文将详细介绍如何在C语言中使用枚举类型(`enum`)来解决一个具体问题:计算并列出从五种颜色(红、黄、蓝、白、黑)的球中取出三种不同颜色球的所有可能组合。 #### 枚举...

    易语言FSO应用源码,易语言枚举对象应用模块

    易语言枚举对象应用模块源码,枚举对象应用模块,Each,GetIndex,取对象枚举接口,枚举,重置,跳到,重新获取,Next,Skip,Reset,MultiByteToWideChar,动态调用子程序_API

    智能IC卡及智能密码钥匙密码应用接口数据格式规范

    应用管理指令涉及到创建应用(CreateApplication)、枚举应用(EnumApplication)、删除应用(DeleteApplication)、打开应用(OpenApplication)、关闭应用(CloseApplication)。文件管理指令则包括创建文件...

    esedatebaseview枚举器

    WEB应用修改器,枚举应用文件和关键词

    spring boot 枚举使用的坑整理

    在 Spring Boot 应用程序中,枚举类型经常被用于定义一些固定的值,例如订单状态、用户角色等。然而,在使用枚举类型时,需要注意一些坑,否则可能会出现一些问题。 坑一:枚举类型的索引不从 0 开始 在 Java 中,...

    Burpsuite Pro 1.6

    可感知应用程序的网络爬虫(Spider):它能完整的枚举应用程序的内容和功能;高级扫描器,执行后它能自动地发现web应用程序的安全漏洞; 入侵测试工具(Intruder):用于执行强大的定制攻击去发现及利用不同寻常的...

Global site tag (gtag.js) - Google Analytics