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