C语言 枚举类型

#include <stdio.h>

enum week { End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

void monday(void){
	puts("星期一");
}

void tuesday(void){
	puts("星期二");
}

void wednesday(void){
	puts("星期三");
}

void thursday(void){
	puts("星期四");
}

void friday(void){
	puts("星期五");
}

void saturday(void){
	puts("星期六");
}

void sunday(void){
	puts("星期天");
}

enum week select(void){
	int tmp;
	
	do {
		printf("0. 结束, 1. 星期一, 2. 星期二, 3. 星期三, 4. 星期四, 5. 星期五, 6. 星期六, 7. 星期天\n");
		puts("请选择:"); 
		scanf("%d", &tmp);
	}while (tmp < End || tmp > Sunday);
	return tmp;
}

int main(void){
	enum week selected;  // 声明 enum week 型 的变量 selected
	
	do{
		switch (selected = select()){
			case Monday :
				monday();
			  	break;
			case Tuesday :
				tuesday(); 
			 	break;
			case Wednesday :
			    wednesday(); 
				break;
			case Thursday :
			    thursday(); 
				break;
			case Friday :
			    friday(); 
				break;
			case Saturday :
			    saturday(); 
				break;
			case Sunday :
			    sunday(); 
				break;
		}
	}while (selected != End);
	
	return 0;
}

运行结果:
在这里插入图片描述

enum week { End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };

是枚举类型的声明,它表示了所有可用值的集合。其中,week 被称为枚举名。写在{}中的 End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 是枚举常量。

注:枚举名不是类型名。类型名称不是 week 型,而是 enum week 型。

如果在没有赋值给枚举常量赋值的情况下,枚举常量默认对应的值是从0开始按顺序为枚举常量定义了相应的整数值。实际上,这些值也能根据需要任意设置,只要在枚举常量的名称后面写上赋值运算符 “=” 和值就行了。


enum week { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, End };

通过赋值运算符 “ = ” 赋值的枚举常量,其值为给定值,没有给定值的枚举常量,其值为前一个枚举常量加1。

#include <stdio.h>

enum week { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, End };

void monday(void){
	puts("星期一");
}

void tuesday(void){
	puts("星期二");
}

void wednesday(void){
	puts("星期三");
}

void thursday(void){
	puts("星期四");
}

void friday(void){
	puts("星期五");
}

void saturday(void){
	puts("星期六");
}

void sunday(void){
	puts("星期天");
}

enum week select(void){
	int tmp;
	
	do {
		printf("1. 星期一, 2. 星期二, 3. 星期三, 4. 星期四, 5. 星期五, 6. 星期六, 7. 星期天, 8. 结束\n");
		puts("请选择:"); 
		scanf("%d", &tmp);
	}while (tmp < Monday || tmp > End);  // 将 End 在枚举类型末端,星期一 位于首端 
	return tmp;
}

int main(void){
	enum week selected;   // 声明 enum week 型 的变量 selected
	
	do{
		switch (selected = select()){
			case Monday :
				monday();
			  	break;
			case Tuesday :
				tuesday(); 
			 	break;
			case Wednesday :
			    wednesday(); 
				break;
			case Thursday :
			    thursday(); 
				break;
			case Friday :
			    friday(); 
				break;
			case Saturday :
			    saturday(); 
				break;
			case Sunday :
			    sunday(); 
				break;
		}
	}while (selected != End);
	
	return 0;
}

运行结果:
在这里插入图片描述


enum { MATGEMATICS, ADVANCED_MATHEMATICS = 0 };

程序中的枚举名可以省略,多个枚举常量也允许具有相同的值。

#include <stdio.h>

enum { MATGEMATICS, ADVANCED_MATHEMATICS = 0 };

void mathematics(void){
	puts("数学");
}

void advanced_mathematics(void){
	puts("高等数学");
}


int main(void){
	int tmp;
	
	puts("请选择:");
	scanf("%d", &tmp);
	
	switch (tmp){
			case MATGEMATICS :
				mathematics();
			  	break;
	}
	
	switch (tmp){
			case ADVANCED_MATHEMATICS :
				advanced_mathematics();
			  	break;
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值