源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

枚举类型的定义和应用总结

  • 时间:2021-10-17 10:50 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:枚举类型的定义和应用总结
[b]定义: [/b]如果一种变量只有几种可能的值,可以定义为枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 [b]声明: [/b]声明枚举类型用enum开头,例如:
[u]复制代码[/u] 代码如下:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
上面声明了一个枚举类型weekday,花括号中的sun,mon,。。。。sat等称为枚举元素或枚举常量。 这些枚举常量,不会因为我们写了sun就自动代表着“星期天”,它只是一个符号,究竟用来代表什么含义,完全却决于程序员自己对它们的处理。 表示这个类型的变量的值只能是以上7个值之一,他们是用户自己定义的标识符。 在声明了枚举类型之后,就可以用它开定义变量。如
[u]复制代码[/u] 代码如下:
weekday workday,week_end;
这样,workday和week_end被定义为枚举类型weekday的变量。 [b]说明: [/b](1)对枚举元素按照常量处理,故称为枚举常量。它们不是变量,不能对他们赋值。 (2)枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,......
[u]复制代码[/u] 代码如下:
#include<iostream> using namespace std; int main(){  enum weekday{sun,mon,tue,wed,thu,fri,sat};  weekday one;  one=sun;  cout<<one;  cout<<endl; }
[img]http://files.jb51.net/file_images/article/201310/201310160906302.jpg[/img] 我们也卡一在声明枚举类型时,另行指定枚举元素的值,如
[u]复制代码[/u] 代码如下:
#include<iostream> using namespace std; int main(){  enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};  weekday one,two;  one=sun;  two=wed;  cout<<one<<endl;  cout<<two<<endl;  cout<<endl; }
[img]http://files.jb51.net/file_images/article/201310/201310160906303.jpg[/img] 指定sun为7,mon为1,以后按顺序加1,sat为6。 (3)枚举值可以用来做比较。 枚举值的比较规则是按其在声明枚举类型时的顺序号比较。如果定义时未人为指定,则第一个枚举元素的值认作0.
[u]复制代码[/u] 代码如下:
#include<iostream> using namespace std; int main(){  enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};  weekday one,two;  one=sun;  two=wed;         cout<<(sun>wed?sun:wed);  cout<<endl; }
[img]http://files.jb51.net/file_images/article/201310/201310160906304.jpg[/img] (4)一个整数不能直接赋给一个枚举变量,应先进行强制类型转换才能赋值。
[u]复制代码[/u] 代码如下:
#include<iostream> using namespace std; int main(){  enum weekday{sun,mon,tue,wed,thu,fri,sat};  weekday one;  one=weekday(7);  cout<<one;  cout<<endl; }
[img]http://files.jb51.net/file_images/article/201310/201310160906302.jpg[/img] 以上的语句是将序号为2的枚举元素赋给one。相当于
[u]复制代码[/u] 代码如下:
 one=sun;
[b]一个例子: [/b]口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中任意取出3个球,问得到3中不同颜色的球的可能取法,输出每种排列的情况。 分析:球的颜色只有5种,每一个球的颜色只能是这5种之一,因此可以用枚举类型变量来处理。
[u]复制代码[/u] 代码如下:
/******* 设某一次取出的颜色为i,j,k。显然,i,j,k都是以上5中颜色之一,根据题意, 要求i,j,k三者互不相同。可以用穷举法,对每一种可能分别进行测试,看那一组符合条件 *****/ #include<iostream> using namespace std; int main(){    enum color{red,yellow,blue,white,black};    color pri;    int i,j,k,n=0,loop;    for(i=red;i<=black;i++){     for(j=red;j<=black;j++)      if(i!=j){       for(k=red;k<=black;k++){        if(k!=i&&k!=j){         n++;//使n累加,统计可能的抽取情况         cout<<n<<"\t";         for(loop=0;loop<3;loop++){//通过循环,输出该次i,j,k所对应的颜色          switch(loop){           case 0:pri=color(i);break;           case 1:pri=color(j);break;           case 2:pri=color(k);break;          }          switch(pri){           case red:   cout<<"red\t";break;           case yellow:cout<<"yellow\t";break;           case blue:  cout<<"blue\t";break;           case white: cout<<"white\t";break;           case black: cout<<"black\t";break;          }         }         cout<<endl;        }       }     }    }    cout<<"total:"<<n<<endl; }
[img]http://files.jb51.net/file_images/article/201310/201310160906305.jpg[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部