枚举类型示例
程序代码:
//枚举类型示例 /*例7.8 口袋中有红、黄、蓝、白、黑 5 种颜色的球若干个。每次从口袋中任意取出 3 个球,问得到 3 种不同 颜色的球的可能取法,输出每种排列的情况。*/ #include <iostream> #include <iomanip> //输出时用到 setw 控制符 using namespace std; int main( ) { enum color { red,yellow,blue,white,black}; //声明枚举类型 color color pri; //定义 color 类型的变量 pri int i,j,k,n = 0,loop; //n 是累计不同颜色的组合数 for( i = red;i <= black;i++) //当 i 为某一颜色时 for( j = red; j <= black;j++) //当 j 为某一颜色时 if( i!=j) //若两个球的颜色不同 { for( k = red;k <= black;k++) //只有两个球的颜色不同,才需要检查第三个球 if(( k != i) && ( k != j)) //三个球的颜色都不同 { n = n + 1; //使累计值 n 加 1 cout << setw(3) << n; //输出当前的 n 值 for( loop = 1;loop <= 3;loop++) //先后对三个球作处理 { switch( loop) // loop 的值先后为 1,2,3 { case 1: pri = color(i); break; // color(i) 是强制类型转换,使 pri 的值为 i case 2: pri = color(j); break; //使 pri 的值为 j case 3: pri = color(k); break; //使 pri 的值为 k default: break; } switch ( pri) //判断 pri 的值,输出相应的“颜色” { case red: cout << setw(8) << "red"; break; case yellow: cout << setw(8) << "yellow"; break; case blue: cout << setw(8) << "blue"; break; case white: cout << setw(8) << "white"; break; case black: cout << setw(8) << "black"; break; default: break; } } cout << endl; } } cout << "total:" << n << endl; system("pause"); return 0; }