我喜欢宁宁宁

导航

C++语言程序化设计——第一次作业

C++语言程序化设计——第一次作业

枚举类型教学教案

一、课题

自定义数据类型——枚举类型enum

二、教学目的

通过实验教学加深学生对枚举类型的掌握及运用

三、课型

新授课、练习课

四、教学重点

枚举类型的认识及运用

五、教学过程

1、枚举类型概念引入

一场比赛只有胜、负、平局、比赛取消四种情况;一个袋子里只有红、黄、蓝、白、黑五种颜色的小球;一个星期只有七天······上述情况每种数据只有有限的几种情况,使用int、char来定义它们未尝不可,但是对数据的合法性检查却十分麻烦。我们为何不将变量可取得值一一列举出来,构成一个自定义数据类型——枚举类型,这样便能简便很多。

2、枚举类型声明形式

enum 枚举类型名 {变量值列表};

例如:

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

3、枚举类型应用说明

(1)对枚举元素按常量处理,不能对它们赋值。例如,下面的语句是非法的:

SUN= 0;    //SUN是枚举类型,此语句非法

(2)枚举元素具有默认值,依次为:0,1,2,···。
(3)也可在声明时另行定义枚举元素的值,如:

enum Weekday {SUN=7, MON=1, TUE, WED, THU, FRI, SAT};

定义SUN为7,MON为1,以后顺序加1,SAT为6.
(4)枚举值可以进行关系运算。
(5)枚举值可以直接赋值给整数型,整数值不能直接赋值给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。例如:

int main(){
    int i=1;
    enum Num {ONE=1, TWO, THR};
    i=TWO;//枚举值可以直接赋值给整数型
    cout<<"i="<<i<<endl;
    return 0;
}

运行结果为:

而程序:

int main(){
    int i=1;
    enum Num {ONE=1, TWO, THR};
    TWO=i;
    cout<<"TWO="<<TWO<<endl;
    return 0;
}

则会运行出错:

在下面的例题中将会对此进行深入体会。

4、例题分析

例: 设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序输出这四种情况。
分析: 由于比赛结果只有四种可能,所以可以声明一个枚举类型,用一个枚举类型的变量来存放比赛结果。
源程序:
//2-11.cpp
#include
using namespace std;

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

int main(){
    GameResult result;        //有声明变量时,可以不写关键字enum
    enum GameResult omit=CANCEL;      //也可以在类型名前写enum

    for(int count=WIN; count<=CANCEL; count++){     //隐含类型转换(自动类型转换)
	    result=GameResult(count);                   //显式类型转换(强制类型转换)
	if(result==omit)
		cout<<"The game was canceled"<<endl;
	else{
		cout<<"The game was played ";
		if(result==WIN)
			cout<<"and we won!";
		if(result==LOSE)
			cout<<"and we lost.";
		cout<<endl;
	}
}
return 0;
}

运行结果:

六、作业安排

P63页2-34取小球问题
解答:
#include
using namespace std;

enum Ball {red,yellow,blue,white,black};

int main()
{
    int count1,count2,count3,result=0;
    for(count1=red;count1<=black;count1++){
	for(count2=count1+1;count2<=black;count2++){
		for(count3=count2+1;count3<=black;count3++){
			result++;
			cout<<count1<<count2<<count3<<endl;
		}
	}
}
    cout<<"The result is "<<result<<endl;
    return 0;
}

运行结果:

七、课程总结

本次课程圆满结束,还需学生课下自主练习,以对枚举类型有更深的体会。

posted on 2019-09-15 11:33  我喜欢宁宁宁  阅读(333)  评论(0编辑  收藏  举报