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; }
运行结果:
七、课程总结
本次课程圆满结束,还需学生课下自主练习,以对枚举类型有更深的体会。