·题目来源——郑莉老师C++第五版课后习题
枚举型——基本概念:
在计算机程序处理种,会遇到不能很方便地描述标识符的问题,如五种不同颜色的球,这种标识符有限的问题,用枚举型可以非常方便地帮助我们描述问题。
1、定义:
enum 类型名 {枚举值表};
下文定义了一个color类,存有五种颜色红、黄、蓝、白、黑的枚举值表。
enum color {Red,Yellow,Blue,White,Black};
2、枚举值表元素的值
若像上文那般定义,将会为每个枚举元素分配一个整型值,默认从0开始,逐个加1。
也就是说:Red=0,Yellow=1,Blue=2,White=3,Black=4。
当然也可以手动给它们赋值,在定义枚举值表时对它们进行初始化。若有表内有未进行初始化的值,在上一枚举值的基础上自动加1.
(一但定义完成不可进行修改,因为枚举值表中的数据为常量。)
3、转换:
枚举值可以隐式地转换为int型,反之不可。
练习题目:
口袋中有红、黄、蓝、白、黑5种颜色地球若干。每次从口袋中取出3个不同颜色地球,问有多少种取法?
解答如下(仅为个人见解,实际不用给出排列组合地实际情况):
#include <iostream>
using namespace std;
int COLOR(int x);
int main()
{
enum color {Red,Yellow,Blue,White,Black};
int i, j, k;
int flag = 0;
for (i = Red; i <= Black; i++)
for (j = Red; j <= i; j++)
for (k = Red; k <= j; k++)
if (i != j && j != k && i != k) {
flag++;
COLOR(i);
COLOR(j);
COLOR(k);
cout << endl;
}
cout << "共有" << flag << "种不同的解法." << endl;
return 0;
}
int COLOR(int x) {
switch(x){
case 0:cout << "Red "; break;
case 1:cout << "Yellow "; break;
case 2:cout << "Blue "; break;
case 3:cout << "White "; break;
case 4:cout << "Black "; break;
}
return 0;
}