枚举类型&一些经典题目

目录

说明

枚举类型--enum

[枚举类型应用说明]

具体举例如下:(遍历枚举类型的值) 

 题目(易)

【1】

【2】


说明

枚举是一种基本的数据类型,为了使数据更加的简洁易读

#define MON  0
#define TUE  1
#define WED  2
#define THU  3
#define FRI  4
#define SAT  5
#define SUN  6


enum DAY { mon, tue, wed, thu, fri, sat, sun };

对比上下两个代码,很显然枚举类型更加简洁 清晰。

枚举类型--enum

[枚举类型应用说明]

  • 对枚举元素按常量处理,不能对它们赋值。例如,不能写: sum=0;
  • 枚举元素具有默认值,它们依次为:0,1,2,...,也可以在声明时另行指定枚举元素的值,如: enum weekday { sun , mon , tue , wed , thu = 8 , fri , sat };(则对应元素的值分别为:0,1,2,3,8,9,10.)
  • 枚举值可以进行关系运算;
  • 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换

具体举例如下:(遍历枚举类型的值) 

#include<iostream>
using namespace std;//枚举类型
enum DAY { mon, tue, wed, thu, fri, sat, sun };
int main()
{
	int day;
	for (day = mon; day <= sun; day++)
		cout << "枚举类型:" << day<<" ";//注意加空格的写法
	return 0;
}

 输出结果如下图:

 另:声明枚举变量时可以不写关键字enum,也可以在类型名前写enum;

enum DAY { mon, tue, wed, thu, fri, sat, sun };
int main()
{
	DAY day;
    enum DAY days;//两种均可
}

 题目(易)

【1】

设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。

【分析】比赛结果只有四种可能,可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果,较容易表达。

#include<iostream>
using namespace std;
enum game_result{win,lost,tie,cancel};//声明枚举类型
int main()
{
	game_result result;//定义一个枚举变量用来存放比赛结果
	int count;
	for (count = win; count <= cancel; count++)
	{
		result = (game_result)count;//强制类型转换:枚举类型可赋值给int,但int不能赋值给枚举类型
		if (result == cancel)
			cout << "the game was cancelled";
		else
		{
			cout << "the game was played";
			if (result == win)
				cout << " and we won!";
			else
				if (result == lost)
					cout << " we were lost";
				else
					cout << " the result was tie";
			cout << "\n";       //cout<<endl;
		}
	}
	return 0;
}

 结果如下:

 【2】

口袋中有红、黄、蓝、白、黑5种颜色的球若干,每次从口袋中取出3个不同颜色的球,问有多少种取法 

【分析】

对于定义红黄蓝白黑五种颜色的球来说,枚举类型再合适不过了。

由于口袋中的球有五种颜色,若干个球,若想取出不同颜色的球,在数学问题中显而易见的排列组合问题——全排列,是有顺序的。只需要判断取出来的球颜色是否相同即可。

#include<iostream>
using namespace std;
enum colour{red,yellow,blue,white,black};
int main()
{
	int i, j, k;
	int n = 0;
	for (i = red; i <= black; i++)
	{
		for (j = red; j <= black; j++)
		{
			if (i != j)
			{
				for (k = red; k <= black; k++)
				{
					if (k != j && k != i)
						n++;
				}
			}
		}
	}
	cout << "total" << n;
	return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值