枚举类型教案设计

问题导入:Q:表示一周的七天能用什么数据类型表示?

A:int类型就可以,1234567就能表示一周了。

Q:这样输入8则虽是合法整数但显然不是一周内,这样没法通过数据类型判断是不是合法,我们应该用什么数据类型呢?

A:可以只用1到7吗?有这种数据类型吗?  c++是允许取某数据类型的子集作为新定义的数据类型

枚举类型:用户自定义的一种数据类型(与系统自定义好的——int ,float等相对)需声明时将变量的可取值在变量列表一一列出。

    声明形式:enum  枚举类型名  {变量值列表}

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT}

注:1.他是个整型的子集——实质  因此枚举值可以做关系运算   且声明时如果不定义值则会依次取默认值{0,1,2,3,4,5,6}

       2.但枚举元素要视为常量 除定义外不能进行赋值,而定义中从开始定义的一项依次加1 (定义SUN为1,则MON为2,不定义默认为SUN为0)

但作为一个常量,枚举元素可以给其他变量赋值。

       3.整数值要赋给枚举变量要进行强制转换,如果不在枚举值的范围内则强转失败。

 

例:体育比赛的结果又四种可能:WIN,LOSE,TIE,CANCEL编写程序输出这四种情况、

一共四种选择可以声明一个枚举类型的变量存放比赛的结果。

#include <iostream>
using namespace std;
enum GameResult {WIN,LOSE,TIE,CANCEL};
int main(){
  GameResult result;
  GameResult omit=CANCEL;    /*此时加不加enum都可以
  for (int count =WIN;count<=CANCEL;count++){
    result=GameResult(count);  /*对枚举元素赋值要先强转
    if(result==omit)
    count<<"The game was cancelled"<<endl;
    else{
    count<<"The game was palyed";
    if(result==WIN)  count<<"and we won!";
    if(result==LOSE)  count<<"and we lost.";
    count<<end; 
    }
  }
  return 0;
}