C++语言程序设计基础——enum枚举类型用法



一.课程导入

在实际问题中我们会遇到一些数据只有有限的几种可能,虽然我们也可以用int等类型来表示他们,但是对数据的合法性检查却是很麻烦的事情。例如,如果用1到7来表示一个星期里面的7天,那么变量8便是不合理的。这时候我们便可以使用枚举来解决问题。



二.教学目标

了解枚举是如何使用的并且会自己应用



三.教学内容


枚举类型的声明形式


enum 枚举类型名{变量值列表}; 例如: enum weekday{sun,mon,tue,wed,thu,fri,sat};

枚举类型应用说明


1.默认情况下,设置第一个枚举量为0,下一个为1,以此类推。例如上述生命中sun为0而sat为7.


2.我们也可以在声明时自己定义枚举元素的值

例如: enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
这里面我们自己定义了sun,mon的值,mon后面的值以此类推加1,sat将为6.
3.枚举元素我们是当作常量处理的,我们是不可以对其赋值的 例如: sun=0;(这句话是非法的)

枚举类型的深入理解


1.enum语句只是定义数据类型, 没有创建任何变量,当以后创建这个数据类型的变量时,他们看起来就只是一个整数。

例如: weekday a;
这里面weekday是数据类型名称,a是定义的变量。 接下来我们还可以枚举常量来给他赋一个值。
例如: a=sun;

2.整数值不能直接赋值给枚举变量,如果需要将整数值赋值给枚举变量,应该进行强制类型转化

3.即使枚举类型中的值实际存储为整数,但也不能总是将整数值替换为符号名称。

例如: a=0;(这是不对的)
但是我们可以用整数值来测试枚举变量。
例如: if(a==sun)和if(a==0)这两个是等效的。

4.枚举列表中的mon,wed,sun等这些标识符的作用范围是全局的,不能再定义与他们名字相同的变量。



例题分析

某次体育比赛结果有四种可能:WIN,LOSE,TIE,CANCEL,编写程序顺序输出这四种情况(教材54页)

#include<iostream>
using namespace std;

enum GameResult{WIN,LOSE,TIE,CANCAL};

int main()
{
    GameResult result;
    enum GameResult omit=CANCEL;//应用枚举常量初始化

    for(int count=WIN;count<=CANCEL;count++)//把枚举类型的值赋值给整数,枚举和int型可以进行比较
    {
        result=GameResult(count);//强制类型转化
        if(result==omit)
        cout<<"The game was cancelled"<<endl;
        else
        {
            cout<<"The game was played"<<endl;
            if(result==WIN)
            cout<<"and we won"
            else(result==LOSE)
            cout<<"and we lost"
        }
    }
    return 0;
}


口袋中有红黄蓝白黑5种颜色的球若干个,每次从口袋中取出3个不同颜色的球,问有多少种取法?(教材63页2-34)

#include<iostream>
using namespace std;
enum colour{red,yellow,blue,white,black};//枚举

void printcolour(int i)
{
    switch(i)
    {
        case red:cout<<"红色;break;
        case yellow:cout<<"黄色;break;
        case blue:cout<<"蓝色;break;
        case white:cout<<"白色;break;
        case black:cout<<"黑色;break;
    }
}
int main()
{
    int cout=0,i=red,j=yellow,k=blue;
    for(i;i<=blue;i++)
    for(j;j<=white;j++)
    {
        if(i<j)
        for(k;k<=black;k++)
        if(i<k&&j<k)
        {
            cout++;
            printcolour(i);
            printcolour(j);
            printcolour(k);
        }
    }
    
}
return 0;
}
posted on 2019-09-15 12:40  咬一口云朵软绵绵  阅读(269)  评论(0编辑  收藏  举报