C++ enum枚舉類型的用法


C++: enum枚舉類型的用法


 


課題目標


 

了解enum枚舉類型的基本形式,掌握enum枚舉類型的使用方法。

課題引入


 

從一個對一周(包含周一到周日)的每天進行聲明與賦值,來引出enum使用的便捷性,引出enum。

課題詳解


 

 

一,枚舉類型的說明

枚舉數據類型是一種由程序員定義的數據類型,其合法值是與它們關聯的一組命名整數常量。

之所以被稱為枚舉類型,就是因為命名常量是作為數據類型定義的一部分而枚舉或列出的

以下是枚舉類型聲明的示例:

1 enum <類型名> {<枚舉常量表>};

 關鍵字enum:說明接下來定義的是一個枚舉類型。

 類型名字:指明此處定義的枚舉類型的名字。 

 常量表: 由枚舉常量(或稱枚舉成員)構成。枚舉常量表列出枚舉類型所有可能的取值,各枚舉常量之間用“,”間隔,且各枚舉常量必須不同。
 
例如(解引題):
1 enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定義枚舉類型weekday

枚舉常量只能以標識符形式表示,而不能是整型、字符型等文字常量。

例如,以下定義非法

1 enum book{'a','b','c','d'};//枚舉類型不能是字符常量
2 
3 enum year{1998,1999,2010,2012};//枚舉常量不能是整形常量

二,枚舉類型的賦值

1.枚舉類型在聲明之后具有默認值。默認從0開始,依次為0,1,2,3......

例如(解引題):

1 enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定義枚舉類型weekday
2 //SUN=0,MON=1,依次為0,1,2,3.....

2.同時也可以在聲明中直接賦值。它們必須是整數。枚舉變量相當於整型變量的一個子集

例如(解引題):

1 enum Weekday{SUN=7,MON=2,TUE,WED,THU,FRI,SAT};
2 //定義SUN=7,MON=2,則后面的值在前面值的基礎上依次加1,即TUE=3,WED=4......
1 enum weekday{SUN=1.1,MON=1.2,......};//枚舉變量賦值只能是整數,相當於整型變量的一個子集,此語句非法

 

3.對枚舉元素按常量處理,但不能對它們直接賦予常量值。

例如(解引題):

1 enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定義枚舉類型weekday
2 SUN=0;//SUN是枚舉元素,不能賦值,此語句非法

若將整數值賦給枚舉變量需要進行強制類型轉換:值前面加(類型名)

例如(解引題):

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定義枚舉類型weekday
SUN=(Weekday)7;//在值前面加(類型)是常用的強制類型轉換方法

 

三,枚舉類型的運用

例題:口袋中有紅黃藍白黑5種顏色的球若干個。每次從口袋中任意取出三個球,問得到3中不通過顏色的球的可能取法。

解題思路:球只有五種顏色,可用枚舉類型表示球的顏色。可以利用三重循環窮舉出每一種可能取法。

 1 #include<iostream>
 2   
 3 using namespace std;
 4  
 5 void main()
 6 {
 7     enum colors{red,yellow,blue,white,black};
 8  
 9     colors color;  
10  
11     int i,j,k,n=0,loop;//n累計組合數
12  
13     for(i=red;i<=black;i++)//當i為某一顏色時
14     {
15         for(j=red;j<=black;j++)//當j為某一顏色時
16         {
17             if(i!=j)//若前兩個球的顏色不同
18             {
19                 for(k=red;k<=black;k++)//只有前兩個球的顏色不同,才需要檢查第3個球的顏色
20                 {
21                     if(k!=i&&k!=j)//三個球的顏色都不同
22                     {
23                         n=n+1;
24  
25                         cout<<"   "<<n;//輸出當前的n值作為組合的編號
26  
27                         for(loop=1;loop<=3;loop++)//先后對三個球做處理
28                         { 
29                             switch(loop)
30                             {
31                             case 1:color=colors(i);break;//colors(i)是強制類型轉換,使color的值為i
32  
33                             case 2:color=colors(j);break;//                                   j
34  
35                             case 3:color=colors(k);break;//                                   k
36  
37                             default :break;
38                             }
39  
40                             switch(color)   //判斷color的值,輸出相應的顏色
41                             {
42                             case red:cout<<"   "<<"red";break;
43  
44                             case yellow:cout<<"   "<<"yellow";break; 
45 
46                             case blue:cout<<"   "<<"blue";break; 
47                        
48                             case white:cout<<"   "<<"white";break;
49  
50                             case black:cout<<"    "<<"black";break;         
51 
52                            default :break; 
53                             } 
54                          }
55                          cout<<endl; 
56                       } 
57                    }
58              }
59          }
60      }
61 cout<<"共有"<<n<<"個組合"<<endl;  //輸出組合的個數 
62 }

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM