目录
说明
枚举是一种基本的数据类型,为了使数据更加的简洁易读
#define MON 0
#define TUE 1
#define WED 2
#define THU 3
#define FRI 4
#define SAT 5
#define SUN 6
enum DAY { mon, tue, wed, thu, fri, sat, sun };
对比上下两个代码,很显然枚举类型更加简洁 清晰。
枚举类型--enum
[枚举类型应用说明]
- 对枚举元素按常量处理,不能对它们赋值。例如,不能写: sum=0;
- 枚举元素具有默认值,它们依次为:0,1,2,...,也可以在声明时另行指定枚举元素的值,如: enum weekday { sun , mon , tue , wed , thu = 8 , fri , sat };(则对应元素的值分别为:0,1,2,3,8,9,10.)
- 枚举值可以进行关系运算;
- 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。
具体举例如下:(遍历枚举类型的值)
#include<iostream>
using namespace std;//枚举类型
enum DAY { mon, tue, wed, thu, fri, sat, sun };
int main()
{
int day;
for (day = mon; day <= sun; day++)
cout << "枚举类型:" << day<<" ";//注意加空格的写法
return 0;
}
输出结果如下图:
另:声明枚举变量时可以不写关键字enum,也可以在类型名前写enum;
enum DAY { mon, tue, wed, thu, fri, sat, sun };
int main()
{
DAY day;
enum DAY days;//两种均可
}
题目(易)
【1】
设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。
【分析】比赛结果只有四种可能,可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果,较容易表达。
#include<iostream>
using namespace std;
enum game_result{win,lost,tie,cancel};//声明枚举类型
int main()
{
game_result result;//定义一个枚举变量用来存放比赛结果
int count;
for (count = win; count <= cancel; count++)
{
result = (game_result)count;//强制类型转换:枚举类型可赋值给int,但int不能赋值给枚举类型
if (result == cancel)
cout << "the game was cancelled";
else
{
cout << "the game was played";
if (result == win)
cout << " and we won!";
else
if (result == lost)
cout << " we were lost";
else
cout << " the result was tie";
cout << "\n"; //cout<<endl;
}
}
return 0;
}
结果如下:
【2】
口袋中有红、黄、蓝、白、黑5种颜色的球若干,每次从口袋中取出3个不同颜色的球,问有多少种取法
【分析】
对于定义红黄蓝白黑五种颜色的球来说,枚举类型再合适不过了。
由于口袋中的球有五种颜色,若干个球,若想取出不同颜色的球,在数学问题中显而易见的排列组合问题——全排列,是有顺序的。只需要判断取出来的球颜色是否相同即可。
#include<iostream>
using namespace std;
enum colour{red,yellow,blue,white,black};
int main()
{
int i, j, k;
int n = 0;
for (i = red; i <= black; i++)
{
for (j = red; j <= black; j++)
{
if (i != j)
{
for (k = red; k <= black; k++)
{
if (k != j && k != i)
n++;
}
}
}
}
cout << "total" << n;
return 0;
}