c++ 枚舉類型


枚舉類型 enum

一、枚舉類型的定義

枚舉類型(enumeration):是C++中的一種派生數據類型,它是由用戶定義的若干枚舉常量的集合。

Enum 枚舉類型名 {變量值列表};
  • enum:關鍵字,指明其后的標識符是一個枚舉類型的名字
  • 變量值列表:由枚舉常量構成,通常用逗號隔開

【解析】

如果一個變量只有幾種可能的值,可以定義為枚舉(enumeration)類型。所謂“枚舉”是指將變量的值一一列舉出來,變量的值只能在列舉出來的值的范圍內。聲明枚舉類型用enum開頭。

二、枚舉類型的應用說明

  • 對枚舉元素常按照常量處理,不能對他們賦值

Enum Weekday {SUM,MON,TUE,WED,THU,FRI,SAT};     //定義枚舉類型
SUM=0;   //SUM是枚舉類型,此語句非法
  • 枚舉元素具有默認值,依次為:0,1,2,3。。。
  • 聲明時可以另行定義枚舉元素的值

Enum Weekday {SUM=7,MON=1,TUE,WED,THU,FRI,SAT};  //后面從TUE依次為23456
  • 枚舉值可以進行關系運算
  • 整數值不能直接賦值給枚舉變量,如需將整數值給枚舉類型,需要進行強制轉換

例題【書上2-11】

【問題描述】

設某次體育比賽的結果有四種可能:WIN,LOSE,TIE,CANCEL,編寫程序輸出這四種情況

【分析】

比賽結果只有這四種,所以可以使用枚舉類型來存放比賽結果

【代碼】

#include<iostream>
using namespace std;

enum Game{WIN,LOSE,TIE,CANCEL};

int main() {
	Game gameResult,omit=CANCEL;

	for (int i = WIN; i <= CANCEL; i++) {     //隱含類型轉換
		gameResult = Game(i);              //顯式類型轉換
		if (gameResult == omit)
			cout << endl<<"the game was canceled." << endl;
		else {
			cout << "the game was played.     ";	
			if (gameResult == WIN) cout << "we won!!" << endl;
			if (gameResult == LOSE) cout << "we lost.." << endl;
		}
	}
	return 0;
}

RUNOOB 圖標


三、枚舉類型的應用

例題【書上2-34】

【問題描述】

口袋中有紅、黃、藍、白、黑 5種顏色的球若干,每次從口袋中拿出三個不同顏色,問有多少種取法。

【分析】

由於球只能是五種顏色之一,故可用枚舉類型表示球的顏色。設取出的球為i、j、k,根據題意,i、j、k分別可以有五種取值,且i≠j≠k。可以用窮舉法,逐個檢驗每一種可能的組合,從中找出符合要求的組合並輸出。

【代碼】

#include<iostream>  
using namespace std;

int print(int x) {        //借助函數輸出每種結果
	switch (x)
	{
		case 0:cout << "RED  "; break;
		case 1:cout << "YELLOW  "; break;
		case 2:cout << "BLUE  "; break;
		case 3:cout << "WHITE  "; break;
		case 4:cout << "BLACK  "; break;
	}
	return 0;
}

int main() {
	enum color { RED, YELLOW, BLUE, WHITE, BLACK };     //定義枚舉類型
	int i, j, k, n = 0;
	for (i = RED; i <= BLACK; i++)
		for (j = i + 1; j <= BLACK; j++)
			for (k = j + 1; k <= BLACK; k++) {
				n++;
				print(i);
				print(j);
				print(k);
				cout << endl;
			}
	cout << "共有" << n << "種";
	return 0;
}


免責聲明!

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



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