注册 登录
编程论坛 C++教室

枚举类型示例

hmsabc 发布于 2010-08-17 13:28, 492 次点击
程序代码:
//枚举类型示例
/*
例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;
}
0 回复
1