枚舉類型的定義和應用總結
定義:
如果一種變量只有幾種可能的值,可以定義為枚舉類型。所謂“枚舉類型”是將變量的值一一列舉出來,變量的值只能在列舉出來的值的范圍內。
聲明:
聲明枚舉類型用enum開頭,例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
上面聲明了一個枚舉類型weekday,花括號中的sun,mon,。。。。sat等稱為枚舉元素或枚舉常量。
這些枚舉常量,不會因為我們寫了sun就自動代表著“星期天”,它只是一個符號,究竟用來代表什么含義,完全卻決于程序員自己對它們的處理。
表示這個類型的變量的值只能是以上7個值之一,他們是用戶自己定義的標識符。
在聲明了枚舉類型之后,就可以用它開定義變量。如
weekday workday,week_end;
這樣,workday和week_end被定義為枚舉類型weekday的變量。
說明:
(1)對枚舉元素按照常量處理,故稱為枚舉常量。它們不是變量,不能對他們賦值。
(2)枚舉元素作為常量,它們是有值的,C++編譯按定義時的順序對它們賦值為0,1,2,3,......
#include<iostream>
using namespace std;
int main(){
enum weekday{sun,mon,tue,wed,thu,fri,sat};
weekday one;
one=sun;
cout<<one;
cout<<endl;
}
我們也卡一在聲明枚舉類型時,另行指定枚舉元素的值,如
#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;
}
指定sun為7,mon為1,以后按順序加1,sat為6。
(3)枚舉值可以用來做比較。
枚舉值的比較規(guī)則是按其在聲明枚舉類型時的順序號比較。如果定義時未人為指定,則第一個枚舉元素的值認作0.
#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;
}
(4)一個整數不能直接賦給一個枚舉變量,應先進行強制類型轉換才能賦值。
#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;
}
以上的語句是將序號為2的枚舉元素賦給one。相當于
one=sun;
一個例子:
口袋中有紅、黃、藍、白、黑5種顏色的球若干。每次從口袋中任意取出3個球,問得到3中不同顏色的球的可能取法,輸出每種排列的情況。
分析:球的顏色只有5種,每一個球的顏色只能是這5種之一,因此可以用枚舉類型變量來處理。
/*******
設某一次取出的顏色為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++){//通過循環(huán),輸出該次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;
}
上一篇:C++中隊列的建立與操作詳細解析
欄 目:C語言
下一篇:C++二叉樹結構的建立與基本操作
本文標題:枚舉類型的定義和應用總結
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3958.html
您可能感興趣的文章
- 04-02c語言的正則匹配函數 c語言正則表達式函數庫
- 04-02c語言中對數函數的表達式 c語言中對數怎么表達
- 04-02C語言中怎么打出三角函數 c語言中怎么打出三角函數的值
- 01-10c語言求1+2+...+n的解決方法
- 01-10求子數組最大和的解決方法詳解
- 01-10深入理解約瑟夫環(huán)的數學優(yōu)化方法
- 01-10深入二叉樹兩個結點的最低共同父結點的詳解
- 01-10數據結構課程設計- 解析最少換車次數的問題詳解
- 01-10c語言 跳臺階問題的解決方法
- 01-10如何判斷一個數是否為2的冪次方?若是,并判斷出來是多少次方


閱讀排行
本欄相關
- 04-02c語言函數調用后清空內存 c語言調用
- 04-02func函數+在C語言 func函數在c語言中
- 04-02c語言的正則匹配函數 c語言正則表達
- 04-02c語言用函數寫分段 用c語言表示分段
- 04-02c語言中對數函數的表達式 c語言中對
- 04-02c語言編寫函數冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數 round c語言
- 04-02c語言分段函數怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數 c語言中怎
- 04-02c語言調用函數求fibo C語言調用函數求
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現頁面的局部加載
- 08-05dedecms(織夢)副欄目數量限制代碼修改