*声明:本文仅用于博主自己考前复习加深印象,文章内容借鉴老师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,有不理解或发现博主所写存在错误的地方,请在评论区留言,一起交流并对本文加以改正。