考前复习--枚举类型(C语言,含例题)

*声明:本文仅用于博主自己考前复习加深印象,文章内容借鉴老师PPT,请勿搬运用作其他用途。感谢!

目录

一 、枚举类型的定义

二、枚举变量

三、 枚举类型的使用

四、例题

五、结束语


一 、枚举类型的定义

1.定义: 

枚举是指将变量的值一一列举出来,变量只能列举出来的值的范围内取值。

2.一般形式:

enum 枚举名 { 枚举值列表 };

3.说明:

1、关键字enum是枚举类型的标志,“enum 枚举名”构成枚举类型。

2、枚举是一个集合,集合中的元素(成为枚举成员枚举常量) 是一些特定的标识符,元素之间用逗号隔开。

3、在枚举类型中,枚举成员是有值的,第一个枚举成员的默认值为0,后续成员的值依次递增

4、枚举成员是常量,不能对它们赋值。如“Mon=1;”是错误的。但在定义枚举类型时可以指定枚举成员的值。

5、同一个程序中不能定义同名的枚举类型不同的枚举类型中也不能存在同名的枚举成员

二、枚举变量

 (一)、定义形式:

1、先定义枚举类型,然后定义枚举变量;

       enum color{red,yellow,green,blue,black};

       enum color c1,c2;

2、定义枚举类型的同时定义枚举变量:

       enum color{red,yellow,green,blue,black}c1,c2;

3、直接定义枚举变量

       enum {red,yellow,green,blue,black}c1,c2;

  *这里的变量定义方式与结构体共用体变量定义方式一致

 (二)、注意

1、枚举变量的值只能为枚举类型中例举出来的枚举成员,如"c1=red”,则c1的值为0。

2、枚举成员不是字符常量或字符串常量,使用时不能加单引号或双引号,如“c1=“red”;”是错误

3、不能将一个数值直接复制给枚举变量,如“c1=3”是错误的。但是使用强制类型转换则可以进行赋值,如“c1=(enum color)3;”,其含义是将枚举类型中值为3的成员赋值给变量c1,相当于"c1=blue;"。

三、 枚举类型的使用

(一)、枚举类型数据的输入输出

  枚举类型的数据不能直接进行输入输出。

  1.输入时应先输入其序号,然后使用强制类型转换完成。

  2.输出时应先进行转换才能输出其对应的字符串。

(二)、枚举类型数据的关系运算

  同一种枚举类型的数据可以进行关系运算,比较试试对其序号进行比较。

四、例题

Q1: 从键盘输入一个整数,显示与该整数对应的枚举常量所表示的水果英文名称。

A1: 

#include<stdio.h>
enum fruits{watermelon,peach,strawberry,banana,pineapple,apple};
int main( )
{
	char fts[][20]={"watermelon","peach","strawberry","banana","pineapple","apple"};
	enum fruits x;
	int k;
	printf("intput k=(0-5):");
	scanf("%d",&k);
	x=(enum fruits)k;          //强制类型转换
	printf("%s\n",fts[x]);     //输出对应的水果英文名称 
	return 0; 
 } 

 

 

Q2: 从键盘输入一个整数,比较它和某个枚举成员(本题用peach做示范)的大小。

A2: 

#include<stdio.h>
enum fruits{watermelon,peach,strawberry,banana,pineapple,apple};
int main()
{
	enum fruits x;
	int k;
	printf("intput k=(0-5):");
	scanf("%d",&k);
	x=(enum fruits)k;
	if(x==peach)
	   printf("x=%d,peach=%d,x==peach \n",x,peach);
	   else if(x>peach)
	       printf("x=%d,peach=%d,x>peach ",x,peach);
	       else if(x<peach)
	       printf("x=%d,peach=%d,x<peach \n",x,peach);
	return 0;
}

 

 

Q3:某餐厅用西瓜、桃子、草莓、香蕉、菠萝、苹果六种水果制作水果拼盘,要求每个拼盘中有四种不同水果。编写程序计算可以制作出多少种这样的水果拼盘。

A3: 

#include<stdio.h>
enum fruits{watermelon,peach,strawberry,banana,pineapple,apple};
int main()
{
	char fts[][20]={"西瓜","桃子","草莓","香蕉","菠萝","苹果"};
	enum fruits x,y,z,p;
	 int k=0;
	 for(x=watermelon;x<=apple;x++)
	   for(y=x+1;y<=apple;y++)
	     for(z=y+1;z<=apple;z++)
	        for(p=z+1;p<=apple;p++)
	        printf("%d: %s %s %s %s\n",++k,fts[x],fts[y],fts[z],fts[p]);
	printf("可以制作出%d种水果拼盘",k);
	return 0;
}

 

五、结束语

    本文创作的最初目的是用于考试复习,草稿箱陆续存了有几次,最终也没能在考前完结。幸好关于这方面的题目没有多少,考后也能在深夜完成此次文章的编辑。

    文章内容大多来自老师制作的PPT,有不理解或发现博主所写存在错误的地方,请在评论区留言,一起交流并对本文加以改正。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值