久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
枚舉類型
[打印本頁]
作者:
51hei單片
時間:
2016-3-13 16:46
標(biāo)題:
枚舉類型
在程序設(shè)計中,有時會用到由若干個有限數(shù)據(jù)元素組成的集合,如一周內(nèi)的星期一到星期日七個數(shù)據(jù)元素組成的集合,由三種顏色紅、黃、綠組成的集合,一個工作班組內(nèi)十個職工組成的集合等等,程序中某個變量取值僅限于集合中的元素。此時,可將這些數(shù)據(jù)集合定義為枚舉類型。因此,枚舉類型是某類數(shù)據(jù)可能取值的集合,如一周內(nèi)星期可能取值的集合為:
{ Sun,Mon,Tue,Wed,Thu,Fri,Sat}
該集合可定義為描述星期的枚舉類型,該枚舉類型共有七個元素,因而用枚舉類型定義的枚舉變量只能取集合中的某一元素值。由于枚舉類型是導(dǎo)出數(shù)據(jù)類型,因此,必須先定義枚舉類型,然后再用枚舉類型定義枚舉型變量。
enum <枚舉類型名>
{ <枚舉元素表> };
其中:關(guān)鍵詞enum表示定義的是枚舉類型,枚舉類型名由標(biāo)識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。例如:
enum weekdays
{ Sun,Mon,Tue,Wed,Thu,Fri,Sat };
定義了一個名為 weekdays的枚舉類型,它包含七個元素:Sun、Mon、Tue、Wed、Thu、Fri、Sat。在編譯器編譯程序時,給枚舉類型中的每一個元素指定一個整型常量值(也稱為序號值)。若枚舉類型定義中沒有指定元素的整型常量值,則整型常量值從0開始依次遞增,因此,weekdays枚舉類型的七個元素Sun、Mon、Tue、Wed、Thu、Fri、Sat對應(yīng)的整型常量值分別為0、1、2、3、4、5、6。
注意:在定義枚舉類型時,也可指定元素對應(yīng)的整型常量值。例如,描述邏輯值集合{TRUE、FALSE}的枚舉類型boolean可定義如下:
enum boolean
{ TRUE=1 ,FALSE=0 };
該定義規(guī)定:TRUE的值為1,而FALSE的值為0。
而描述顏色集合{red,blue,green,black,white,yellow}的枚舉類型colors可定義如下:
enum colors
{red=5,blue=1,green,black,white,yellow};
該定義規(guī)定red為5 ,blue為1,其后元素值從2 開始遞增加1。green、black、white、yellow的值依次為2、3、4、5。此時,整數(shù)5將用于表示二種顏色red與yellow。通常兩個不同元素取相同的整數(shù)值是沒有意義的。
枚舉類型的定義只是定義了一個新的數(shù)據(jù)類型,只有用枚舉類型定義枚舉變量才能使用這種數(shù)據(jù)類型。
8.1.2枚舉類型變量的定義
定義枚舉類型變量有三種方法,即:先定義類型后定義變量,定義類型的同時定義變量,直接定義變量,現(xiàn)介紹如下:
1.先定義類型后定義變量
格式: <枚舉類型名> <變量1>〔,<變量2>,…,<變量n>〕;
例如:enum colors
{red=5,blue=1,green,black,white,yellow};
colors c1,c2;
c1、c2 為colors類型的枚舉變量。
2.定義類型的同時定義變量
格式:enum <枚舉類型名>
{ <枚舉元素表> } <變量1>〔,<變量2>,…,<變量n>〕;
例如:enum colors
{red=5,blue=1,green,black,white,yellow}c1,c2;
3.直接定義枚舉變量
格式:enum
{ <枚舉元素表> } <變量1>〔,<變量2>,…,<變量n>〕;
例如:enum
{red=5,blue=1,green,black,white,yellow} c1=red,c2=blue;
由上例可以看出,定義枚舉變量時,可對變量進(jìn)行初始化賦值,c1的初始值為red,c2的初始值為blue。
8.1.3 枚舉類型變量的引用
對枚舉類型變量只能使用2類運(yùn)算:賦值運(yùn)算與關(guān)系運(yùn)算。
1.賦值運(yùn)算
C++中規(guī)定,枚舉類型的元素可直接賦給枚舉變量,且同類型枚舉變量之間可以相互賦值。如:enum weekdays //定義星期日到星期六為枚舉類型weekdays
{ Sun,Mon,Tue,Wed,Thu,Fri,Sat };
void main ( void )
{ weekdays day1,day2; //定義兩個枚舉型變量day1、day2
day1=Sun; //將元素Sun賦給枚舉變量day1
day2=day1; //枚舉變量day1賦給day2
cout<<day1<<endl; //輸出day1的值,即Sun的序號0
}
該例定義了兩個類型為weekdays的枚舉類型變量day1與day2,這兩個枚舉型變量只能取集合 { Sun,Mon,Tue,Wed,Thu,Fri,Sat }中的一個元素,可用賦值運(yùn)算符將元素Sun賦給day1。枚舉變量day1的值可賦給同類枚舉變量day2。注意:
(1)不能用鍵盤通過"cin>>"向枚舉變量輸入元素值,例如:cin>>day1是錯誤的。因此,枚舉變量的值只能通過初始化或賦值運(yùn)算符輸入。
(2)可用"cout<<"輸出枚舉變量,但輸出的是元素對應(yīng)的序號值,而不是元素值。例如:cout<<day1; 用cout輸出day1中元素Sun對應(yīng)的序號值0,而不是元素Sun。
2.關(guān)系運(yùn)算
枚舉變量可與元素常量進(jìn)行關(guān)系比較運(yùn)算,同類枚舉變量之間也可以進(jìn)行關(guān)系比較運(yùn)算,但枚舉變量之間的關(guān)系運(yùn)算比較是對其序號值進(jìn)行的。例如:
day1=Sun; //day1中元素Sun的序號值為0
day2=Mon; //day2中元素Mon的序號值為1
if (day2>day1) day2=day1; //day2>day1的比較就是序號值關(guān)系式:1>0的比較
if (day1>Sat) da1=Sat; //day1>Sat的比較就是序號值關(guān)系式:0>6的比較
day2與day1的比較,實(shí)際上是其元素Mon與Sun序號值1與0的比較,由于1>0成立,所以day2>day1條件為真,day2=day1=Sun。同樣由于day1中元素Sun的序號值0小于Sat的序號值6,所以day1>Sat條件為假,day1的值不變。
【例8.1】先定義描述6種顏色的枚舉類型colors,然后再用該枚舉類型定義枚舉數(shù)組,任意輸入6個顏色號,轉(zhuǎn)換成對應(yīng)的顏色枚舉量后輸入到枚舉數(shù)組中,最后輸出枚舉數(shù)組中對應(yīng)的顏色。
# include <iostream.h>
# include <stdlib.h> //使用exit(0)函數(shù)時必須包含stdlib.h頭文件
enum colors //定義有6種顏色元素的枚舉類型colors
{ red, blue,green,black,white,yellow };
void main( void)
{ colors color[6]; //定義枚舉類型數(shù)組color[6]
int j,n;
cout<<"0:red,1:blue,2:green,3:black,4:white,5:yellow"<<endl;
cout<<" 請輸入6個顏色號:";
for (j=0;j<6;j++)
{ cin >> n; //輸入顏色號
if (n<0 || n>5 )
{ cout << "輸入顏色值出錯,請重新輸入!";
exit(0);
}
else
switch(n) //將顏色號轉(zhuǎn)換成顏色元素存入數(shù)組
{ case 0 : color[j]=red; break;
case 1 : color[j]=blue; break;
case 2 : color[j]=green ; break;
case 3 : color[j]=black; break;
case 4 : color[j]=white; break;
case 5 : color[j]=yellow; break;
}
}
for (j=0 ;j<6;j++) //循環(huán)6次,輸出數(shù)組元素對應(yīng)的顏色
{ switch (color[j])
{ case red : cout <<"red" ; break;
case blue: cout<<"blue" ; break;
case green : cout <<"green" ; break;
case black : cout<<"black" ; break;
case white : cout <<"white" ; break;
case yellow :cout <<"yellow" ; break;
}
cout<<'/t';
}
cout<<'/n';
}
程序執(zhí)行時,屏幕提示:
0:red,1:blue,2:green,3:black,4:white,5:yellow
請輸入6個顏色號:0 1 2 3 4 5
屏幕輸出:red blue green black white yellow
由于無法通過鍵盤直接向枚舉變量輸入枚舉元素值,所以程序中只能先輸入枚舉元素的序號值,然后用開關(guān)語句將序號值轉(zhuǎn)換為元素值,并將元素值賦給枚舉數(shù)組元素。同樣,由于用cout無法輸出枚舉數(shù)組中元素值,所以在輸出時,只能用開關(guān)語句判斷輸出哪一個元素,然后用cout<<"元素"方式輸出對應(yīng)的元素值。
【例8.2】定義一個描述三種顏色的枚舉類型{red、blue、green},輸出這三種顏色的全部排列結(jié)果。
解:這是三種顏色的全排列問題,用窮舉法即可輸出三種顏色的全部27種排列結(jié)果。
# include <iostream.h>
enum colors
{red , blue,green};
void show(colors color)
{ switch(color)
{ case red : cout<<"red";break;
case blue : cout<<"blue";break;
case green : cout<<"green";break;
}
cout<<'/t';
}
void main(void)
{ colors col1,col2,col3;
for(col1=red ;col1<=green;col1=colors(int (col1) +1))
for(col2=red ;col2<=green;col2=colors(int (col2) +1))
for(col3=red ;col3<=green;col3=colors(int (col3) +1))
{ show(col1);
show(col2);
show(col3);
cout<<'/n';
}
}
程序通過三重循環(huán)窮舉出三種顏色所有的組合。for循環(huán)語句中,用枚舉變量col1為循環(huán)變量,col1取值從red開始到green為止,循環(huán)變量的自加操作是通過表達(dá)式col1=colors(int (col1) +1) 來實(shí)現(xiàn)的,表達(dá)式中,先將col1轉(zhuǎn)換成整數(shù),然后加1,再轉(zhuǎn)換成colors類型的枚舉值賦給col1變量。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品一二区
|
国产在线精品一区二区三区
|
一级毛片免费
|
国产精品免费一区二区三区
|
亚洲成av人片在线观看无码
|
欧美一级久久
|
久久精品国产一区二区电影
|
欧美极品少妇xxxxⅹ免费视频
|
日韩中文字幕
|
中文字幕精品一区
|
国产免费又黄又爽又刺激蜜月al
|
亚洲字幕在线观看
|
国产午夜精品久久
|
亚洲一二三在线观看
|
www四虎影视
|
久久精品一级
|
日韩精品一区二区三区视频播放
|
日韩精品一区二区三区视频播放
|
欧美13videosex性极品
|
亚洲在线
|
在线观看av网站
|
欧美男人天堂
|
成年无码av片在线
|
久草.com
|
91国内产香蕉
|
黄色精品
|
一区二区精品
|
91伊人网
|
久久久久久国产一区二区三区
|
91视频国产一区
|
欧美另类视频在线
|
午夜免费小视频
|
国产中文区二幕区2012
|
日韩精品一区二区三区四区视频
|
日韩精品一区二区三区视频播放
|
一区二区三区日本
|
亚洲欧美日本国产
|
国产亚洲精品精品国产亚洲综合
|
国产a爽一区二区久久久
|
精品国产一区二区三区日日嗨
|
一区精品视频
|